@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,1987 @@
1
+ {
2
+ "components": {
3
+ "schemas": {
4
+ "AccountAuthorityV1": {
5
+ "additionalProperties": false,
6
+ "properties": {
7
+ "householdId": {
8
+ "maxLength": 200,
9
+ "minLength": 1,
10
+ "type": "string"
11
+ },
12
+ "mode": {
13
+ "const": "account"
14
+ },
15
+ "status": {
16
+ "const": "authoritative"
17
+ },
18
+ "storeId": {
19
+ "maxLength": 200,
20
+ "minLength": 1,
21
+ "type": "string"
22
+ }
23
+ },
24
+ "required": [
25
+ "mode",
26
+ "storeId",
27
+ "householdId",
28
+ "status"
29
+ ],
30
+ "type": "object"
31
+ },
32
+ "CursorExpiredErrorDataV1": {
33
+ "additionalProperties": false,
34
+ "properties": {
35
+ "recovery": {
36
+ "const": "read_snapshot"
37
+ }
38
+ },
39
+ "required": [
40
+ "recovery"
41
+ ],
42
+ "type": "object"
43
+ },
44
+ "EmptyErrorDataV1": {
45
+ "additionalProperties": false,
46
+ "maxProperties": 0,
47
+ "properties": {},
48
+ "required": [],
49
+ "type": "object"
50
+ },
51
+ "ErrorEnvelope400V1": {
52
+ "additionalProperties": false,
53
+ "properties": {
54
+ "code": {
55
+ "enum": [
56
+ "INVALID_HTTP_FRAMING",
57
+ "INVALID_JSON",
58
+ "VALIDATION_ERROR"
59
+ ]
60
+ },
61
+ "error": {
62
+ "additionalProperties": false,
63
+ "properties": {
64
+ "data": {
65
+ "$ref": "#/components/schemas/EmptyErrorDataV1"
66
+ },
67
+ "message": {
68
+ "maxLength": 500,
69
+ "minLength": 1,
70
+ "type": "string"
71
+ },
72
+ "requestId": {
73
+ "maxLength": 200,
74
+ "minLength": 1,
75
+ "type": "string"
76
+ }
77
+ },
78
+ "required": [
79
+ "message",
80
+ "data"
81
+ ],
82
+ "type": "object"
83
+ },
84
+ "kind": {
85
+ "const": "financial_workspace_error.v1"
86
+ },
87
+ "status": {
88
+ "const": "error"
89
+ },
90
+ "success": {
91
+ "const": false
92
+ }
93
+ },
94
+ "required": [
95
+ "kind",
96
+ "code",
97
+ "success",
98
+ "status",
99
+ "error"
100
+ ],
101
+ "type": "object"
102
+ },
103
+ "ErrorEnvelope401V1": {
104
+ "additionalProperties": false,
105
+ "properties": {
106
+ "code": {
107
+ "enum": [
108
+ "AUTH_REQUIRED"
109
+ ]
110
+ },
111
+ "error": {
112
+ "additionalProperties": false,
113
+ "properties": {
114
+ "data": {
115
+ "$ref": "#/components/schemas/EmptyErrorDataV1"
116
+ },
117
+ "message": {
118
+ "maxLength": 500,
119
+ "minLength": 1,
120
+ "type": "string"
121
+ },
122
+ "requestId": {
123
+ "maxLength": 200,
124
+ "minLength": 1,
125
+ "type": "string"
126
+ }
127
+ },
128
+ "required": [
129
+ "message",
130
+ "data"
131
+ ],
132
+ "type": "object"
133
+ },
134
+ "kind": {
135
+ "const": "financial_workspace_error.v1"
136
+ },
137
+ "status": {
138
+ "const": "error"
139
+ },
140
+ "success": {
141
+ "const": false
142
+ }
143
+ },
144
+ "required": [
145
+ "kind",
146
+ "code",
147
+ "success",
148
+ "status",
149
+ "error"
150
+ ],
151
+ "type": "object"
152
+ },
153
+ "ErrorEnvelope403V1": {
154
+ "additionalProperties": false,
155
+ "properties": {
156
+ "code": {
157
+ "enum": [
158
+ "ACCOUNT_SCOPE_REQUIRED",
159
+ "CSRF_VALIDATION_FAILED"
160
+ ]
161
+ },
162
+ "error": {
163
+ "additionalProperties": false,
164
+ "properties": {
165
+ "data": {
166
+ "$ref": "#/components/schemas/EmptyErrorDataV1"
167
+ },
168
+ "message": {
169
+ "maxLength": 500,
170
+ "minLength": 1,
171
+ "type": "string"
172
+ },
173
+ "requestId": {
174
+ "maxLength": 200,
175
+ "minLength": 1,
176
+ "type": "string"
177
+ }
178
+ },
179
+ "required": [
180
+ "message",
181
+ "data"
182
+ ],
183
+ "type": "object"
184
+ },
185
+ "kind": {
186
+ "const": "financial_workspace_error.v1"
187
+ },
188
+ "status": {
189
+ "const": "error"
190
+ },
191
+ "success": {
192
+ "const": false
193
+ }
194
+ },
195
+ "required": [
196
+ "kind",
197
+ "code",
198
+ "success",
199
+ "status",
200
+ "error"
201
+ ],
202
+ "type": "object"
203
+ },
204
+ "ErrorEnvelope404V1": {
205
+ "additionalProperties": false,
206
+ "properties": {
207
+ "code": {
208
+ "enum": [
209
+ "WORKSPACE_NOT_INITIALIZED"
210
+ ]
211
+ },
212
+ "error": {
213
+ "additionalProperties": false,
214
+ "properties": {
215
+ "data": {
216
+ "$ref": "#/components/schemas/EmptyErrorDataV1"
217
+ },
218
+ "message": {
219
+ "maxLength": 500,
220
+ "minLength": 1,
221
+ "type": "string"
222
+ },
223
+ "requestId": {
224
+ "maxLength": 200,
225
+ "minLength": 1,
226
+ "type": "string"
227
+ }
228
+ },
229
+ "required": [
230
+ "message",
231
+ "data"
232
+ ],
233
+ "type": "object"
234
+ },
235
+ "kind": {
236
+ "const": "financial_workspace_error.v1"
237
+ },
238
+ "status": {
239
+ "const": "error"
240
+ },
241
+ "success": {
242
+ "const": false
243
+ }
244
+ },
245
+ "required": [
246
+ "kind",
247
+ "code",
248
+ "success",
249
+ "status",
250
+ "error"
251
+ ],
252
+ "type": "object"
253
+ },
254
+ "ErrorEnvelope409V1": {
255
+ "oneOf": [
256
+ {
257
+ "additionalProperties": false,
258
+ "properties": {
259
+ "code": {
260
+ "enum": [
261
+ "WORKSPACE_ALREADY_INITIALIZED",
262
+ "WORKSPACE_AUTHORITY_MISMATCH",
263
+ "IDEMPOTENCY_CONFLICT",
264
+ "PROTECTED_FACT_CHANGE_REQUIRES_PREVIEW"
265
+ ]
266
+ },
267
+ "error": {
268
+ "additionalProperties": false,
269
+ "properties": {
270
+ "data": {
271
+ "$ref": "#/components/schemas/EmptyErrorDataV1"
272
+ },
273
+ "message": {
274
+ "maxLength": 500,
275
+ "minLength": 1,
276
+ "type": "string"
277
+ },
278
+ "requestId": {
279
+ "maxLength": 200,
280
+ "minLength": 1,
281
+ "type": "string"
282
+ }
283
+ },
284
+ "required": [
285
+ "message",
286
+ "data"
287
+ ],
288
+ "type": "object"
289
+ },
290
+ "kind": {
291
+ "const": "financial_workspace_error.v1"
292
+ },
293
+ "status": {
294
+ "const": "error"
295
+ },
296
+ "success": {
297
+ "const": false
298
+ }
299
+ },
300
+ "required": [
301
+ "kind",
302
+ "code",
303
+ "success",
304
+ "status",
305
+ "error"
306
+ ],
307
+ "type": "object"
308
+ },
309
+ {
310
+ "additionalProperties": false,
311
+ "properties": {
312
+ "code": {
313
+ "enum": [
314
+ "VERSION_CONFLICT"
315
+ ]
316
+ },
317
+ "error": {
318
+ "additionalProperties": false,
319
+ "properties": {
320
+ "data": {
321
+ "$ref": "#/components/schemas/VersionConflictErrorDataV1"
322
+ },
323
+ "message": {
324
+ "maxLength": 500,
325
+ "minLength": 1,
326
+ "type": "string"
327
+ },
328
+ "requestId": {
329
+ "maxLength": 200,
330
+ "minLength": 1,
331
+ "type": "string"
332
+ }
333
+ },
334
+ "required": [
335
+ "message",
336
+ "data"
337
+ ],
338
+ "type": "object"
339
+ },
340
+ "kind": {
341
+ "const": "financial_workspace_error.v1"
342
+ },
343
+ "status": {
344
+ "const": "error"
345
+ },
346
+ "success": {
347
+ "const": false
348
+ }
349
+ },
350
+ "required": [
351
+ "kind",
352
+ "code",
353
+ "success",
354
+ "status",
355
+ "error"
356
+ ],
357
+ "type": "object"
358
+ }
359
+ ]
360
+ },
361
+ "ErrorEnvelope410V1": {
362
+ "additionalProperties": false,
363
+ "properties": {
364
+ "code": {
365
+ "enum": [
366
+ "CURSOR_EXPIRED"
367
+ ]
368
+ },
369
+ "error": {
370
+ "additionalProperties": false,
371
+ "properties": {
372
+ "data": {
373
+ "$ref": "#/components/schemas/CursorExpiredErrorDataV1"
374
+ },
375
+ "message": {
376
+ "maxLength": 500,
377
+ "minLength": 1,
378
+ "type": "string"
379
+ },
380
+ "requestId": {
381
+ "maxLength": 200,
382
+ "minLength": 1,
383
+ "type": "string"
384
+ }
385
+ },
386
+ "required": [
387
+ "message",
388
+ "data"
389
+ ],
390
+ "type": "object"
391
+ },
392
+ "kind": {
393
+ "const": "financial_workspace_error.v1"
394
+ },
395
+ "status": {
396
+ "const": "error"
397
+ },
398
+ "success": {
399
+ "const": false
400
+ }
401
+ },
402
+ "required": [
403
+ "kind",
404
+ "code",
405
+ "success",
406
+ "status",
407
+ "error"
408
+ ],
409
+ "type": "object"
410
+ },
411
+ "ErrorEnvelope413V1": {
412
+ "additionalProperties": false,
413
+ "properties": {
414
+ "code": {
415
+ "enum": [
416
+ "PAYLOAD_TOO_LARGE"
417
+ ]
418
+ },
419
+ "error": {
420
+ "additionalProperties": false,
421
+ "properties": {
422
+ "data": {
423
+ "$ref": "#/components/schemas/EmptyErrorDataV1"
424
+ },
425
+ "message": {
426
+ "maxLength": 500,
427
+ "minLength": 1,
428
+ "type": "string"
429
+ },
430
+ "requestId": {
431
+ "maxLength": 200,
432
+ "minLength": 1,
433
+ "type": "string"
434
+ }
435
+ },
436
+ "required": [
437
+ "message",
438
+ "data"
439
+ ],
440
+ "type": "object"
441
+ },
442
+ "kind": {
443
+ "const": "financial_workspace_error.v1"
444
+ },
445
+ "status": {
446
+ "const": "error"
447
+ },
448
+ "success": {
449
+ "const": false
450
+ }
451
+ },
452
+ "required": [
453
+ "kind",
454
+ "code",
455
+ "success",
456
+ "status",
457
+ "error"
458
+ ],
459
+ "type": "object"
460
+ },
461
+ "ErrorEnvelope415V1": {
462
+ "additionalProperties": false,
463
+ "properties": {
464
+ "code": {
465
+ "enum": [
466
+ "UNSUPPORTED_MEDIA_TYPE"
467
+ ]
468
+ },
469
+ "error": {
470
+ "additionalProperties": false,
471
+ "properties": {
472
+ "data": {
473
+ "$ref": "#/components/schemas/EmptyErrorDataV1"
474
+ },
475
+ "message": {
476
+ "maxLength": 500,
477
+ "minLength": 1,
478
+ "type": "string"
479
+ },
480
+ "requestId": {
481
+ "maxLength": 200,
482
+ "minLength": 1,
483
+ "type": "string"
484
+ }
485
+ },
486
+ "required": [
487
+ "message",
488
+ "data"
489
+ ],
490
+ "type": "object"
491
+ },
492
+ "kind": {
493
+ "const": "financial_workspace_error.v1"
494
+ },
495
+ "status": {
496
+ "const": "error"
497
+ },
498
+ "success": {
499
+ "const": false
500
+ }
501
+ },
502
+ "required": [
503
+ "kind",
504
+ "code",
505
+ "success",
506
+ "status",
507
+ "error"
508
+ ],
509
+ "type": "object"
510
+ },
511
+ "ErrorEnvelope503V1": {
512
+ "oneOf": [
513
+ {
514
+ "additionalProperties": false,
515
+ "properties": {
516
+ "code": {
517
+ "enum": [
518
+ "TRANSACTION_RETRYABLE"
519
+ ]
520
+ },
521
+ "error": {
522
+ "additionalProperties": false,
523
+ "properties": {
524
+ "data": {
525
+ "$ref": "#/components/schemas/TransactionRetryableErrorDataV1"
526
+ },
527
+ "message": {
528
+ "maxLength": 500,
529
+ "minLength": 1,
530
+ "type": "string"
531
+ },
532
+ "requestId": {
533
+ "maxLength": 200,
534
+ "minLength": 1,
535
+ "type": "string"
536
+ }
537
+ },
538
+ "required": [
539
+ "message",
540
+ "data"
541
+ ],
542
+ "type": "object"
543
+ },
544
+ "kind": {
545
+ "const": "financial_workspace_error.v1"
546
+ },
547
+ "status": {
548
+ "const": "error"
549
+ },
550
+ "success": {
551
+ "const": false
552
+ }
553
+ },
554
+ "required": [
555
+ "kind",
556
+ "code",
557
+ "success",
558
+ "status",
559
+ "error"
560
+ ],
561
+ "type": "object"
562
+ },
563
+ {
564
+ "additionalProperties": false,
565
+ "properties": {
566
+ "code": {
567
+ "enum": [
568
+ "REMOTE_UNAVAILABLE"
569
+ ]
570
+ },
571
+ "error": {
572
+ "additionalProperties": false,
573
+ "properties": {
574
+ "data": {
575
+ "$ref": "#/components/schemas/EmptyErrorDataV1"
576
+ },
577
+ "message": {
578
+ "maxLength": 500,
579
+ "minLength": 1,
580
+ "type": "string"
581
+ },
582
+ "requestId": {
583
+ "maxLength": 200,
584
+ "minLength": 1,
585
+ "type": "string"
586
+ }
587
+ },
588
+ "required": [
589
+ "message",
590
+ "data"
591
+ ],
592
+ "type": "object"
593
+ },
594
+ "kind": {
595
+ "const": "financial_workspace_error.v1"
596
+ },
597
+ "status": {
598
+ "const": "error"
599
+ },
600
+ "success": {
601
+ "const": false
602
+ }
603
+ },
604
+ "required": [
605
+ "kind",
606
+ "code",
607
+ "success",
608
+ "status",
609
+ "error"
610
+ ],
611
+ "type": "object"
612
+ }
613
+ ]
614
+ },
615
+ "ErrorEnvelopeV1": {
616
+ "oneOf": [
617
+ {
618
+ "$ref": "#/components/schemas/ErrorEnvelope400V1"
619
+ },
620
+ {
621
+ "$ref": "#/components/schemas/ErrorEnvelope401V1"
622
+ },
623
+ {
624
+ "$ref": "#/components/schemas/ErrorEnvelope403V1"
625
+ },
626
+ {
627
+ "$ref": "#/components/schemas/ErrorEnvelope404V1"
628
+ },
629
+ {
630
+ "$ref": "#/components/schemas/ErrorEnvelope409V1"
631
+ },
632
+ {
633
+ "$ref": "#/components/schemas/ErrorEnvelope410V1"
634
+ },
635
+ {
636
+ "$ref": "#/components/schemas/ErrorEnvelope413V1"
637
+ },
638
+ {
639
+ "$ref": "#/components/schemas/ErrorEnvelope415V1"
640
+ },
641
+ {
642
+ "$ref": "#/components/schemas/ErrorEnvelope503V1"
643
+ }
644
+ ]
645
+ },
646
+ "FinancialFactProjectionV1": {
647
+ "additionalProperties": false,
648
+ "properties": {
649
+ "asOf": {
650
+ "format": "date-time",
651
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$",
652
+ "type": "string"
653
+ },
654
+ "factId": {
655
+ "maxLength": 200,
656
+ "minLength": 1,
657
+ "type": "string"
658
+ },
659
+ "field": {
660
+ "enum": [
661
+ "household.total_assets",
662
+ "household.long_term_allocatable_assets",
663
+ "household.spending.last_12_months",
664
+ "household.spending.last_12_months.necessary",
665
+ "household.spending.last_12_months.discretionary",
666
+ "household.monthly_contribution",
667
+ "household.liquid_assets",
668
+ "household.investments.total",
669
+ "household.total_debt"
670
+ ],
671
+ "type": "string"
672
+ },
673
+ "kind": {
674
+ "const": "financial_fact_projection.v1"
675
+ },
676
+ "recordedAt": {
677
+ "format": "date-time",
678
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$",
679
+ "type": "string"
680
+ },
681
+ "recordedVersion": {
682
+ "maximum": 9007199254740991,
683
+ "minimum": 0,
684
+ "type": "integer"
685
+ },
686
+ "status": {
687
+ "enum": [
688
+ "confirmed",
689
+ "estimated"
690
+ ]
691
+ },
692
+ "value": {
693
+ "$ref": "#/components/schemas/FinancialTypedValueV1"
694
+ }
695
+ },
696
+ "required": [
697
+ "kind",
698
+ "factId",
699
+ "field",
700
+ "value",
701
+ "status",
702
+ "asOf",
703
+ "recordedAt",
704
+ "recordedVersion"
705
+ ],
706
+ "type": "object"
707
+ },
708
+ "FinancialTypedValueInputV1": {
709
+ "additionalProperties": false,
710
+ "properties": {
711
+ "amount": {
712
+ "format": "choosefire-money-v1",
713
+ "type": "string"
714
+ },
715
+ "currency": {
716
+ "maxLength": 32,
717
+ "minLength": 3,
718
+ "pattern": "^\\s*[A-Za-z]{3}\\s*$",
719
+ "type": "string"
720
+ },
721
+ "kind": {
722
+ "const": "money.v1"
723
+ }
724
+ },
725
+ "required": [
726
+ "kind",
727
+ "amount",
728
+ "currency"
729
+ ],
730
+ "type": "object"
731
+ },
732
+ "FinancialTypedValueV1": {
733
+ "additionalProperties": false,
734
+ "properties": {
735
+ "amount": {
736
+ "format": "choosefire-money-v1",
737
+ "type": "string"
738
+ },
739
+ "currency": {
740
+ "pattern": "^[A-Z]{3}$",
741
+ "type": "string"
742
+ },
743
+ "kind": {
744
+ "const": "money.v1"
745
+ }
746
+ },
747
+ "required": [
748
+ "kind",
749
+ "amount",
750
+ "currency"
751
+ ],
752
+ "type": "object"
753
+ },
754
+ "FinancialWorkspaceActivityPageV1": {
755
+ "additionalProperties": false,
756
+ "properties": {
757
+ "authority": {
758
+ "$ref": "#/components/schemas/AccountAuthorityV1"
759
+ },
760
+ "contractVersion": {
761
+ "const": 1
762
+ },
763
+ "hasMore": {
764
+ "type": "boolean"
765
+ },
766
+ "items": {
767
+ "items": {
768
+ "$ref": "#/components/schemas/OperationProjectionV1"
769
+ },
770
+ "maxItems": 100,
771
+ "type": "array"
772
+ },
773
+ "kind": {
774
+ "const": "financial_workspace_activity_page.v1"
775
+ },
776
+ "nextCursor": {
777
+ "maxLength": 2048,
778
+ "minLength": 1,
779
+ "type": "string"
780
+ },
781
+ "projectionVersion": {
782
+ "const": 1
783
+ },
784
+ "throughVersion": {
785
+ "maximum": 9007199254740991,
786
+ "minimum": 0,
787
+ "type": "integer"
788
+ }
789
+ },
790
+ "required": [
791
+ "kind",
792
+ "authority",
793
+ "contractVersion",
794
+ "projectionVersion",
795
+ "throughVersion",
796
+ "items",
797
+ "nextCursor",
798
+ "hasMore"
799
+ ],
800
+ "type": "object"
801
+ },
802
+ "FinancialWorkspaceActivityQueryV1": {
803
+ "additionalProperties": false,
804
+ "properties": {
805
+ "cursor": {
806
+ "maxLength": 2048,
807
+ "minLength": 1,
808
+ "type": "string"
809
+ },
810
+ "limit": {
811
+ "maximum": 100,
812
+ "minimum": 1,
813
+ "type": "integer"
814
+ }
815
+ },
816
+ "required": [
817
+ "limit"
818
+ ],
819
+ "type": "object"
820
+ },
821
+ "FinancialWorkspaceCapabilitiesV1": {
822
+ "additionalProperties": false,
823
+ "properties": {
824
+ "kind": {
825
+ "const": "financial_workspace_capabilities.v1"
826
+ },
827
+ "protectedChange": {
828
+ "const": "unavailable"
829
+ },
830
+ "readable": {
831
+ "items": false,
832
+ "maxItems": 3,
833
+ "minItems": 3,
834
+ "prefixItems": [
835
+ {
836
+ "const": "snapshot"
837
+ },
838
+ {
839
+ "const": "summary"
840
+ },
841
+ {
842
+ "const": "activity"
843
+ }
844
+ ],
845
+ "type": "array"
846
+ },
847
+ "writable": {
848
+ "items": false,
849
+ "maxItems": 1,
850
+ "minItems": 1,
851
+ "prefixItems": [
852
+ {
853
+ "const": "fact.record"
854
+ }
855
+ ],
856
+ "type": "array"
857
+ }
858
+ },
859
+ "required": [
860
+ "kind",
861
+ "readable",
862
+ "writable",
863
+ "protectedChange"
864
+ ],
865
+ "type": "object"
866
+ },
867
+ "FinancialWorkspaceCommandReceiptV1": {
868
+ "additionalProperties": false,
869
+ "properties": {
870
+ "authority": {
871
+ "$ref": "#/components/schemas/AccountAuthorityV1"
872
+ },
873
+ "baseVersion": {
874
+ "maximum": 9007199254740991,
875
+ "minimum": 0,
876
+ "type": "integer"
877
+ },
878
+ "committedAt": {
879
+ "format": "date-time",
880
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$",
881
+ "type": "string"
882
+ },
883
+ "cursor": {
884
+ "maxLength": 2048,
885
+ "minLength": 1,
886
+ "type": "string"
887
+ },
888
+ "kind": {
889
+ "const": "financial_workspace_command_receipt.v1"
890
+ },
891
+ "operation": {
892
+ "$ref": "#/components/schemas/OperationProjectionV1"
893
+ },
894
+ "replayed": {
895
+ "type": "boolean"
896
+ },
897
+ "resultVersion": {
898
+ "maximum": 9007199254740991,
899
+ "minimum": 0,
900
+ "type": "integer"
901
+ }
902
+ },
903
+ "required": [
904
+ "kind",
905
+ "authority",
906
+ "operation",
907
+ "baseVersion",
908
+ "resultVersion",
909
+ "replayed",
910
+ "cursor",
911
+ "committedAt"
912
+ ],
913
+ "type": "object"
914
+ },
915
+ "FinancialWorkspaceEmptyRequestV1": {
916
+ "additionalProperties": false,
917
+ "properties": {},
918
+ "required": [],
919
+ "type": "object"
920
+ },
921
+ "FinancialWorkspaceFactRecordCommandV1": {
922
+ "additionalProperties": false,
923
+ "properties": {
924
+ "asOf": {
925
+ "format": "date-time",
926
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,3})?(?:Z|[+-]\\d{2}:\\d{2})$",
927
+ "type": "string"
928
+ },
929
+ "expectedVersion": {
930
+ "maximum": 9007199254740991,
931
+ "minimum": 0,
932
+ "type": "integer"
933
+ },
934
+ "field": {
935
+ "enum": [
936
+ "household.total_assets",
937
+ "household.long_term_allocatable_assets",
938
+ "household.spending.last_12_months",
939
+ "household.spending.last_12_months.necessary",
940
+ "household.spending.last_12_months.discretionary",
941
+ "household.monthly_contribution",
942
+ "household.liquid_assets",
943
+ "household.investments.total",
944
+ "household.total_debt"
945
+ ],
946
+ "type": "string"
947
+ },
948
+ "idempotencyKey": {
949
+ "maxLength": 200,
950
+ "minLength": 1,
951
+ "type": "string"
952
+ },
953
+ "kind": {
954
+ "const": "financial_workspace_fact_record_command.v1"
955
+ },
956
+ "status": {
957
+ "enum": [
958
+ "confirmed",
959
+ "estimated"
960
+ ]
961
+ },
962
+ "value": {
963
+ "$ref": "#/components/schemas/FinancialTypedValueInputV1"
964
+ }
965
+ },
966
+ "required": [
967
+ "kind",
968
+ "expectedVersion",
969
+ "idempotencyKey",
970
+ "field",
971
+ "value"
972
+ ],
973
+ "type": "object"
974
+ },
975
+ "FinancialWorkspaceFactRefV1": {
976
+ "additionalProperties": false,
977
+ "properties": {
978
+ "factId": {
979
+ "maxLength": 200,
980
+ "minLength": 1,
981
+ "type": "string"
982
+ },
983
+ "kind": {
984
+ "const": "financial_workspace_fact_ref.v1"
985
+ }
986
+ },
987
+ "required": [
988
+ "kind",
989
+ "factId"
990
+ ],
991
+ "type": "object"
992
+ },
993
+ "FinancialWorkspaceSnapshotV1": {
994
+ "additionalProperties": false,
995
+ "properties": {
996
+ "authority": {
997
+ "$ref": "#/components/schemas/AccountAuthorityV1"
998
+ },
999
+ "capabilities": {
1000
+ "$ref": "#/components/schemas/FinancialWorkspaceCapabilitiesV1"
1001
+ },
1002
+ "contractVersion": {
1003
+ "const": 1
1004
+ },
1005
+ "currentFacts": {
1006
+ "additionalProperties": false,
1007
+ "properties": {
1008
+ "coverage": {
1009
+ "$ref": "#/components/schemas/ProjectionCoverageV1"
1010
+ },
1011
+ "items": {
1012
+ "items": {
1013
+ "$ref": "#/components/schemas/FinancialFactProjectionV1"
1014
+ },
1015
+ "maxItems": 9,
1016
+ "type": "array"
1017
+ }
1018
+ },
1019
+ "required": [
1020
+ "items",
1021
+ "coverage"
1022
+ ],
1023
+ "type": "object"
1024
+ },
1025
+ "cursor": {
1026
+ "maxLength": 2048,
1027
+ "minLength": 1,
1028
+ "type": "string"
1029
+ },
1030
+ "kind": {
1031
+ "const": "financial_workspace_snapshot.v1"
1032
+ },
1033
+ "projectionVersion": {
1034
+ "const": 1
1035
+ },
1036
+ "updatedAt": {
1037
+ "format": "date-time",
1038
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$",
1039
+ "type": "string"
1040
+ },
1041
+ "version": {
1042
+ "maximum": 9007199254740991,
1043
+ "minimum": 0,
1044
+ "type": "integer"
1045
+ }
1046
+ },
1047
+ "required": [
1048
+ "kind",
1049
+ "authority",
1050
+ "contractVersion",
1051
+ "projectionVersion",
1052
+ "version",
1053
+ "updatedAt",
1054
+ "cursor",
1055
+ "capabilities",
1056
+ "currentFacts"
1057
+ ],
1058
+ "type": "object"
1059
+ },
1060
+ "FinancialWorkspaceSummaryV1": {
1061
+ "additionalProperties": false,
1062
+ "properties": {
1063
+ "authority": {
1064
+ "$ref": "#/components/schemas/AccountAuthorityV1"
1065
+ },
1066
+ "capabilities": {
1067
+ "$ref": "#/components/schemas/FinancialWorkspaceCapabilitiesV1"
1068
+ },
1069
+ "contractVersion": {
1070
+ "const": 1
1071
+ },
1072
+ "currentFacts": {
1073
+ "$ref": "#/components/schemas/ProjectionCoverageV1"
1074
+ },
1075
+ "cursor": {
1076
+ "maxLength": 2048,
1077
+ "minLength": 1,
1078
+ "type": "string"
1079
+ },
1080
+ "kind": {
1081
+ "const": "financial_workspace_summary.v1"
1082
+ },
1083
+ "projectionVersion": {
1084
+ "const": 1
1085
+ },
1086
+ "updatedAt": {
1087
+ "format": "date-time",
1088
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$",
1089
+ "type": "string"
1090
+ },
1091
+ "version": {
1092
+ "maximum": 9007199254740991,
1093
+ "minimum": 0,
1094
+ "type": "integer"
1095
+ }
1096
+ },
1097
+ "required": [
1098
+ "kind",
1099
+ "authority",
1100
+ "contractVersion",
1101
+ "projectionVersion",
1102
+ "version",
1103
+ "updatedAt",
1104
+ "cursor",
1105
+ "capabilities",
1106
+ "currentFacts"
1107
+ ],
1108
+ "type": "object"
1109
+ },
1110
+ "FinancialWorkspaceWorkspaceRefV1": {
1111
+ "additionalProperties": false,
1112
+ "properties": {
1113
+ "kind": {
1114
+ "const": "financial_workspace_workspace_ref.v1"
1115
+ },
1116
+ "storeId": {
1117
+ "maxLength": 200,
1118
+ "minLength": 1,
1119
+ "type": "string"
1120
+ }
1121
+ },
1122
+ "required": [
1123
+ "kind",
1124
+ "storeId"
1125
+ ],
1126
+ "type": "object"
1127
+ },
1128
+ "InitializeFinancialWorkspaceCommandV1": {
1129
+ "additionalProperties": false,
1130
+ "properties": {
1131
+ "idempotencyKey": {
1132
+ "maxLength": 200,
1133
+ "minLength": 1,
1134
+ "type": "string"
1135
+ },
1136
+ "kind": {
1137
+ "const": "financial_workspace_initialize_command.v1"
1138
+ }
1139
+ },
1140
+ "required": [
1141
+ "kind",
1142
+ "idempotencyKey"
1143
+ ],
1144
+ "type": "object"
1145
+ },
1146
+ "NormalizedFinancialWorkspaceFactRecordCommandV1": {
1147
+ "additionalProperties": false,
1148
+ "properties": {
1149
+ "asOf": {
1150
+ "oneOf": [
1151
+ {
1152
+ "type": "null"
1153
+ },
1154
+ {
1155
+ "format": "date-time",
1156
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$",
1157
+ "type": "string"
1158
+ }
1159
+ ]
1160
+ },
1161
+ "expectedVersion": {
1162
+ "maximum": 9007199254740991,
1163
+ "minimum": 0,
1164
+ "type": "integer"
1165
+ },
1166
+ "field": {
1167
+ "enum": [
1168
+ "household.total_assets",
1169
+ "household.long_term_allocatable_assets",
1170
+ "household.spending.last_12_months",
1171
+ "household.spending.last_12_months.necessary",
1172
+ "household.spending.last_12_months.discretionary",
1173
+ "household.monthly_contribution",
1174
+ "household.liquid_assets",
1175
+ "household.investments.total",
1176
+ "household.total_debt"
1177
+ ],
1178
+ "type": "string"
1179
+ },
1180
+ "idempotencyKey": {
1181
+ "maxLength": 200,
1182
+ "minLength": 1,
1183
+ "type": "string"
1184
+ },
1185
+ "kind": {
1186
+ "const": "financial_workspace_fact_record_command.v1"
1187
+ },
1188
+ "status": {
1189
+ "enum": [
1190
+ "confirmed",
1191
+ "estimated"
1192
+ ]
1193
+ },
1194
+ "value": {
1195
+ "$ref": "#/components/schemas/FinancialTypedValueV1"
1196
+ }
1197
+ },
1198
+ "required": [
1199
+ "kind",
1200
+ "expectedVersion",
1201
+ "idempotencyKey",
1202
+ "field",
1203
+ "value",
1204
+ "status",
1205
+ "asOf"
1206
+ ],
1207
+ "type": "object"
1208
+ },
1209
+ "ObjectRefV1": {
1210
+ "oneOf": [
1211
+ {
1212
+ "$ref": "#/components/schemas/FinancialWorkspaceWorkspaceRefV1"
1213
+ },
1214
+ {
1215
+ "$ref": "#/components/schemas/FinancialWorkspaceFactRefV1"
1216
+ }
1217
+ ]
1218
+ },
1219
+ "OperationProjectionV1": {
1220
+ "additionalProperties": false,
1221
+ "properties": {
1222
+ "affectedObjects": {
1223
+ "items": {
1224
+ "oneOf": [
1225
+ {
1226
+ "$ref": "#/components/schemas/FinancialWorkspaceWorkspaceRefV1"
1227
+ },
1228
+ {
1229
+ "$ref": "#/components/schemas/FinancialWorkspaceFactRefV1"
1230
+ }
1231
+ ]
1232
+ },
1233
+ "maxItems": 2,
1234
+ "minItems": 1,
1235
+ "type": "array",
1236
+ "uniqueItems": true
1237
+ },
1238
+ "baseVersion": {
1239
+ "maximum": 9007199254740991,
1240
+ "minimum": 0,
1241
+ "type": "integer"
1242
+ },
1243
+ "channel": {
1244
+ "enum": [
1245
+ "web",
1246
+ "cli"
1247
+ ]
1248
+ },
1249
+ "committedAt": {
1250
+ "format": "date-time",
1251
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$",
1252
+ "type": "string"
1253
+ },
1254
+ "kind": {
1255
+ "const": "financial_workspace_operation.v1"
1256
+ },
1257
+ "operation": {
1258
+ "enum": [
1259
+ "workspace.initialize",
1260
+ "fact.record"
1261
+ ]
1262
+ },
1263
+ "operationId": {
1264
+ "maxLength": 200,
1265
+ "minLength": 1,
1266
+ "type": "string"
1267
+ },
1268
+ "primaryObject": {
1269
+ "oneOf": [
1270
+ {
1271
+ "$ref": "#/components/schemas/FinancialWorkspaceWorkspaceRefV1"
1272
+ },
1273
+ {
1274
+ "$ref": "#/components/schemas/FinancialWorkspaceFactRefV1"
1275
+ }
1276
+ ]
1277
+ },
1278
+ "resultVersion": {
1279
+ "maximum": 9007199254740991,
1280
+ "minimum": 0,
1281
+ "type": "integer"
1282
+ }
1283
+ },
1284
+ "required": [
1285
+ "kind",
1286
+ "operationId",
1287
+ "operation",
1288
+ "channel",
1289
+ "baseVersion",
1290
+ "resultVersion",
1291
+ "committedAt",
1292
+ "primaryObject",
1293
+ "affectedObjects"
1294
+ ],
1295
+ "type": "object"
1296
+ },
1297
+ "ProjectionCoverageV1": {
1298
+ "additionalProperties": false,
1299
+ "properties": {
1300
+ "kind": {
1301
+ "const": "financial_workspace_fact_coverage.v1"
1302
+ },
1303
+ "missingFields": {
1304
+ "items": {
1305
+ "enum": [
1306
+ "household.total_assets",
1307
+ "household.long_term_allocatable_assets",
1308
+ "household.spending.last_12_months",
1309
+ "household.spending.last_12_months.necessary",
1310
+ "household.spending.last_12_months.discretionary",
1311
+ "household.monthly_contribution",
1312
+ "household.liquid_assets",
1313
+ "household.investments.total",
1314
+ "household.total_debt"
1315
+ ],
1316
+ "type": "string"
1317
+ },
1318
+ "maxItems": 9,
1319
+ "type": "array",
1320
+ "uniqueItems": true
1321
+ },
1322
+ "recordedFields": {
1323
+ "items": {
1324
+ "enum": [
1325
+ "household.total_assets",
1326
+ "household.long_term_allocatable_assets",
1327
+ "household.spending.last_12_months",
1328
+ "household.spending.last_12_months.necessary",
1329
+ "household.spending.last_12_months.discretionary",
1330
+ "household.monthly_contribution",
1331
+ "household.liquid_assets",
1332
+ "household.investments.total",
1333
+ "household.total_debt"
1334
+ ],
1335
+ "type": "string"
1336
+ },
1337
+ "maxItems": 9,
1338
+ "type": "array",
1339
+ "uniqueItems": true
1340
+ },
1341
+ "supportedFields": {
1342
+ "const": [
1343
+ "household.total_assets",
1344
+ "household.long_term_allocatable_assets",
1345
+ "household.spending.last_12_months",
1346
+ "household.spending.last_12_months.necessary",
1347
+ "household.spending.last_12_months.discretionary",
1348
+ "household.monthly_contribution",
1349
+ "household.liquid_assets",
1350
+ "household.investments.total",
1351
+ "household.total_debt"
1352
+ ]
1353
+ }
1354
+ },
1355
+ "required": [
1356
+ "kind",
1357
+ "supportedFields",
1358
+ "recordedFields",
1359
+ "missingFields"
1360
+ ],
1361
+ "type": "object"
1362
+ },
1363
+ "SuccessEnvelopeFinancialWorkspaceActivityPageV1": {
1364
+ "additionalProperties": false,
1365
+ "properties": {
1366
+ "code": {
1367
+ "const": 0
1368
+ },
1369
+ "data": {
1370
+ "$ref": "#/components/schemas/FinancialWorkspaceActivityPageV1"
1371
+ },
1372
+ "status": {
1373
+ "const": "success"
1374
+ },
1375
+ "success": {
1376
+ "const": true
1377
+ }
1378
+ },
1379
+ "required": [
1380
+ "code",
1381
+ "success",
1382
+ "status",
1383
+ "data"
1384
+ ],
1385
+ "type": "object"
1386
+ },
1387
+ "SuccessEnvelopeFinancialWorkspaceCommandReceiptV1": {
1388
+ "additionalProperties": false,
1389
+ "properties": {
1390
+ "code": {
1391
+ "const": 0
1392
+ },
1393
+ "data": {
1394
+ "$ref": "#/components/schemas/FinancialWorkspaceCommandReceiptV1"
1395
+ },
1396
+ "status": {
1397
+ "const": "success"
1398
+ },
1399
+ "success": {
1400
+ "const": true
1401
+ }
1402
+ },
1403
+ "required": [
1404
+ "code",
1405
+ "success",
1406
+ "status",
1407
+ "data"
1408
+ ],
1409
+ "type": "object"
1410
+ },
1411
+ "SuccessEnvelopeFinancialWorkspaceSnapshotV1": {
1412
+ "additionalProperties": false,
1413
+ "properties": {
1414
+ "code": {
1415
+ "const": 0
1416
+ },
1417
+ "data": {
1418
+ "$ref": "#/components/schemas/FinancialWorkspaceSnapshotV1"
1419
+ },
1420
+ "status": {
1421
+ "const": "success"
1422
+ },
1423
+ "success": {
1424
+ "const": true
1425
+ }
1426
+ },
1427
+ "required": [
1428
+ "code",
1429
+ "success",
1430
+ "status",
1431
+ "data"
1432
+ ],
1433
+ "type": "object"
1434
+ },
1435
+ "SuccessEnvelopeFinancialWorkspaceSummaryV1": {
1436
+ "additionalProperties": false,
1437
+ "properties": {
1438
+ "code": {
1439
+ "const": 0
1440
+ },
1441
+ "data": {
1442
+ "$ref": "#/components/schemas/FinancialWorkspaceSummaryV1"
1443
+ },
1444
+ "status": {
1445
+ "const": "success"
1446
+ },
1447
+ "success": {
1448
+ "const": true
1449
+ }
1450
+ },
1451
+ "required": [
1452
+ "code",
1453
+ "success",
1454
+ "status",
1455
+ "data"
1456
+ ],
1457
+ "type": "object"
1458
+ },
1459
+ "TransactionRetryableErrorDataV1": {
1460
+ "additionalProperties": false,
1461
+ "properties": {
1462
+ "retryAfterMs": {
1463
+ "maximum": 30000,
1464
+ "minimum": 100,
1465
+ "type": "integer"
1466
+ }
1467
+ },
1468
+ "required": [
1469
+ "retryAfterMs"
1470
+ ],
1471
+ "type": "object"
1472
+ },
1473
+ "VersionConflictErrorDataV1": {
1474
+ "additionalProperties": false,
1475
+ "properties": {
1476
+ "currentCursor": {
1477
+ "maxLength": 2048,
1478
+ "minLength": 1,
1479
+ "type": "string"
1480
+ },
1481
+ "currentVersion": {
1482
+ "maximum": 9007199254740991,
1483
+ "minimum": 0,
1484
+ "type": "integer"
1485
+ }
1486
+ },
1487
+ "required": [
1488
+ "currentVersion",
1489
+ "currentCursor"
1490
+ ],
1491
+ "type": "object"
1492
+ }
1493
+ },
1494
+ "securitySchemes": {
1495
+ "choosefireWorkspaceBearer": {
1496
+ "bearerFormat": "JWT",
1497
+ "scheme": "bearer",
1498
+ "type": "http"
1499
+ }
1500
+ }
1501
+ },
1502
+ "info": {
1503
+ "title": "ChooseFIRE Financial Workspace API",
1504
+ "version": "1.0.0"
1505
+ },
1506
+ "openapi": "3.1.0",
1507
+ "paths": {
1508
+ "/choosefire/financial-workspace": {
1509
+ "get": {
1510
+ "operationId": "getFinancialWorkspaceSnapshot",
1511
+ "responses": {
1512
+ "200": {
1513
+ "content": {
1514
+ "application/json": {
1515
+ "schema": {
1516
+ "$ref": "#/components/schemas/SuccessEnvelopeFinancialWorkspaceSnapshotV1"
1517
+ }
1518
+ }
1519
+ },
1520
+ "description": "Successful financial workspace response."
1521
+ },
1522
+ "400": {
1523
+ "content": {
1524
+ "application/json": {
1525
+ "schema": {
1526
+ "$ref": "#/components/schemas/ErrorEnvelope400V1"
1527
+ }
1528
+ }
1529
+ },
1530
+ "description": "Invalid request."
1531
+ },
1532
+ "401": {
1533
+ "content": {
1534
+ "application/json": {
1535
+ "schema": {
1536
+ "$ref": "#/components/schemas/ErrorEnvelope401V1"
1537
+ }
1538
+ }
1539
+ },
1540
+ "description": "Workspace authentication is required."
1541
+ },
1542
+ "403": {
1543
+ "content": {
1544
+ "application/json": {
1545
+ "schema": {
1546
+ "$ref": "#/components/schemas/ErrorEnvelope403V1"
1547
+ }
1548
+ }
1549
+ },
1550
+ "description": "Required account scope is missing."
1551
+ },
1552
+ "404": {
1553
+ "content": {
1554
+ "application/json": {
1555
+ "schema": {
1556
+ "$ref": "#/components/schemas/ErrorEnvelope404V1"
1557
+ }
1558
+ }
1559
+ },
1560
+ "description": "Financial workspace is not initialized."
1561
+ },
1562
+ "503": {
1563
+ "content": {
1564
+ "application/json": {
1565
+ "schema": {
1566
+ "$ref": "#/components/schemas/ErrorEnvelope503V1"
1567
+ }
1568
+ }
1569
+ },
1570
+ "description": "Financial workspace is unavailable."
1571
+ }
1572
+ },
1573
+ "security": [
1574
+ {
1575
+ "choosefireWorkspaceBearer": []
1576
+ }
1577
+ ],
1578
+ "x-choosefire-required-scope": "workspace:read"
1579
+ },
1580
+ "post": {
1581
+ "operationId": "initializeFinancialWorkspace",
1582
+ "requestBody": {
1583
+ "content": {
1584
+ "application/json": {
1585
+ "schema": {
1586
+ "$ref": "#/components/schemas/InitializeFinancialWorkspaceCommandV1"
1587
+ }
1588
+ }
1589
+ },
1590
+ "required": true
1591
+ },
1592
+ "responses": {
1593
+ "200": {
1594
+ "content": {
1595
+ "application/json": {
1596
+ "schema": {
1597
+ "$ref": "#/components/schemas/SuccessEnvelopeFinancialWorkspaceCommandReceiptV1"
1598
+ }
1599
+ }
1600
+ },
1601
+ "description": "Successful financial workspace response."
1602
+ },
1603
+ "400": {
1604
+ "content": {
1605
+ "application/json": {
1606
+ "schema": {
1607
+ "$ref": "#/components/schemas/ErrorEnvelope400V1"
1608
+ }
1609
+ }
1610
+ },
1611
+ "description": "Invalid request."
1612
+ },
1613
+ "401": {
1614
+ "content": {
1615
+ "application/json": {
1616
+ "schema": {
1617
+ "$ref": "#/components/schemas/ErrorEnvelope401V1"
1618
+ }
1619
+ }
1620
+ },
1621
+ "description": "Workspace authentication is required."
1622
+ },
1623
+ "403": {
1624
+ "content": {
1625
+ "application/json": {
1626
+ "schema": {
1627
+ "$ref": "#/components/schemas/ErrorEnvelope403V1"
1628
+ }
1629
+ }
1630
+ },
1631
+ "description": "Required account scope is missing."
1632
+ },
1633
+ "409": {
1634
+ "content": {
1635
+ "application/json": {
1636
+ "schema": {
1637
+ "$ref": "#/components/schemas/ErrorEnvelope409V1"
1638
+ }
1639
+ }
1640
+ },
1641
+ "description": "Initialization or idempotency conflict."
1642
+ },
1643
+ "413": {
1644
+ "content": {
1645
+ "application/json": {
1646
+ "schema": {
1647
+ "$ref": "#/components/schemas/ErrorEnvelope413V1"
1648
+ }
1649
+ }
1650
+ },
1651
+ "description": "Request payload is too large."
1652
+ },
1653
+ "415": {
1654
+ "content": {
1655
+ "application/json": {
1656
+ "schema": {
1657
+ "$ref": "#/components/schemas/ErrorEnvelope415V1"
1658
+ }
1659
+ }
1660
+ },
1661
+ "description": "Request media type is unsupported."
1662
+ },
1663
+ "503": {
1664
+ "content": {
1665
+ "application/json": {
1666
+ "schema": {
1667
+ "$ref": "#/components/schemas/ErrorEnvelope503V1"
1668
+ }
1669
+ }
1670
+ },
1671
+ "description": "Financial workspace is unavailable."
1672
+ }
1673
+ },
1674
+ "security": [
1675
+ {
1676
+ "choosefireWorkspaceBearer": []
1677
+ }
1678
+ ],
1679
+ "x-choosefire-required-scope": "workspace:initialize"
1680
+ }
1681
+ },
1682
+ "/choosefire/financial-workspace/activity": {
1683
+ "get": {
1684
+ "operationId": "listFinancialWorkspaceActivity",
1685
+ "parameters": [
1686
+ {
1687
+ "in": "query",
1688
+ "name": "limit",
1689
+ "required": true,
1690
+ "schema": {
1691
+ "maximum": 100,
1692
+ "minimum": 1,
1693
+ "type": "integer"
1694
+ }
1695
+ },
1696
+ {
1697
+ "in": "query",
1698
+ "name": "cursor",
1699
+ "required": false,
1700
+ "schema": {
1701
+ "maxLength": 2048,
1702
+ "minLength": 1,
1703
+ "type": "string"
1704
+ }
1705
+ }
1706
+ ],
1707
+ "responses": {
1708
+ "200": {
1709
+ "content": {
1710
+ "application/json": {
1711
+ "schema": {
1712
+ "$ref": "#/components/schemas/SuccessEnvelopeFinancialWorkspaceActivityPageV1"
1713
+ }
1714
+ }
1715
+ },
1716
+ "description": "Successful financial workspace response."
1717
+ },
1718
+ "400": {
1719
+ "content": {
1720
+ "application/json": {
1721
+ "schema": {
1722
+ "$ref": "#/components/schemas/ErrorEnvelope400V1"
1723
+ }
1724
+ }
1725
+ },
1726
+ "description": "Invalid activity query or cursor."
1727
+ },
1728
+ "401": {
1729
+ "content": {
1730
+ "application/json": {
1731
+ "schema": {
1732
+ "$ref": "#/components/schemas/ErrorEnvelope401V1"
1733
+ }
1734
+ }
1735
+ },
1736
+ "description": "Workspace authentication is required."
1737
+ },
1738
+ "403": {
1739
+ "content": {
1740
+ "application/json": {
1741
+ "schema": {
1742
+ "$ref": "#/components/schemas/ErrorEnvelope403V1"
1743
+ }
1744
+ }
1745
+ },
1746
+ "description": "Required account scope is missing."
1747
+ },
1748
+ "404": {
1749
+ "content": {
1750
+ "application/json": {
1751
+ "schema": {
1752
+ "$ref": "#/components/schemas/ErrorEnvelope404V1"
1753
+ }
1754
+ }
1755
+ },
1756
+ "description": "Financial workspace is not initialized."
1757
+ },
1758
+ "409": {
1759
+ "content": {
1760
+ "application/json": {
1761
+ "schema": {
1762
+ "$ref": "#/components/schemas/ErrorEnvelope409V1"
1763
+ }
1764
+ }
1765
+ },
1766
+ "description": "Cursor authority does not match."
1767
+ },
1768
+ "410": {
1769
+ "content": {
1770
+ "application/json": {
1771
+ "schema": {
1772
+ "$ref": "#/components/schemas/ErrorEnvelope410V1"
1773
+ }
1774
+ }
1775
+ },
1776
+ "description": "Cursor is expired."
1777
+ },
1778
+ "503": {
1779
+ "content": {
1780
+ "application/json": {
1781
+ "schema": {
1782
+ "$ref": "#/components/schemas/ErrorEnvelope503V1"
1783
+ }
1784
+ }
1785
+ },
1786
+ "description": "Financial workspace is unavailable."
1787
+ }
1788
+ },
1789
+ "security": [
1790
+ {
1791
+ "choosefireWorkspaceBearer": []
1792
+ }
1793
+ ],
1794
+ "x-choosefire-required-scope": "workspace:read"
1795
+ }
1796
+ },
1797
+ "/choosefire/financial-workspace/facts": {
1798
+ "post": {
1799
+ "operationId": "recordFinancialWorkspaceFact",
1800
+ "requestBody": {
1801
+ "content": {
1802
+ "application/json": {
1803
+ "schema": {
1804
+ "$ref": "#/components/schemas/FinancialWorkspaceFactRecordCommandV1"
1805
+ }
1806
+ }
1807
+ },
1808
+ "required": true
1809
+ },
1810
+ "responses": {
1811
+ "200": {
1812
+ "content": {
1813
+ "application/json": {
1814
+ "schema": {
1815
+ "$ref": "#/components/schemas/SuccessEnvelopeFinancialWorkspaceCommandReceiptV1"
1816
+ }
1817
+ }
1818
+ },
1819
+ "description": "Successful financial workspace response."
1820
+ },
1821
+ "400": {
1822
+ "content": {
1823
+ "application/json": {
1824
+ "schema": {
1825
+ "$ref": "#/components/schemas/ErrorEnvelope400V1"
1826
+ }
1827
+ }
1828
+ },
1829
+ "description": "Invalid fact command."
1830
+ },
1831
+ "401": {
1832
+ "content": {
1833
+ "application/json": {
1834
+ "schema": {
1835
+ "$ref": "#/components/schemas/ErrorEnvelope401V1"
1836
+ }
1837
+ }
1838
+ },
1839
+ "description": "Workspace authentication is required."
1840
+ },
1841
+ "403": {
1842
+ "content": {
1843
+ "application/json": {
1844
+ "schema": {
1845
+ "$ref": "#/components/schemas/ErrorEnvelope403V1"
1846
+ }
1847
+ }
1848
+ },
1849
+ "description": "Required account scope is missing."
1850
+ },
1851
+ "404": {
1852
+ "content": {
1853
+ "application/json": {
1854
+ "schema": {
1855
+ "$ref": "#/components/schemas/ErrorEnvelope404V1"
1856
+ }
1857
+ }
1858
+ },
1859
+ "description": "Financial workspace is not initialized."
1860
+ },
1861
+ "409": {
1862
+ "content": {
1863
+ "application/json": {
1864
+ "schema": {
1865
+ "$ref": "#/components/schemas/ErrorEnvelope409V1"
1866
+ }
1867
+ }
1868
+ },
1869
+ "description": "Version, idempotency, or protected fact conflict."
1870
+ },
1871
+ "413": {
1872
+ "content": {
1873
+ "application/json": {
1874
+ "schema": {
1875
+ "$ref": "#/components/schemas/ErrorEnvelope413V1"
1876
+ }
1877
+ }
1878
+ },
1879
+ "description": "Request payload is too large."
1880
+ },
1881
+ "415": {
1882
+ "content": {
1883
+ "application/json": {
1884
+ "schema": {
1885
+ "$ref": "#/components/schemas/ErrorEnvelope415V1"
1886
+ }
1887
+ }
1888
+ },
1889
+ "description": "Request media type is unsupported."
1890
+ },
1891
+ "503": {
1892
+ "content": {
1893
+ "application/json": {
1894
+ "schema": {
1895
+ "$ref": "#/components/schemas/ErrorEnvelope503V1"
1896
+ }
1897
+ }
1898
+ },
1899
+ "description": "Financial workspace is unavailable."
1900
+ }
1901
+ },
1902
+ "security": [
1903
+ {
1904
+ "choosefireWorkspaceBearer": []
1905
+ }
1906
+ ],
1907
+ "x-choosefire-required-scope": "workspace:write:fact"
1908
+ }
1909
+ },
1910
+ "/choosefire/financial-workspace/summary": {
1911
+ "get": {
1912
+ "operationId": "getFinancialWorkspaceSummary",
1913
+ "responses": {
1914
+ "200": {
1915
+ "content": {
1916
+ "application/json": {
1917
+ "schema": {
1918
+ "$ref": "#/components/schemas/SuccessEnvelopeFinancialWorkspaceSummaryV1"
1919
+ }
1920
+ }
1921
+ },
1922
+ "description": "Successful financial workspace response."
1923
+ },
1924
+ "400": {
1925
+ "content": {
1926
+ "application/json": {
1927
+ "schema": {
1928
+ "$ref": "#/components/schemas/ErrorEnvelope400V1"
1929
+ }
1930
+ }
1931
+ },
1932
+ "description": "Invalid request."
1933
+ },
1934
+ "401": {
1935
+ "content": {
1936
+ "application/json": {
1937
+ "schema": {
1938
+ "$ref": "#/components/schemas/ErrorEnvelope401V1"
1939
+ }
1940
+ }
1941
+ },
1942
+ "description": "Workspace authentication is required."
1943
+ },
1944
+ "403": {
1945
+ "content": {
1946
+ "application/json": {
1947
+ "schema": {
1948
+ "$ref": "#/components/schemas/ErrorEnvelope403V1"
1949
+ }
1950
+ }
1951
+ },
1952
+ "description": "Required account scope is missing."
1953
+ },
1954
+ "404": {
1955
+ "content": {
1956
+ "application/json": {
1957
+ "schema": {
1958
+ "$ref": "#/components/schemas/ErrorEnvelope404V1"
1959
+ }
1960
+ }
1961
+ },
1962
+ "description": "Financial workspace is not initialized."
1963
+ },
1964
+ "503": {
1965
+ "content": {
1966
+ "application/json": {
1967
+ "schema": {
1968
+ "$ref": "#/components/schemas/ErrorEnvelope503V1"
1969
+ }
1970
+ }
1971
+ },
1972
+ "description": "Financial workspace is unavailable."
1973
+ }
1974
+ },
1975
+ "security": [
1976
+ {
1977
+ "choosefireWorkspaceBearer": []
1978
+ }
1979
+ ],
1980
+ "x-choosefire-required-scope": "workspace:read"
1981
+ }
1982
+ }
1983
+ },
1984
+ "x-choosefire-contract-id": "choosefire-financial-workspace.v1",
1985
+ "x-choosefire-contract-version": 1,
1986
+ "x-choosefire-field-registry-sha256": "3ecc94b8fee854c4a1012a79de1216007191c853b62fbf99641a1f9aadde2b16"
1987
+ }