forge-openclaw-plugin 0.2.26 → 0.2.28
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.
- package/README.md +60 -3
- package/dist/assets/{board-ta0rUHOf.js → board-DPFvZf-D.js} +2 -2
- package/dist/assets/{board-ta0rUHOf.js.map → board-DPFvZf-D.js.map} +1 -1
- package/dist/assets/index-Auw3JrdE.css +1 -0
- package/dist/assets/index-D1H7myQH.js +85 -0
- package/dist/assets/index-D1H7myQH.js.map +1 -0
- package/dist/assets/knowledge-graph-layout.worker-DRvzPxhP.js +2 -0
- package/dist/assets/knowledge-graph-layout.worker-DRvzPxhP.js.map +1 -0
- package/dist/assets/{motion-fBKPB6yw.js → motion-Bvwc85ch.js} +2 -2
- package/dist/assets/{motion-fBKPB6yw.js.map → motion-Bvwc85ch.js.map} +1 -1
- package/dist/assets/{table-C-IGTQni.js → table-FJQTJvUR.js} +2 -2
- package/dist/assets/{table-C-IGTQni.js.map → table-FJQTJvUR.js.map} +1 -1
- package/dist/assets/{ui-DInOpaYF.js → ui-GXFcgvSw.js} +2 -2
- package/dist/assets/{ui-DInOpaYF.js.map → ui-GXFcgvSw.js.map} +1 -1
- package/dist/assets/vendor-Cwf49UMz.js +1247 -0
- package/dist/assets/vendor-Cwf49UMz.js.map +1 -0
- package/dist/index.html +7 -7
- package/dist/openclaw/local-runtime.js +16 -0
- package/dist/openclaw/routes.d.ts +27 -0
- package/dist/openclaw/routes.js +16 -12
- package/dist/server/server/migrations/037_workbench_public_inputs_and_run_inputs.sql +5 -0
- package/dist/server/server/migrations/038_data_management_settings.sql +11 -0
- package/dist/server/server/migrations/039_life_force_and_action_points.sql +114 -0
- package/dist/server/server/migrations/040_screen_time_domain.sql +89 -0
- package/dist/server/server/migrations/041_companion_source_states.sql +21 -0
- package/dist/server/server/migrations/042_movement_boxes.sql +47 -0
- package/dist/server/server/migrations/043_movement_box_overlap_overrides.sql +26 -0
- package/dist/server/server/src/app.js +1900 -91
- package/dist/server/server/src/connectors/box-registry.js +44 -9
- package/dist/server/server/src/data-management-types.js +107 -0
- package/dist/server/server/src/db.js +68 -4
- package/dist/server/server/src/demo-data.js +2 -2
- package/dist/server/server/src/health.js +702 -18
- package/dist/server/server/src/managers/platform/llm-manager.js +7 -4
- package/dist/server/server/src/managers/platform/mock-workbench-provider.js +149 -0
- package/dist/server/server/src/managers/platform/secrets-manager.js +18 -1
- package/dist/server/server/src/managers/runtime.js +9 -0
- package/dist/server/server/src/movement.js +1971 -112
- package/dist/server/server/src/openapi.js +1390 -105
- package/dist/server/server/src/psyche-types.js +9 -1
- package/dist/server/server/src/repositories/activity-events.js +8 -0
- package/dist/server/server/src/repositories/ai-connectors.js +522 -74
- package/dist/server/server/src/repositories/calendar.js +151 -0
- package/dist/server/server/src/repositories/habits.js +37 -1
- package/dist/server/server/src/repositories/model-settings.js +13 -3
- package/dist/server/server/src/repositories/notes.js +3 -0
- package/dist/server/server/src/repositories/settings.js +380 -18
- package/dist/server/server/src/repositories/tasks.js +170 -10
- package/dist/server/server/src/runtime-data-root.js +82 -0
- package/dist/server/server/src/screen-time.js +802 -0
- package/dist/server/server/src/services/data-management.js +788 -0
- package/dist/server/server/src/services/entity-crud.js +205 -2
- package/dist/server/server/src/services/knowledge-graph.js +1455 -0
- package/dist/server/server/src/services/life-force-model.js +217 -0
- package/dist/server/server/src/services/life-force.js +2506 -0
- package/dist/server/server/src/services/psyche-observation-calendar.js +383 -16
- package/dist/server/server/src/types.js +307 -14
- package/dist/server/server/src/web.js +228 -13
- package/dist/server/src/components/customization/utility-widgets.js +136 -27
- package/dist/server/src/components/ui/info-tooltip.js +25 -0
- package/dist/server/src/components/workbench-boxes/calendar/calendar-boxes.js +78 -0
- package/dist/server/src/components/workbench-boxes/goals/goals-boxes.js +62 -0
- package/dist/server/src/components/workbench-boxes/habits/habits-boxes.js +62 -0
- package/dist/server/src/components/workbench-boxes/health/health-boxes.js +63 -8
- package/dist/server/src/components/workbench-boxes/insights/insights-boxes.js +50 -0
- package/dist/server/src/components/workbench-boxes/kanban/kanban-boxes.js +62 -54
- package/dist/server/src/components/workbench-boxes/movement/movement-boxes.js +18 -8
- package/dist/server/src/components/workbench-boxes/notes/notes-boxes.js +56 -38
- package/dist/server/src/components/workbench-boxes/overview/overview-boxes.js +65 -0
- package/dist/server/src/components/workbench-boxes/preferences/preferences-boxes.js +78 -0
- package/dist/server/src/components/workbench-boxes/projects/projects-boxes.js +35 -30
- package/dist/server/src/components/workbench-boxes/psyche/psyche-boxes.js +88 -0
- package/dist/server/src/components/workbench-boxes/questionnaires/questionnaires-boxes.js +61 -0
- package/dist/server/src/components/workbench-boxes/review/review-boxes.js +53 -0
- package/dist/server/src/components/workbench-boxes/shared/define-workbench-box.js +3 -1
- package/dist/server/src/components/workbench-boxes/shared/generic-node-view.js +39 -3
- package/dist/server/src/components/workbench-boxes/strategies/strategies-boxes.js +62 -0
- package/dist/server/src/components/workbench-boxes/tasks/tasks-boxes.js +76 -0
- package/dist/server/src/components/workbench-boxes/today/today-boxes.js +47 -32
- package/dist/server/src/components/workbench-boxes/wiki/wiki-boxes.js +60 -0
- package/dist/server/src/lib/api.js +280 -21
- package/dist/server/src/lib/data-management-types.js +1 -0
- package/dist/server/src/lib/entity-visuals.js +279 -0
- package/dist/server/src/lib/knowledge-graph-types.js +276 -0
- package/dist/server/src/lib/knowledge-graph.js +470 -0
- package/dist/server/src/lib/schemas.js +4 -0
- package/dist/server/src/lib/snapshot-normalizer.js +45 -1
- package/dist/server/src/lib/workbench/contracts.js +229 -0
- package/dist/server/src/lib/workbench/nodes.js +200 -0
- package/dist/server/src/lib/workbench/registry.js +52 -5
- package/dist/server/src/lib/workbench/runtime.js +254 -38
- package/dist/server/src/lib/workbench/tool-catalog.js +68 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/server/migrations/037_workbench_public_inputs_and_run_inputs.sql +5 -0
- package/server/migrations/038_data_management_settings.sql +11 -0
- package/server/migrations/039_life_force_and_action_points.sql +114 -0
- package/server/migrations/040_screen_time_domain.sql +89 -0
- package/server/migrations/041_companion_source_states.sql +21 -0
- package/server/migrations/042_movement_boxes.sql +47 -0
- package/server/migrations/043_movement_box_overlap_overrides.sql +26 -0
- package/skills/forge-openclaw/SKILL.md +41 -11
- package/skills/forge-openclaw/entity_conversation_playbooks.md +448 -34
- package/skills/forge-openclaw/psyche_entity_playbooks.md +170 -17
- package/dist/assets/index-Ro0ZF_az.css +0 -1
- package/dist/assets/index-ytlpSj23.js +0 -79
- package/dist/assets/index-ytlpSj23.js.map +0 -1
- package/dist/assets/vendor-lE3tZJcC.js +0 -876
- package/dist/assets/vendor-lE3tZJcC.js.map +0 -1
|
@@ -37,6 +37,14 @@ const API_TAGS = [
|
|
|
37
37
|
name: "Health",
|
|
38
38
|
description: "Runtime health, sleep, sports, workout, and mobile sync surfaces."
|
|
39
39
|
},
|
|
40
|
+
{
|
|
41
|
+
name: "Movement",
|
|
42
|
+
description: "Movement overviews, timeline history, known places, stays, trips, selection aggregates, and user-defined overlay routes."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: "Life Force",
|
|
46
|
+
description: "Energy-budget, fatigue, and action-point modeling routes."
|
|
47
|
+
},
|
|
40
48
|
{
|
|
41
49
|
name: "Auth",
|
|
42
50
|
description: "Operator session bootstrapping for trusted local usage."
|
|
@@ -125,6 +133,10 @@ const API_TAGS = [
|
|
|
125
133
|
name: "Insights",
|
|
126
134
|
description: "Stored insights and structured feedback on them."
|
|
127
135
|
},
|
|
136
|
+
{
|
|
137
|
+
name: "Workbench",
|
|
138
|
+
description: "Graph-flow catalog, execution, published outputs, and node-result routes."
|
|
139
|
+
},
|
|
128
140
|
{
|
|
129
141
|
name: "Metrics",
|
|
130
142
|
description: "XP, reward-ledger, and runtime metric surfaces."
|
|
@@ -145,7 +157,11 @@ const API_TAGS = [
|
|
|
145
157
|
const API_TAG_GROUPS = [
|
|
146
158
|
{
|
|
147
159
|
name: "Runtime",
|
|
148
|
-
tags: ["Meta", "
|
|
160
|
+
tags: ["Meta", "Auth", "Platform", "Operator", "Diagnostics"]
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
name: "Embodied Context",
|
|
164
|
+
tags: ["Health", "Movement", "Life Force"]
|
|
149
165
|
},
|
|
150
166
|
{
|
|
151
167
|
name: "Core Work",
|
|
@@ -162,7 +178,8 @@ const API_TAG_GROUPS = [
|
|
|
162
178
|
"Activity",
|
|
163
179
|
"Metrics",
|
|
164
180
|
"Reviews",
|
|
165
|
-
"Insights"
|
|
181
|
+
"Insights",
|
|
182
|
+
"Workbench"
|
|
166
183
|
]
|
|
167
184
|
},
|
|
168
185
|
{
|
|
@@ -188,6 +205,18 @@ function resolveTagsForPath(path) {
|
|
|
188
205
|
path.startsWith("/api/v1/mobile")) {
|
|
189
206
|
return ["Health"];
|
|
190
207
|
}
|
|
208
|
+
if (path.startsWith("/api/v1/movement")) {
|
|
209
|
+
return ["Movement"];
|
|
210
|
+
}
|
|
211
|
+
if (path.startsWith("/api/v1/life-force")) {
|
|
212
|
+
return ["Life Force"];
|
|
213
|
+
}
|
|
214
|
+
if (path.startsWith("/api/v1/workbench")) {
|
|
215
|
+
return ["Workbench"];
|
|
216
|
+
}
|
|
217
|
+
if (path.startsWith("/api/v1/screen-time")) {
|
|
218
|
+
return ["Health"];
|
|
219
|
+
}
|
|
191
220
|
if (path === "/api/v1/context" || path.startsWith("/api/v1/domains")) {
|
|
192
221
|
return ["Platform"];
|
|
193
222
|
}
|
|
@@ -2591,9 +2620,15 @@ export function buildOpenApiDocument() {
|
|
|
2591
2620
|
"conceptModel",
|
|
2592
2621
|
"psycheSubmoduleModel",
|
|
2593
2622
|
"psycheCoachingPlaybooks",
|
|
2623
|
+
"conversationRules",
|
|
2624
|
+
"entityConversationPlaybooks",
|
|
2594
2625
|
"relationshipModel",
|
|
2626
|
+
"entityRouteModel",
|
|
2627
|
+
"multiUserModel",
|
|
2628
|
+
"strategyContractModel",
|
|
2595
2629
|
"entityCatalog",
|
|
2596
2630
|
"toolInputCatalog",
|
|
2631
|
+
"connectionGuides",
|
|
2597
2632
|
"verificationPaths",
|
|
2598
2633
|
"recommendedPluginTools",
|
|
2599
2634
|
"interactionGuidance",
|
|
@@ -2690,10 +2725,20 @@ export function buildOpenApiDocument() {
|
|
|
2690
2725
|
"task",
|
|
2691
2726
|
"taskRun",
|
|
2692
2727
|
"note",
|
|
2728
|
+
"wiki",
|
|
2729
|
+
"sleepSession",
|
|
2730
|
+
"workoutSession",
|
|
2731
|
+
"preferences",
|
|
2732
|
+
"questionnaire",
|
|
2733
|
+
"selfObservation",
|
|
2693
2734
|
"insight",
|
|
2694
2735
|
"calendar",
|
|
2695
2736
|
"workBlock",
|
|
2696
2737
|
"taskTimebox",
|
|
2738
|
+
"workAdjustment",
|
|
2739
|
+
"movement",
|
|
2740
|
+
"lifeForce",
|
|
2741
|
+
"workbench",
|
|
2697
2742
|
"psyche"
|
|
2698
2743
|
],
|
|
2699
2744
|
properties: {
|
|
@@ -2702,10 +2747,20 @@ export function buildOpenApiDocument() {
|
|
|
2702
2747
|
task: { type: "string" },
|
|
2703
2748
|
taskRun: { type: "string" },
|
|
2704
2749
|
note: { type: "string" },
|
|
2750
|
+
wiki: { type: "string" },
|
|
2751
|
+
sleepSession: { type: "string" },
|
|
2752
|
+
workoutSession: { type: "string" },
|
|
2753
|
+
preferences: { type: "string" },
|
|
2754
|
+
questionnaire: { type: "string" },
|
|
2755
|
+
selfObservation: { type: "string" },
|
|
2705
2756
|
insight: { type: "string" },
|
|
2706
2757
|
calendar: { type: "string" },
|
|
2707
2758
|
workBlock: { type: "string" },
|
|
2708
2759
|
taskTimebox: { type: "string" },
|
|
2760
|
+
workAdjustment: { type: "string" },
|
|
2761
|
+
movement: { type: "string" },
|
|
2762
|
+
lifeForce: { type: "string" },
|
|
2763
|
+
workbench: { type: "string" },
|
|
2709
2764
|
psyche: { type: "string" }
|
|
2710
2765
|
}
|
|
2711
2766
|
},
|
|
@@ -2761,24 +2816,138 @@ export function buildOpenApiDocument() {
|
|
|
2761
2816
|
notes: arrayOf({ type: "string" })
|
|
2762
2817
|
}
|
|
2763
2818
|
}),
|
|
2819
|
+
conversationRules: arrayOf({ type: "string" }),
|
|
2820
|
+
entityConversationPlaybooks: arrayOf({
|
|
2821
|
+
type: "object",
|
|
2822
|
+
additionalProperties: false,
|
|
2823
|
+
required: ["focus", "openingQuestion", "coachingGoal", "askSequence"],
|
|
2824
|
+
properties: {
|
|
2825
|
+
focus: { type: "string" },
|
|
2826
|
+
openingQuestion: { type: "string" },
|
|
2827
|
+
coachingGoal: { type: "string" },
|
|
2828
|
+
askSequence: arrayOf({ type: "string" })
|
|
2829
|
+
}
|
|
2830
|
+
}),
|
|
2764
2831
|
relationshipModel: arrayOf({ type: "string" }),
|
|
2832
|
+
entityRouteModel: {
|
|
2833
|
+
type: "object",
|
|
2834
|
+
additionalProperties: false,
|
|
2835
|
+
required: [
|
|
2836
|
+
"batchCrudEntities",
|
|
2837
|
+
"batchRoutes",
|
|
2838
|
+
"specializedCrudEntities",
|
|
2839
|
+
"actionEntities",
|
|
2840
|
+
"specializedDomainSurfaces",
|
|
2841
|
+
"readModelOnlySurfaces"
|
|
2842
|
+
],
|
|
2843
|
+
properties: {
|
|
2844
|
+
batchCrudEntities: arrayOf({ type: "string" }),
|
|
2845
|
+
batchRoutes: {
|
|
2846
|
+
type: "object",
|
|
2847
|
+
additionalProperties: false,
|
|
2848
|
+
required: ["search", "create", "update", "delete", "restore"],
|
|
2849
|
+
properties: {
|
|
2850
|
+
search: { type: "string" },
|
|
2851
|
+
create: { type: "string" },
|
|
2852
|
+
update: { type: "string" },
|
|
2853
|
+
delete: { type: "string" },
|
|
2854
|
+
restore: { type: "string" }
|
|
2855
|
+
}
|
|
2856
|
+
},
|
|
2857
|
+
specializedCrudEntities: {
|
|
2858
|
+
type: "object",
|
|
2859
|
+
additionalProperties: {
|
|
2860
|
+
type: "object",
|
|
2861
|
+
additionalProperties: { type: "string" }
|
|
2862
|
+
}
|
|
2863
|
+
},
|
|
2864
|
+
actionEntities: {
|
|
2865
|
+
type: "object",
|
|
2866
|
+
additionalProperties: {
|
|
2867
|
+
type: "object",
|
|
2868
|
+
additionalProperties: true
|
|
2869
|
+
}
|
|
2870
|
+
},
|
|
2871
|
+
specializedDomainSurfaces: {
|
|
2872
|
+
type: "object",
|
|
2873
|
+
additionalProperties: {
|
|
2874
|
+
type: "object",
|
|
2875
|
+
additionalProperties: true
|
|
2876
|
+
}
|
|
2877
|
+
},
|
|
2878
|
+
readModelOnlySurfaces: {
|
|
2879
|
+
type: "object",
|
|
2880
|
+
additionalProperties: { type: "string" }
|
|
2881
|
+
}
|
|
2882
|
+
}
|
|
2883
|
+
},
|
|
2884
|
+
multiUserModel: {
|
|
2885
|
+
type: "object",
|
|
2886
|
+
additionalProperties: false,
|
|
2887
|
+
required: [
|
|
2888
|
+
"summary",
|
|
2889
|
+
"defaultUserScopeBehavior",
|
|
2890
|
+
"routeScoping",
|
|
2891
|
+
"relationshipGraphDefaults"
|
|
2892
|
+
],
|
|
2893
|
+
properties: {
|
|
2894
|
+
summary: { type: "string" },
|
|
2895
|
+
defaultUserScopeBehavior: { type: "string" },
|
|
2896
|
+
routeScoping: arrayOf({ type: "string" }),
|
|
2897
|
+
relationshipGraphDefaults: arrayOf({ type: "string" })
|
|
2898
|
+
}
|
|
2899
|
+
},
|
|
2900
|
+
strategyContractModel: {
|
|
2901
|
+
type: "object",
|
|
2902
|
+
additionalProperties: false,
|
|
2903
|
+
required: [
|
|
2904
|
+
"draftSummary",
|
|
2905
|
+
"lockSummary",
|
|
2906
|
+
"unlockSummary",
|
|
2907
|
+
"alignmentSummary",
|
|
2908
|
+
"metricBreakdown"
|
|
2909
|
+
],
|
|
2910
|
+
properties: {
|
|
2911
|
+
draftSummary: { type: "string" },
|
|
2912
|
+
lockSummary: { type: "string" },
|
|
2913
|
+
unlockSummary: { type: "string" },
|
|
2914
|
+
alignmentSummary: { type: "string" },
|
|
2915
|
+
metricBreakdown: arrayOf({ type: "string" })
|
|
2916
|
+
}
|
|
2917
|
+
},
|
|
2765
2918
|
entityCatalog: arrayOf({
|
|
2766
2919
|
type: "object",
|
|
2767
2920
|
additionalProperties: false,
|
|
2768
2921
|
required: [
|
|
2769
2922
|
"entityType",
|
|
2923
|
+
"classification",
|
|
2770
2924
|
"purpose",
|
|
2771
2925
|
"minimumCreateFields",
|
|
2772
2926
|
"relationshipRules",
|
|
2773
2927
|
"searchHints",
|
|
2774
|
-
"fieldGuide"
|
|
2928
|
+
"fieldGuide",
|
|
2929
|
+
"preferredMutationPath"
|
|
2775
2930
|
],
|
|
2776
2931
|
properties: {
|
|
2777
2932
|
entityType: { type: "string" },
|
|
2933
|
+
classification: {
|
|
2934
|
+
type: "string",
|
|
2935
|
+
enum: [
|
|
2936
|
+
"batch_crud_entity",
|
|
2937
|
+
"specialized_crud_entity",
|
|
2938
|
+
"action_workflow_entity",
|
|
2939
|
+
"read_model_only_surface"
|
|
2940
|
+
]
|
|
2941
|
+
},
|
|
2778
2942
|
purpose: { type: "string" },
|
|
2779
2943
|
minimumCreateFields: arrayOf({ type: "string" }),
|
|
2780
2944
|
relationshipRules: arrayOf({ type: "string" }),
|
|
2781
2945
|
searchHints: arrayOf({ type: "string" }),
|
|
2946
|
+
routeBase: nullable({ type: "string" }),
|
|
2947
|
+
preferredMutationPath: { type: "string" },
|
|
2948
|
+
preferredReadPath: nullable({ type: "string" }),
|
|
2949
|
+
preferredMutationTool: nullable({ type: "string" }),
|
|
2950
|
+
examples: arrayOf({ type: "string" }),
|
|
2782
2951
|
fieldGuide: arrayOf({
|
|
2783
2952
|
type: "object",
|
|
2784
2953
|
additionalProperties: false,
|
|
@@ -2831,6 +3000,15 @@ export function buildOpenApiDocument() {
|
|
|
2831
3000
|
"context",
|
|
2832
3001
|
"xpMetrics",
|
|
2833
3002
|
"weeklyReview",
|
|
3003
|
+
"sleepOverview",
|
|
3004
|
+
"sportsOverview",
|
|
3005
|
+
"lifeForce",
|
|
3006
|
+
"movementTimeline",
|
|
3007
|
+
"movementAllTime",
|
|
3008
|
+
"workbenchFlows",
|
|
3009
|
+
"wikiSettings",
|
|
3010
|
+
"wikiSearch",
|
|
3011
|
+
"wikiHealth",
|
|
2834
3012
|
"calendarOverview",
|
|
2835
3013
|
"settingsBin",
|
|
2836
3014
|
"batchSearch",
|
|
@@ -2842,6 +3020,15 @@ export function buildOpenApiDocument() {
|
|
|
2842
3020
|
context: { type: "string" },
|
|
2843
3021
|
xpMetrics: { type: "string" },
|
|
2844
3022
|
weeklyReview: { type: "string" },
|
|
3023
|
+
sleepOverview: { type: "string" },
|
|
3024
|
+
sportsOverview: { type: "string" },
|
|
3025
|
+
lifeForce: { type: "string" },
|
|
3026
|
+
movementTimeline: { type: "string" },
|
|
3027
|
+
movementAllTime: { type: "string" },
|
|
3028
|
+
workbenchFlows: { type: "string" },
|
|
3029
|
+
wikiSettings: { type: "string" },
|
|
3030
|
+
wikiSearch: { type: "string" },
|
|
3031
|
+
wikiHealth: { type: "string" },
|
|
2845
3032
|
calendarOverview: { type: "string" },
|
|
2846
3033
|
settingsBin: { type: "string" },
|
|
2847
3034
|
batchSearch: { type: "string" },
|
|
@@ -2858,6 +3045,9 @@ export function buildOpenApiDocument() {
|
|
|
2858
3045
|
"readModels",
|
|
2859
3046
|
"uiWorkflow",
|
|
2860
3047
|
"entityWorkflow",
|
|
3048
|
+
"wikiWorkflow",
|
|
3049
|
+
"healthWorkflow",
|
|
3050
|
+
"rewardWorkflow",
|
|
2861
3051
|
"workWorkflow",
|
|
2862
3052
|
"calendarWorkflow",
|
|
2863
3053
|
"insightWorkflow"
|
|
@@ -2867,6 +3057,9 @@ export function buildOpenApiDocument() {
|
|
|
2867
3057
|
readModels: arrayOf({ type: "string" }),
|
|
2868
3058
|
uiWorkflow: arrayOf({ type: "string" }),
|
|
2869
3059
|
entityWorkflow: arrayOf({ type: "string" }),
|
|
3060
|
+
wikiWorkflow: arrayOf({ type: "string" }),
|
|
3061
|
+
healthWorkflow: arrayOf({ type: "string" }),
|
|
3062
|
+
rewardWorkflow: arrayOf({ type: "string" }),
|
|
2870
3063
|
workWorkflow: arrayOf({ type: "string" }),
|
|
2871
3064
|
calendarWorkflow: arrayOf({ type: "string" }),
|
|
2872
3065
|
insightWorkflow: arrayOf({ type: "string" })
|
|
@@ -2880,6 +3073,8 @@ export function buildOpenApiDocument() {
|
|
|
2880
3073
|
"saveSuggestionPlacement",
|
|
2881
3074
|
"saveSuggestionTone",
|
|
2882
3075
|
"maxQuestionsPerTurn",
|
|
3076
|
+
"psycheExplorationRule",
|
|
3077
|
+
"psycheOpeningQuestionRule",
|
|
2883
3078
|
"duplicateCheckRoute",
|
|
2884
3079
|
"uiSuggestionRule",
|
|
2885
3080
|
"browserFallbackRule",
|
|
@@ -2890,12 +3085,28 @@ export function buildOpenApiDocument() {
|
|
|
2890
3085
|
saveSuggestionPlacement: { type: "string" },
|
|
2891
3086
|
saveSuggestionTone: { type: "string" },
|
|
2892
3087
|
maxQuestionsPerTurn: { type: "integer" },
|
|
3088
|
+
psycheExplorationRule: { type: "string" },
|
|
3089
|
+
psycheOpeningQuestionRule: { type: "string" },
|
|
2893
3090
|
duplicateCheckRoute: { type: "string" },
|
|
2894
3091
|
uiSuggestionRule: { type: "string" },
|
|
2895
3092
|
browserFallbackRule: { type: "string" },
|
|
2896
3093
|
writeConsentRule: { type: "string" }
|
|
2897
3094
|
}
|
|
2898
3095
|
},
|
|
3096
|
+
connectionGuides: {
|
|
3097
|
+
type: "object",
|
|
3098
|
+
additionalProperties: {
|
|
3099
|
+
type: "object",
|
|
3100
|
+
additionalProperties: false,
|
|
3101
|
+
required: ["label", "installSteps", "verifyCommands", "configNotes"],
|
|
3102
|
+
properties: {
|
|
3103
|
+
label: { type: "string" },
|
|
3104
|
+
installSteps: arrayOf({ type: "string" }),
|
|
3105
|
+
verifyCommands: arrayOf({ type: "string" }),
|
|
3106
|
+
configNotes: arrayOf({ type: "string" })
|
|
3107
|
+
}
|
|
3108
|
+
}
|
|
3109
|
+
},
|
|
2899
3110
|
mutationGuidance: {
|
|
2900
3111
|
type: "object",
|
|
2901
3112
|
additionalProperties: false,
|
|
@@ -3843,6 +4054,19 @@ export function buildOpenApiDocument() {
|
|
|
3843
4054
|
}
|
|
3844
4055
|
}, "Sleep overview")
|
|
3845
4056
|
}
|
|
4057
|
+
},
|
|
4058
|
+
post: {
|
|
4059
|
+
summary: "Create one manual sleep session",
|
|
4060
|
+
responses: {
|
|
4061
|
+
"201": jsonResponse({
|
|
4062
|
+
type: "object",
|
|
4063
|
+
required: ["sleep"],
|
|
4064
|
+
properties: {
|
|
4065
|
+
sleep: { $ref: "#/components/schemas/SleepSession" }
|
|
4066
|
+
}
|
|
4067
|
+
}, "Created sleep session"),
|
|
4068
|
+
default: { $ref: "#/components/responses/Error" }
|
|
4069
|
+
}
|
|
3846
4070
|
}
|
|
3847
4071
|
},
|
|
3848
4072
|
"/api/v1/health/fitness": {
|
|
@@ -3859,226 +4083,1037 @@ export function buildOpenApiDocument() {
|
|
|
3859
4083
|
}
|
|
3860
4084
|
}
|
|
3861
4085
|
},
|
|
3862
|
-
"/api/v1/health/workouts
|
|
3863
|
-
|
|
3864
|
-
summary: "
|
|
4086
|
+
"/api/v1/health/workouts": {
|
|
4087
|
+
post: {
|
|
4088
|
+
summary: "Create one manual workout session",
|
|
3865
4089
|
responses: {
|
|
3866
|
-
"
|
|
4090
|
+
"201": jsonResponse({
|
|
3867
4091
|
type: "object",
|
|
3868
4092
|
required: ["workout"],
|
|
3869
4093
|
properties: {
|
|
3870
4094
|
workout: { $ref: "#/components/schemas/WorkoutSession" }
|
|
3871
4095
|
}
|
|
3872
|
-
}, "
|
|
3873
|
-
|
|
3874
|
-
}
|
|
3875
|
-
}
|
|
3876
|
-
},
|
|
3877
|
-
"/api/v1/health/sleep/{id}": {
|
|
3878
|
-
patch: {
|
|
3879
|
-
summary: "Update one sleep session's reflective metadata",
|
|
3880
|
-
responses: {
|
|
3881
|
-
"200": jsonResponse({
|
|
3882
|
-
type: "object",
|
|
3883
|
-
required: ["sleep"],
|
|
3884
|
-
properties: {
|
|
3885
|
-
sleep: { $ref: "#/components/schemas/SleepSession" }
|
|
3886
|
-
}
|
|
3887
|
-
}, "Updated sleep session"),
|
|
3888
|
-
"404": { $ref: "#/components/responses/Error" }
|
|
4096
|
+
}, "Created workout session"),
|
|
4097
|
+
default: { $ref: "#/components/responses/Error" }
|
|
3889
4098
|
}
|
|
3890
4099
|
}
|
|
3891
4100
|
},
|
|
3892
|
-
"/api/v1/
|
|
4101
|
+
"/api/v1/health/workouts/{id}": {
|
|
3893
4102
|
get: {
|
|
3894
|
-
summary: "Read
|
|
4103
|
+
summary: "Read one workout session",
|
|
3895
4104
|
responses: {
|
|
3896
4105
|
"200": jsonResponse({
|
|
3897
4106
|
type: "object",
|
|
3898
|
-
required: ["
|
|
4107
|
+
required: ["workout"],
|
|
3899
4108
|
properties: {
|
|
3900
|
-
|
|
3901
|
-
type: "object",
|
|
3902
|
-
additionalProperties: true
|
|
3903
|
-
}
|
|
4109
|
+
workout: { $ref: "#/components/schemas/WorkoutSession" }
|
|
3904
4110
|
}
|
|
3905
|
-
}, "
|
|
4111
|
+
}, "Workout session"),
|
|
4112
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
3906
4113
|
}
|
|
3907
|
-
}
|
|
3908
|
-
|
|
3909
|
-
|
|
3910
|
-
get: {
|
|
3911
|
-
summary: "List wiki or evidence pages inside one space",
|
|
4114
|
+
},
|
|
4115
|
+
patch: {
|
|
4116
|
+
summary: "Update one workout session's reflective metadata",
|
|
3912
4117
|
responses: {
|
|
3913
4118
|
"200": jsonResponse({
|
|
3914
4119
|
type: "object",
|
|
3915
|
-
required: ["
|
|
4120
|
+
required: ["workout"],
|
|
3916
4121
|
properties: {
|
|
3917
|
-
|
|
3918
|
-
type: "object",
|
|
3919
|
-
additionalProperties: true
|
|
3920
|
-
})
|
|
4122
|
+
workout: { $ref: "#/components/schemas/WorkoutSession" }
|
|
3921
4123
|
}
|
|
3922
|
-
}, "
|
|
4124
|
+
}, "Updated workout session"),
|
|
4125
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
3923
4126
|
}
|
|
3924
4127
|
},
|
|
3925
|
-
|
|
3926
|
-
summary: "
|
|
4128
|
+
delete: {
|
|
4129
|
+
summary: "Delete one workout session immediately",
|
|
3927
4130
|
responses: {
|
|
3928
4131
|
"200": jsonResponse({
|
|
3929
4132
|
type: "object",
|
|
3930
|
-
required: ["
|
|
4133
|
+
required: ["workout"],
|
|
3931
4134
|
properties: {
|
|
3932
|
-
|
|
4135
|
+
workout: { $ref: "#/components/schemas/WorkoutSession" }
|
|
3933
4136
|
}
|
|
3934
|
-
}, "
|
|
4137
|
+
}, "Deleted workout session"),
|
|
3935
4138
|
"404": { $ref: "#/components/responses/Error" }
|
|
3936
4139
|
}
|
|
3937
4140
|
}
|
|
3938
4141
|
},
|
|
3939
|
-
"/api/v1/
|
|
4142
|
+
"/api/v1/health/sleep/{id}": {
|
|
3940
4143
|
get: {
|
|
3941
|
-
summary: "Read one
|
|
4144
|
+
summary: "Read one sleep session",
|
|
3942
4145
|
responses: {
|
|
3943
4146
|
"200": jsonResponse({
|
|
3944
4147
|
type: "object",
|
|
3945
|
-
required: ["
|
|
4148
|
+
required: ["sleep"],
|
|
3946
4149
|
properties: {
|
|
3947
|
-
|
|
4150
|
+
sleep: { $ref: "#/components/schemas/SleepSession" }
|
|
3948
4151
|
}
|
|
3949
|
-
}, "
|
|
4152
|
+
}, "Sleep session"),
|
|
3950
4153
|
"404": { $ref: "#/components/responses/Error" }
|
|
3951
4154
|
}
|
|
3952
4155
|
},
|
|
3953
4156
|
patch: {
|
|
3954
|
-
summary: "Update
|
|
4157
|
+
summary: "Update one sleep session's reflective metadata",
|
|
3955
4158
|
responses: {
|
|
3956
4159
|
"200": jsonResponse({
|
|
3957
4160
|
type: "object",
|
|
3958
|
-
required: ["
|
|
4161
|
+
required: ["sleep"],
|
|
3959
4162
|
properties: {
|
|
3960
|
-
|
|
4163
|
+
sleep: { $ref: "#/components/schemas/SleepSession" }
|
|
3961
4164
|
}
|
|
3962
|
-
}, "Updated
|
|
4165
|
+
}, "Updated sleep session"),
|
|
3963
4166
|
"404": { $ref: "#/components/responses/Error" }
|
|
3964
4167
|
}
|
|
3965
|
-
}
|
|
3966
|
-
|
|
3967
|
-
|
|
3968
|
-
post: {
|
|
3969
|
-
summary: "Search the wiki with text, semantic, entity, or hybrid retrieval",
|
|
4168
|
+
},
|
|
4169
|
+
delete: {
|
|
4170
|
+
summary: "Delete one sleep session immediately",
|
|
3970
4171
|
responses: {
|
|
3971
4172
|
"200": jsonResponse({
|
|
3972
4173
|
type: "object",
|
|
3973
|
-
required: ["
|
|
4174
|
+
required: ["sleep"],
|
|
3974
4175
|
properties: {
|
|
3975
|
-
|
|
3976
|
-
type: "object",
|
|
3977
|
-
additionalProperties: true
|
|
3978
|
-
})
|
|
4176
|
+
sleep: { $ref: "#/components/schemas/SleepSession" }
|
|
3979
4177
|
}
|
|
3980
|
-
}, "
|
|
4178
|
+
}, "Deleted sleep session"),
|
|
4179
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
3981
4180
|
}
|
|
3982
4181
|
}
|
|
3983
4182
|
},
|
|
3984
|
-
"/api/v1/
|
|
4183
|
+
"/api/v1/life-force": {
|
|
3985
4184
|
get: {
|
|
3986
|
-
summary: "Read
|
|
4185
|
+
summary: "Read the current life-force overview with stats, drains, curve state, warnings, and recommendations",
|
|
3987
4186
|
responses: {
|
|
3988
4187
|
"200": jsonResponse({
|
|
3989
4188
|
type: "object",
|
|
3990
|
-
required: ["
|
|
4189
|
+
required: ["lifeForce", "templates"],
|
|
3991
4190
|
properties: {
|
|
3992
|
-
|
|
4191
|
+
lifeForce: {
|
|
4192
|
+
type: "object",
|
|
4193
|
+
additionalProperties: true
|
|
4194
|
+
},
|
|
4195
|
+
templates: arrayOf({
|
|
4196
|
+
type: "object",
|
|
4197
|
+
additionalProperties: true
|
|
4198
|
+
})
|
|
3993
4199
|
}
|
|
3994
|
-
}, "
|
|
4200
|
+
}, "Life-force overview"),
|
|
4201
|
+
default: { $ref: "#/components/responses/Error" }
|
|
3995
4202
|
}
|
|
3996
4203
|
}
|
|
3997
4204
|
},
|
|
3998
|
-
"/api/v1/
|
|
3999
|
-
|
|
4000
|
-
summary: "
|
|
4205
|
+
"/api/v1/life-force/profile": {
|
|
4206
|
+
patch: {
|
|
4207
|
+
summary: "Update the user-controlled life-force profile settings",
|
|
4001
4208
|
responses: {
|
|
4002
4209
|
"200": jsonResponse({
|
|
4003
4210
|
type: "object",
|
|
4004
|
-
|
|
4005
|
-
|
|
4211
|
+
required: ["lifeForce", "actor"],
|
|
4212
|
+
properties: {
|
|
4213
|
+
lifeForce: {
|
|
4214
|
+
type: "object",
|
|
4215
|
+
additionalProperties: true
|
|
4216
|
+
},
|
|
4217
|
+
actor: { type: "string" }
|
|
4218
|
+
}
|
|
4219
|
+
}, "Updated life-force profile"),
|
|
4220
|
+
default: { $ref: "#/components/responses/Error" }
|
|
4006
4221
|
}
|
|
4007
4222
|
}
|
|
4008
4223
|
},
|
|
4009
|
-
"/api/v1/
|
|
4010
|
-
|
|
4011
|
-
summary: "
|
|
4224
|
+
"/api/v1/life-force/templates/{weekday}": {
|
|
4225
|
+
put: {
|
|
4226
|
+
summary: "Replace one weekday life-force curve template",
|
|
4012
4227
|
responses: {
|
|
4013
4228
|
"200": jsonResponse({
|
|
4014
4229
|
type: "object",
|
|
4015
|
-
|
|
4016
|
-
|
|
4230
|
+
required: ["weekday", "points", "actor"],
|
|
4231
|
+
properties: {
|
|
4232
|
+
weekday: { type: "integer" },
|
|
4233
|
+
points: arrayOf({
|
|
4234
|
+
type: "object",
|
|
4235
|
+
additionalProperties: true
|
|
4236
|
+
}),
|
|
4237
|
+
actor: { type: "string" }
|
|
4238
|
+
}
|
|
4239
|
+
}, "Updated weekday curve template"),
|
|
4240
|
+
default: { $ref: "#/components/responses/Error" }
|
|
4017
4241
|
}
|
|
4018
4242
|
}
|
|
4019
4243
|
},
|
|
4020
|
-
"/api/v1/
|
|
4244
|
+
"/api/v1/life-force/fatigue-signals": {
|
|
4021
4245
|
post: {
|
|
4022
|
-
summary: "
|
|
4246
|
+
summary: "Record a tired or recovered fatigue signal and rebuild life-force state",
|
|
4023
4247
|
responses: {
|
|
4024
4248
|
"200": jsonResponse({
|
|
4025
4249
|
type: "object",
|
|
4026
|
-
|
|
4027
|
-
|
|
4250
|
+
required: ["lifeForce", "actor"],
|
|
4251
|
+
properties: {
|
|
4252
|
+
lifeForce: {
|
|
4253
|
+
type: "object",
|
|
4254
|
+
additionalProperties: true
|
|
4255
|
+
},
|
|
4256
|
+
actor: { type: "string" }
|
|
4257
|
+
}
|
|
4258
|
+
}, "Updated life-force state after fatigue signal"),
|
|
4259
|
+
default: { $ref: "#/components/responses/Error" }
|
|
4028
4260
|
}
|
|
4029
4261
|
}
|
|
4030
4262
|
},
|
|
4031
|
-
"/api/v1/
|
|
4263
|
+
"/api/v1/movement/day": {
|
|
4032
4264
|
get: {
|
|
4033
|
-
summary: "
|
|
4265
|
+
summary: "Read one day of movement detail with distance, stays, trips, gaps, and summaries",
|
|
4034
4266
|
responses: {
|
|
4035
|
-
"200": jsonResponse({
|
|
4267
|
+
"200": jsonResponse({
|
|
4268
|
+
type: "object",
|
|
4269
|
+
required: ["movement"],
|
|
4270
|
+
properties: {
|
|
4271
|
+
movement: {
|
|
4272
|
+
type: "object",
|
|
4273
|
+
additionalProperties: true
|
|
4274
|
+
}
|
|
4275
|
+
}
|
|
4276
|
+
}, "Movement day detail"),
|
|
4036
4277
|
default: { $ref: "#/components/responses/Error" }
|
|
4037
4278
|
}
|
|
4038
4279
|
}
|
|
4039
4280
|
},
|
|
4040
|
-
"/api/v1/
|
|
4281
|
+
"/api/v1/movement/month": {
|
|
4041
4282
|
get: {
|
|
4042
|
-
summary: "
|
|
4283
|
+
summary: "Read one month of movement summary",
|
|
4043
4284
|
responses: {
|
|
4044
4285
|
"200": jsonResponse({
|
|
4045
4286
|
type: "object",
|
|
4046
|
-
required: ["
|
|
4287
|
+
required: ["movement"],
|
|
4047
4288
|
properties: {
|
|
4048
|
-
|
|
4049
|
-
|
|
4289
|
+
movement: {
|
|
4290
|
+
type: "object",
|
|
4291
|
+
additionalProperties: true
|
|
4050
4292
|
}
|
|
4051
4293
|
}
|
|
4052
|
-
}, "
|
|
4294
|
+
}, "Movement month summary"),
|
|
4295
|
+
default: { $ref: "#/components/responses/Error" }
|
|
4053
4296
|
}
|
|
4054
4297
|
}
|
|
4055
4298
|
},
|
|
4056
|
-
"/api/v1/
|
|
4299
|
+
"/api/v1/movement/all-time": {
|
|
4057
4300
|
get: {
|
|
4058
|
-
summary: "Read
|
|
4301
|
+
summary: "Read all-time movement summary including place and trip distribution",
|
|
4059
4302
|
responses: {
|
|
4060
4303
|
"200": jsonResponse({
|
|
4061
4304
|
type: "object",
|
|
4062
|
-
required: ["
|
|
4305
|
+
required: ["movement"],
|
|
4063
4306
|
properties: {
|
|
4064
|
-
|
|
4307
|
+
movement: {
|
|
4065
4308
|
type: "object",
|
|
4066
4309
|
additionalProperties: true
|
|
4067
4310
|
}
|
|
4068
4311
|
}
|
|
4069
|
-
}, "
|
|
4312
|
+
}, "Movement all-time summary"),
|
|
4313
|
+
default: { $ref: "#/components/responses/Error" }
|
|
4070
4314
|
}
|
|
4071
4315
|
}
|
|
4072
4316
|
},
|
|
4073
|
-
"/api/v1/
|
|
4317
|
+
"/api/v1/movement/timeline": {
|
|
4074
4318
|
get: {
|
|
4075
|
-
summary: "
|
|
4319
|
+
summary: "Read the paginated movement timeline with stays, trips, missing spans, and projected boxes",
|
|
4076
4320
|
responses: {
|
|
4077
4321
|
"200": jsonResponse({
|
|
4078
4322
|
type: "object",
|
|
4079
|
-
required: ["
|
|
4323
|
+
required: ["movement"],
|
|
4080
4324
|
properties: {
|
|
4081
|
-
|
|
4325
|
+
movement: {
|
|
4326
|
+
type: "object",
|
|
4327
|
+
additionalProperties: true
|
|
4328
|
+
}
|
|
4329
|
+
}
|
|
4330
|
+
}, "Movement timeline"),
|
|
4331
|
+
default: { $ref: "#/components/responses/Error" }
|
|
4332
|
+
}
|
|
4333
|
+
}
|
|
4334
|
+
},
|
|
4335
|
+
"/api/v1/movement/settings": {
|
|
4336
|
+
get: {
|
|
4337
|
+
summary: "Read movement capture settings",
|
|
4338
|
+
responses: {
|
|
4339
|
+
"200": jsonResponse({
|
|
4340
|
+
type: "object",
|
|
4341
|
+
required: ["settings"],
|
|
4342
|
+
properties: {
|
|
4343
|
+
settings: {
|
|
4344
|
+
type: "object",
|
|
4345
|
+
additionalProperties: true
|
|
4346
|
+
}
|
|
4347
|
+
}
|
|
4348
|
+
}, "Movement settings"),
|
|
4349
|
+
default: { $ref: "#/components/responses/Error" }
|
|
4350
|
+
}
|
|
4351
|
+
},
|
|
4352
|
+
patch: {
|
|
4353
|
+
summary: "Update movement capture settings",
|
|
4354
|
+
responses: {
|
|
4355
|
+
"200": jsonResponse({
|
|
4356
|
+
type: "object",
|
|
4357
|
+
required: ["settings"],
|
|
4358
|
+
properties: {
|
|
4359
|
+
settings: {
|
|
4360
|
+
type: "object",
|
|
4361
|
+
additionalProperties: true
|
|
4362
|
+
}
|
|
4363
|
+
}
|
|
4364
|
+
}, "Updated movement settings"),
|
|
4365
|
+
default: { $ref: "#/components/responses/Error" }
|
|
4366
|
+
}
|
|
4367
|
+
}
|
|
4368
|
+
},
|
|
4369
|
+
"/api/v1/movement/places": {
|
|
4370
|
+
get: {
|
|
4371
|
+
summary: "List known movement places",
|
|
4372
|
+
responses: {
|
|
4373
|
+
"200": jsonResponse({
|
|
4374
|
+
type: "object",
|
|
4375
|
+
required: ["places"],
|
|
4376
|
+
properties: {
|
|
4377
|
+
places: arrayOf({
|
|
4378
|
+
type: "object",
|
|
4379
|
+
additionalProperties: true
|
|
4380
|
+
})
|
|
4381
|
+
}
|
|
4382
|
+
}, "Movement places"),
|
|
4383
|
+
default: { $ref: "#/components/responses/Error" }
|
|
4384
|
+
}
|
|
4385
|
+
},
|
|
4386
|
+
post: {
|
|
4387
|
+
summary: "Create one user-defined movement place",
|
|
4388
|
+
responses: {
|
|
4389
|
+
"201": jsonResponse({
|
|
4390
|
+
type: "object",
|
|
4391
|
+
required: ["place"],
|
|
4392
|
+
properties: {
|
|
4393
|
+
place: {
|
|
4394
|
+
type: "object",
|
|
4395
|
+
additionalProperties: true
|
|
4396
|
+
}
|
|
4397
|
+
}
|
|
4398
|
+
}, "Created movement place"),
|
|
4399
|
+
default: { $ref: "#/components/responses/Error" }
|
|
4400
|
+
}
|
|
4401
|
+
}
|
|
4402
|
+
},
|
|
4403
|
+
"/api/v1/movement/places/{id}": {
|
|
4404
|
+
patch: {
|
|
4405
|
+
summary: "Update one known movement place",
|
|
4406
|
+
responses: {
|
|
4407
|
+
"200": jsonResponse({
|
|
4408
|
+
type: "object",
|
|
4409
|
+
required: ["place"],
|
|
4410
|
+
properties: {
|
|
4411
|
+
place: {
|
|
4412
|
+
type: "object",
|
|
4413
|
+
additionalProperties: true
|
|
4414
|
+
}
|
|
4415
|
+
}
|
|
4416
|
+
}, "Updated movement place"),
|
|
4417
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4418
|
+
}
|
|
4419
|
+
}
|
|
4420
|
+
},
|
|
4421
|
+
"/api/v1/movement/user-boxes": {
|
|
4422
|
+
post: {
|
|
4423
|
+
summary: "Create a user-defined movement overlay box such as a manual stay, trip, or missing-data override",
|
|
4424
|
+
responses: {
|
|
4425
|
+
"201": jsonResponse({
|
|
4426
|
+
type: "object",
|
|
4427
|
+
required: ["box"],
|
|
4428
|
+
properties: {
|
|
4429
|
+
box: {
|
|
4430
|
+
type: "object",
|
|
4431
|
+
additionalProperties: true
|
|
4432
|
+
}
|
|
4433
|
+
}
|
|
4434
|
+
}, "Created movement user box"),
|
|
4435
|
+
default: { $ref: "#/components/responses/Error" }
|
|
4436
|
+
}
|
|
4437
|
+
}
|
|
4438
|
+
},
|
|
4439
|
+
"/api/v1/movement/user-boxes/preflight": {
|
|
4440
|
+
post: {
|
|
4441
|
+
summary: "Analyze a proposed movement overlay before saving it, especially when replacing a missing gap or overlapping another box",
|
|
4442
|
+
responses: {
|
|
4443
|
+
"200": jsonResponse({
|
|
4444
|
+
type: "object",
|
|
4445
|
+
required: ["preflight"],
|
|
4446
|
+
properties: {
|
|
4447
|
+
preflight: {
|
|
4448
|
+
type: "object",
|
|
4449
|
+
additionalProperties: true
|
|
4450
|
+
}
|
|
4451
|
+
}
|
|
4452
|
+
}, "Movement user-box preflight"),
|
|
4453
|
+
default: { $ref: "#/components/responses/Error" }
|
|
4454
|
+
}
|
|
4455
|
+
}
|
|
4456
|
+
},
|
|
4457
|
+
"/api/v1/movement/user-boxes/{id}": {
|
|
4458
|
+
patch: {
|
|
4459
|
+
summary: "Update one user-defined movement overlay box",
|
|
4460
|
+
responses: {
|
|
4461
|
+
"200": jsonResponse({
|
|
4462
|
+
type: "object",
|
|
4463
|
+
required: ["box"],
|
|
4464
|
+
properties: {
|
|
4465
|
+
box: {
|
|
4466
|
+
type: "object",
|
|
4467
|
+
additionalProperties: true
|
|
4468
|
+
}
|
|
4469
|
+
}
|
|
4470
|
+
}, "Updated movement user box"),
|
|
4471
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4472
|
+
}
|
|
4473
|
+
},
|
|
4474
|
+
delete: {
|
|
4475
|
+
summary: "Delete one user-defined movement box",
|
|
4476
|
+
responses: {
|
|
4477
|
+
"200": jsonResponse({
|
|
4478
|
+
type: "object",
|
|
4479
|
+
additionalProperties: true
|
|
4480
|
+
}, "Deleted movement user box"),
|
|
4481
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4482
|
+
}
|
|
4483
|
+
}
|
|
4484
|
+
},
|
|
4485
|
+
"/api/v1/movement/automatic-boxes/{id}/invalidate": {
|
|
4486
|
+
post: {
|
|
4487
|
+
summary: "Hide one automatic movement box and project the resulting user-defined overlay",
|
|
4488
|
+
responses: {
|
|
4489
|
+
"201": jsonResponse({
|
|
4490
|
+
type: "object",
|
|
4491
|
+
required: ["box"],
|
|
4492
|
+
properties: {
|
|
4493
|
+
box: {
|
|
4494
|
+
type: "object",
|
|
4495
|
+
additionalProperties: true
|
|
4496
|
+
}
|
|
4497
|
+
}
|
|
4498
|
+
}, "Invalidated automatic movement box"),
|
|
4499
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4500
|
+
}
|
|
4501
|
+
}
|
|
4502
|
+
},
|
|
4503
|
+
"/api/v1/movement/stays/{id}": {
|
|
4504
|
+
patch: {
|
|
4505
|
+
summary: "Update one recorded movement stay",
|
|
4506
|
+
responses: {
|
|
4507
|
+
"200": jsonResponse({
|
|
4508
|
+
type: "object",
|
|
4509
|
+
required: ["stay"],
|
|
4510
|
+
properties: {
|
|
4511
|
+
stay: {
|
|
4512
|
+
type: "object",
|
|
4513
|
+
additionalProperties: true
|
|
4514
|
+
}
|
|
4515
|
+
}
|
|
4516
|
+
}, "Updated movement stay"),
|
|
4517
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4518
|
+
}
|
|
4519
|
+
},
|
|
4520
|
+
delete: {
|
|
4521
|
+
summary: "Delete one recorded movement stay",
|
|
4522
|
+
responses: {
|
|
4523
|
+
"200": jsonResponse({
|
|
4524
|
+
type: "object",
|
|
4525
|
+
additionalProperties: true
|
|
4526
|
+
}, "Deleted movement stay"),
|
|
4527
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4528
|
+
}
|
|
4529
|
+
}
|
|
4530
|
+
},
|
|
4531
|
+
"/api/v1/movement/trips/{id}": {
|
|
4532
|
+
get: {
|
|
4533
|
+
summary: "Read one movement trip with its full detail",
|
|
4534
|
+
responses: {
|
|
4535
|
+
"200": jsonResponse({
|
|
4536
|
+
type: "object",
|
|
4537
|
+
required: ["movement"],
|
|
4538
|
+
properties: {
|
|
4539
|
+
movement: {
|
|
4540
|
+
type: "object",
|
|
4541
|
+
additionalProperties: true
|
|
4542
|
+
}
|
|
4543
|
+
}
|
|
4544
|
+
}, "Movement trip detail"),
|
|
4545
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4546
|
+
}
|
|
4547
|
+
},
|
|
4548
|
+
patch: {
|
|
4549
|
+
summary: "Update one movement trip",
|
|
4550
|
+
responses: {
|
|
4551
|
+
"200": jsonResponse({
|
|
4552
|
+
type: "object",
|
|
4553
|
+
required: ["trip"],
|
|
4554
|
+
properties: {
|
|
4555
|
+
trip: {
|
|
4556
|
+
type: "object",
|
|
4557
|
+
additionalProperties: true
|
|
4558
|
+
}
|
|
4559
|
+
}
|
|
4560
|
+
}, "Updated movement trip"),
|
|
4561
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4562
|
+
}
|
|
4563
|
+
},
|
|
4564
|
+
delete: {
|
|
4565
|
+
summary: "Delete one movement trip",
|
|
4566
|
+
responses: {
|
|
4567
|
+
"200": jsonResponse({
|
|
4568
|
+
type: "object",
|
|
4569
|
+
additionalProperties: true
|
|
4570
|
+
}, "Deleted movement trip"),
|
|
4571
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4572
|
+
}
|
|
4573
|
+
}
|
|
4574
|
+
},
|
|
4575
|
+
"/api/v1/movement/trips/{id}/points/{pointId}": {
|
|
4576
|
+
patch: {
|
|
4577
|
+
summary: "Update one movement trip datapoint",
|
|
4578
|
+
responses: {
|
|
4579
|
+
"200": jsonResponse({
|
|
4580
|
+
type: "object",
|
|
4581
|
+
additionalProperties: true
|
|
4582
|
+
}, "Updated movement trip point"),
|
|
4583
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4584
|
+
}
|
|
4585
|
+
},
|
|
4586
|
+
delete: {
|
|
4587
|
+
summary: "Delete one movement trip datapoint",
|
|
4588
|
+
responses: {
|
|
4589
|
+
"200": jsonResponse({
|
|
4590
|
+
type: "object",
|
|
4591
|
+
additionalProperties: true
|
|
4592
|
+
}, "Deleted movement trip point"),
|
|
4593
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4594
|
+
}
|
|
4595
|
+
}
|
|
4596
|
+
},
|
|
4597
|
+
"/api/v1/movement/selection": {
|
|
4598
|
+
post: {
|
|
4599
|
+
summary: "Aggregate one selected movement range or set of segments",
|
|
4600
|
+
responses: {
|
|
4601
|
+
"200": jsonResponse({
|
|
4602
|
+
type: "object",
|
|
4603
|
+
required: ["movement"],
|
|
4604
|
+
properties: {
|
|
4605
|
+
movement: {
|
|
4606
|
+
type: "object",
|
|
4607
|
+
additionalProperties: true
|
|
4608
|
+
}
|
|
4609
|
+
}
|
|
4610
|
+
}, "Movement selection aggregate"),
|
|
4611
|
+
default: { $ref: "#/components/responses/Error" }
|
|
4612
|
+
}
|
|
4613
|
+
}
|
|
4614
|
+
},
|
|
4615
|
+
"/api/v1/workbench/catalog/boxes": {
|
|
4616
|
+
get: {
|
|
4617
|
+
summary: "List registered Workbench boxes and their contracts",
|
|
4618
|
+
responses: {
|
|
4619
|
+
"200": jsonResponse({
|
|
4620
|
+
type: "object",
|
|
4621
|
+
required: ["boxes"],
|
|
4622
|
+
properties: {
|
|
4623
|
+
boxes: arrayOf({
|
|
4624
|
+
type: "object",
|
|
4625
|
+
additionalProperties: true
|
|
4626
|
+
})
|
|
4627
|
+
}
|
|
4628
|
+
}, "Workbench box catalog"),
|
|
4629
|
+
default: { $ref: "#/components/responses/Error" }
|
|
4630
|
+
}
|
|
4631
|
+
}
|
|
4632
|
+
},
|
|
4633
|
+
"/api/v1/workbench/flows": {
|
|
4634
|
+
get: {
|
|
4635
|
+
summary: "List Workbench flows and recent execution summaries",
|
|
4636
|
+
responses: {
|
|
4637
|
+
"200": jsonResponse({
|
|
4638
|
+
type: "object",
|
|
4639
|
+
required: ["flows"],
|
|
4640
|
+
properties: {
|
|
4641
|
+
flows: arrayOf({
|
|
4642
|
+
type: "object",
|
|
4643
|
+
additionalProperties: true
|
|
4644
|
+
})
|
|
4645
|
+
}
|
|
4646
|
+
}, "Workbench flow collection"),
|
|
4647
|
+
default: { $ref: "#/components/responses/Error" }
|
|
4648
|
+
}
|
|
4649
|
+
},
|
|
4650
|
+
post: {
|
|
4651
|
+
summary: "Create one Workbench flow",
|
|
4652
|
+
responses: {
|
|
4653
|
+
"201": jsonResponse({
|
|
4654
|
+
type: "object",
|
|
4655
|
+
required: ["flow"],
|
|
4656
|
+
properties: {
|
|
4657
|
+
flow: {
|
|
4658
|
+
type: "object",
|
|
4659
|
+
additionalProperties: true
|
|
4660
|
+
}
|
|
4661
|
+
}
|
|
4662
|
+
}, "Created Workbench flow"),
|
|
4663
|
+
default: { $ref: "#/components/responses/Error" }
|
|
4664
|
+
}
|
|
4665
|
+
}
|
|
4666
|
+
},
|
|
4667
|
+
"/api/v1/workbench/flows/{id}": {
|
|
4668
|
+
get: {
|
|
4669
|
+
summary: "Read one Workbench flow with runs",
|
|
4670
|
+
responses: {
|
|
4671
|
+
"200": jsonResponse({
|
|
4672
|
+
type: "object",
|
|
4673
|
+
required: ["flow", "runs"],
|
|
4674
|
+
properties: {
|
|
4675
|
+
flow: {
|
|
4676
|
+
type: "object",
|
|
4677
|
+
additionalProperties: true
|
|
4678
|
+
},
|
|
4679
|
+
runs: arrayOf({
|
|
4680
|
+
type: "object",
|
|
4681
|
+
additionalProperties: true
|
|
4682
|
+
})
|
|
4683
|
+
}
|
|
4684
|
+
}, "Workbench flow detail"),
|
|
4685
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4686
|
+
}
|
|
4687
|
+
},
|
|
4688
|
+
patch: {
|
|
4689
|
+
summary: "Update one Workbench flow",
|
|
4690
|
+
responses: {
|
|
4691
|
+
"200": jsonResponse({
|
|
4692
|
+
type: "object",
|
|
4693
|
+
required: ["flow"],
|
|
4694
|
+
properties: {
|
|
4695
|
+
flow: {
|
|
4696
|
+
type: "object",
|
|
4697
|
+
additionalProperties: true
|
|
4698
|
+
}
|
|
4699
|
+
}
|
|
4700
|
+
}, "Updated Workbench flow"),
|
|
4701
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4702
|
+
}
|
|
4703
|
+
},
|
|
4704
|
+
delete: {
|
|
4705
|
+
summary: "Delete one Workbench flow",
|
|
4706
|
+
responses: {
|
|
4707
|
+
"200": jsonResponse({
|
|
4708
|
+
type: "object",
|
|
4709
|
+
additionalProperties: true
|
|
4710
|
+
}, "Deleted Workbench flow"),
|
|
4711
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4712
|
+
}
|
|
4713
|
+
}
|
|
4714
|
+
},
|
|
4715
|
+
"/api/v1/workbench/flows/by-slug/{slug}": {
|
|
4716
|
+
get: {
|
|
4717
|
+
summary: "Read one Workbench flow by slug",
|
|
4718
|
+
responses: {
|
|
4719
|
+
"200": jsonResponse({
|
|
4720
|
+
type: "object",
|
|
4721
|
+
required: ["flow"],
|
|
4722
|
+
properties: {
|
|
4723
|
+
flow: {
|
|
4724
|
+
type: "object",
|
|
4725
|
+
additionalProperties: true
|
|
4726
|
+
}
|
|
4727
|
+
}
|
|
4728
|
+
}, "Workbench flow by slug"),
|
|
4729
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4730
|
+
}
|
|
4731
|
+
}
|
|
4732
|
+
},
|
|
4733
|
+
"/api/v1/workbench/flows/{id}/run": {
|
|
4734
|
+
post: {
|
|
4735
|
+
summary: "Run one Workbench flow by id",
|
|
4736
|
+
responses: {
|
|
4737
|
+
"200": jsonResponse({
|
|
4738
|
+
type: "object",
|
|
4739
|
+
required: ["flow", "run", "conversation"],
|
|
4740
|
+
properties: {
|
|
4741
|
+
flow: {
|
|
4742
|
+
type: "object",
|
|
4743
|
+
additionalProperties: true
|
|
4744
|
+
},
|
|
4745
|
+
run: {
|
|
4746
|
+
type: "object",
|
|
4747
|
+
additionalProperties: true
|
|
4748
|
+
},
|
|
4749
|
+
conversation: {
|
|
4750
|
+
type: "object",
|
|
4751
|
+
additionalProperties: true
|
|
4752
|
+
}
|
|
4753
|
+
}
|
|
4754
|
+
}, "Workbench flow execution"),
|
|
4755
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4756
|
+
}
|
|
4757
|
+
}
|
|
4758
|
+
},
|
|
4759
|
+
"/api/v1/workbench/run": {
|
|
4760
|
+
post: {
|
|
4761
|
+
summary: "Run one Workbench flow by payload with flowId",
|
|
4762
|
+
responses: {
|
|
4763
|
+
"200": jsonResponse({
|
|
4764
|
+
type: "object",
|
|
4765
|
+
required: ["flow", "run", "conversation"],
|
|
4766
|
+
properties: {
|
|
4767
|
+
flow: {
|
|
4768
|
+
type: "object",
|
|
4769
|
+
additionalProperties: true
|
|
4770
|
+
},
|
|
4771
|
+
run: {
|
|
4772
|
+
type: "object",
|
|
4773
|
+
additionalProperties: true
|
|
4774
|
+
},
|
|
4775
|
+
conversation: {
|
|
4776
|
+
type: "object",
|
|
4777
|
+
additionalProperties: true
|
|
4778
|
+
}
|
|
4779
|
+
}
|
|
4780
|
+
}, "Workbench flow execution"),
|
|
4781
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4782
|
+
}
|
|
4783
|
+
}
|
|
4784
|
+
},
|
|
4785
|
+
"/api/v1/workbench/flows/{id}/chat": {
|
|
4786
|
+
post: {
|
|
4787
|
+
summary: "Continue or start one Workbench chat flow",
|
|
4788
|
+
responses: {
|
|
4789
|
+
"200": jsonResponse({
|
|
4790
|
+
type: "object",
|
|
4791
|
+
additionalProperties: true
|
|
4792
|
+
}, "Workbench chat response"),
|
|
4793
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4794
|
+
}
|
|
4795
|
+
}
|
|
4796
|
+
},
|
|
4797
|
+
"/api/v1/workbench/flows/{id}/output": {
|
|
4798
|
+
get: {
|
|
4799
|
+
summary: "Read the latest published whole-flow output",
|
|
4800
|
+
responses: {
|
|
4801
|
+
"200": jsonResponse({
|
|
4802
|
+
type: "object",
|
|
4803
|
+
additionalProperties: true
|
|
4804
|
+
}, "Workbench published output"),
|
|
4805
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4806
|
+
}
|
|
4807
|
+
}
|
|
4808
|
+
},
|
|
4809
|
+
"/api/v1/workbench/flows/{id}/runs": {
|
|
4810
|
+
get: {
|
|
4811
|
+
summary: "List Workbench runs for one flow",
|
|
4812
|
+
responses: {
|
|
4813
|
+
"200": jsonResponse({
|
|
4814
|
+
type: "object",
|
|
4815
|
+
required: ["flow", "runs"],
|
|
4816
|
+
properties: {
|
|
4817
|
+
flow: {
|
|
4818
|
+
type: "object",
|
|
4819
|
+
additionalProperties: true
|
|
4820
|
+
},
|
|
4821
|
+
runs: arrayOf({
|
|
4822
|
+
type: "object",
|
|
4823
|
+
additionalProperties: true
|
|
4824
|
+
})
|
|
4825
|
+
}
|
|
4826
|
+
}, "Workbench run list"),
|
|
4827
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4828
|
+
}
|
|
4829
|
+
}
|
|
4830
|
+
},
|
|
4831
|
+
"/api/v1/workbench/flows/{id}/runs/{runId}": {
|
|
4832
|
+
get: {
|
|
4833
|
+
summary: "Read one Workbench run detail",
|
|
4834
|
+
responses: {
|
|
4835
|
+
"200": jsonResponse({
|
|
4836
|
+
type: "object",
|
|
4837
|
+
required: ["flow", "run"],
|
|
4838
|
+
properties: {
|
|
4839
|
+
flow: {
|
|
4840
|
+
type: "object",
|
|
4841
|
+
additionalProperties: true
|
|
4842
|
+
},
|
|
4843
|
+
run: {
|
|
4844
|
+
type: "object",
|
|
4845
|
+
additionalProperties: true
|
|
4846
|
+
}
|
|
4847
|
+
}
|
|
4848
|
+
}, "Workbench run detail"),
|
|
4849
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4850
|
+
}
|
|
4851
|
+
}
|
|
4852
|
+
},
|
|
4853
|
+
"/api/v1/workbench/flows/{id}/runs/{runId}/nodes": {
|
|
4854
|
+
get: {
|
|
4855
|
+
summary: "List node results for one Workbench run",
|
|
4856
|
+
responses: {
|
|
4857
|
+
"200": jsonResponse({
|
|
4858
|
+
type: "object",
|
|
4859
|
+
required: ["flow", "run", "nodeResults"],
|
|
4860
|
+
properties: {
|
|
4861
|
+
flow: {
|
|
4862
|
+
type: "object",
|
|
4863
|
+
additionalProperties: true
|
|
4864
|
+
},
|
|
4865
|
+
run: {
|
|
4866
|
+
type: "object",
|
|
4867
|
+
additionalProperties: true
|
|
4868
|
+
},
|
|
4869
|
+
nodeResults: arrayOf({
|
|
4870
|
+
type: "object",
|
|
4871
|
+
additionalProperties: true
|
|
4872
|
+
})
|
|
4873
|
+
}
|
|
4874
|
+
}, "Workbench node results"),
|
|
4875
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4876
|
+
}
|
|
4877
|
+
}
|
|
4878
|
+
},
|
|
4879
|
+
"/api/v1/workbench/flows/{id}/runs/{runId}/nodes/{nodeId}": {
|
|
4880
|
+
get: {
|
|
4881
|
+
summary: "Read one node result for one Workbench run",
|
|
4882
|
+
responses: {
|
|
4883
|
+
"200": jsonResponse({
|
|
4884
|
+
type: "object",
|
|
4885
|
+
required: ["flow", "nodeResult"],
|
|
4886
|
+
properties: {
|
|
4887
|
+
flow: {
|
|
4888
|
+
type: "object",
|
|
4889
|
+
additionalProperties: true
|
|
4890
|
+
},
|
|
4891
|
+
nodeResult: {
|
|
4892
|
+
type: "object",
|
|
4893
|
+
additionalProperties: true
|
|
4894
|
+
}
|
|
4895
|
+
}
|
|
4896
|
+
}, "Workbench node result"),
|
|
4897
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4898
|
+
}
|
|
4899
|
+
}
|
|
4900
|
+
},
|
|
4901
|
+
"/api/v1/workbench/flows/{id}/nodes/{nodeId}/output": {
|
|
4902
|
+
get: {
|
|
4903
|
+
summary: "Read the latest successful output for one Workbench node",
|
|
4904
|
+
responses: {
|
|
4905
|
+
"200": jsonResponse({
|
|
4906
|
+
type: "object",
|
|
4907
|
+
required: ["flow", "run", "nodeResult"],
|
|
4908
|
+
properties: {
|
|
4909
|
+
flow: {
|
|
4910
|
+
type: "object",
|
|
4911
|
+
additionalProperties: true
|
|
4912
|
+
},
|
|
4913
|
+
run: {
|
|
4914
|
+
type: "object",
|
|
4915
|
+
additionalProperties: true
|
|
4916
|
+
},
|
|
4917
|
+
nodeResult: {
|
|
4918
|
+
type: "object",
|
|
4919
|
+
additionalProperties: true
|
|
4920
|
+
}
|
|
4921
|
+
}
|
|
4922
|
+
}, "Workbench latest node output"),
|
|
4923
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4924
|
+
}
|
|
4925
|
+
}
|
|
4926
|
+
},
|
|
4927
|
+
"/api/v1/wiki/settings": {
|
|
4928
|
+
get: {
|
|
4929
|
+
summary: "Read wiki spaces plus enabled LLM and embedding profiles",
|
|
4930
|
+
responses: {
|
|
4931
|
+
"200": jsonResponse({
|
|
4932
|
+
type: "object",
|
|
4933
|
+
required: ["settings"],
|
|
4934
|
+
properties: {
|
|
4935
|
+
settings: {
|
|
4936
|
+
type: "object",
|
|
4937
|
+
additionalProperties: true
|
|
4938
|
+
}
|
|
4939
|
+
}
|
|
4940
|
+
}, "Wiki settings")
|
|
4941
|
+
}
|
|
4942
|
+
}
|
|
4943
|
+
},
|
|
4944
|
+
"/api/v1/wiki/pages": {
|
|
4945
|
+
get: {
|
|
4946
|
+
summary: "List wiki or evidence pages inside one space",
|
|
4947
|
+
responses: {
|
|
4948
|
+
"200": jsonResponse({
|
|
4949
|
+
type: "object",
|
|
4950
|
+
required: ["pages"],
|
|
4951
|
+
properties: {
|
|
4952
|
+
pages: arrayOf({
|
|
4953
|
+
type: "object",
|
|
4954
|
+
additionalProperties: true
|
|
4955
|
+
})
|
|
4956
|
+
}
|
|
4957
|
+
}, "Wiki page list")
|
|
4958
|
+
}
|
|
4959
|
+
},
|
|
4960
|
+
post: {
|
|
4961
|
+
summary: "Create a wiki page through the file-backed wiki surface",
|
|
4962
|
+
responses: {
|
|
4963
|
+
"200": jsonResponse({
|
|
4964
|
+
type: "object",
|
|
4965
|
+
required: ["page"],
|
|
4966
|
+
properties: {
|
|
4967
|
+
page: { type: "object", additionalProperties: true }
|
|
4968
|
+
}
|
|
4969
|
+
}, "Created wiki page"),
|
|
4970
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4971
|
+
}
|
|
4972
|
+
}
|
|
4973
|
+
},
|
|
4974
|
+
"/api/v1/wiki/pages/{id}": {
|
|
4975
|
+
get: {
|
|
4976
|
+
summary: "Read one wiki page with backlinks and attached metadata",
|
|
4977
|
+
responses: {
|
|
4978
|
+
"200": jsonResponse({
|
|
4979
|
+
type: "object",
|
|
4980
|
+
required: ["page"],
|
|
4981
|
+
properties: {
|
|
4982
|
+
page: { type: "object", additionalProperties: true }
|
|
4983
|
+
}
|
|
4984
|
+
}, "Wiki page detail"),
|
|
4985
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4986
|
+
}
|
|
4987
|
+
},
|
|
4988
|
+
patch: {
|
|
4989
|
+
summary: "Update an existing wiki page through the file-backed surface",
|
|
4990
|
+
responses: {
|
|
4991
|
+
"200": jsonResponse({
|
|
4992
|
+
type: "object",
|
|
4993
|
+
required: ["page"],
|
|
4994
|
+
properties: {
|
|
4995
|
+
page: { type: "object", additionalProperties: true }
|
|
4996
|
+
}
|
|
4997
|
+
}, "Updated wiki page"),
|
|
4998
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
4999
|
+
}
|
|
5000
|
+
}
|
|
5001
|
+
},
|
|
5002
|
+
"/api/v1/wiki/search": {
|
|
5003
|
+
post: {
|
|
5004
|
+
summary: "Search the wiki with text, semantic, entity, or hybrid retrieval",
|
|
5005
|
+
responses: {
|
|
5006
|
+
"200": jsonResponse({
|
|
5007
|
+
type: "object",
|
|
5008
|
+
required: ["results"],
|
|
5009
|
+
properties: {
|
|
5010
|
+
results: arrayOf({
|
|
5011
|
+
type: "object",
|
|
5012
|
+
additionalProperties: true
|
|
5013
|
+
})
|
|
5014
|
+
}
|
|
5015
|
+
}, "Wiki search results")
|
|
5016
|
+
}
|
|
5017
|
+
}
|
|
5018
|
+
},
|
|
5019
|
+
"/api/v1/wiki/health": {
|
|
5020
|
+
get: {
|
|
5021
|
+
summary: "Read wiki health signals for one space",
|
|
5022
|
+
responses: {
|
|
5023
|
+
"200": jsonResponse({
|
|
5024
|
+
type: "object",
|
|
5025
|
+
required: ["health"],
|
|
5026
|
+
properties: {
|
|
5027
|
+
health: { type: "object", additionalProperties: true }
|
|
5028
|
+
}
|
|
5029
|
+
}, "Wiki health")
|
|
5030
|
+
}
|
|
5031
|
+
}
|
|
5032
|
+
},
|
|
5033
|
+
"/api/v1/wiki/sync": {
|
|
5034
|
+
post: {
|
|
5035
|
+
summary: "Resync markdown files from the local wiki vault into Forge metadata",
|
|
5036
|
+
responses: {
|
|
5037
|
+
"200": jsonResponse({
|
|
5038
|
+
type: "object",
|
|
5039
|
+
additionalProperties: true
|
|
5040
|
+
}, "Wiki sync result")
|
|
5041
|
+
}
|
|
5042
|
+
}
|
|
5043
|
+
},
|
|
5044
|
+
"/api/v1/wiki/reindex": {
|
|
5045
|
+
post: {
|
|
5046
|
+
summary: "Recompute wiki embedding chunks for one space and optional profile",
|
|
5047
|
+
responses: {
|
|
5048
|
+
"200": jsonResponse({
|
|
5049
|
+
type: "object",
|
|
5050
|
+
additionalProperties: true
|
|
5051
|
+
}, "Wiki reindex result")
|
|
5052
|
+
}
|
|
5053
|
+
}
|
|
5054
|
+
},
|
|
5055
|
+
"/api/v1/wiki/ingest-jobs": {
|
|
5056
|
+
post: {
|
|
5057
|
+
summary: "Queue a wiki ingest job from raw text, local files, or a URL",
|
|
5058
|
+
responses: {
|
|
5059
|
+
"200": jsonResponse({
|
|
5060
|
+
type: "object",
|
|
5061
|
+
additionalProperties: true
|
|
5062
|
+
}, "Queued wiki ingest job")
|
|
5063
|
+
}
|
|
5064
|
+
}
|
|
5065
|
+
},
|
|
5066
|
+
"/api/v1/context": {
|
|
5067
|
+
get: {
|
|
5068
|
+
summary: "Get the full Forge snapshot for the routed app shell",
|
|
5069
|
+
responses: {
|
|
5070
|
+
"200": jsonResponse({ $ref: "#/components/schemas/ForgeSnapshot" }, "Forge snapshot"),
|
|
5071
|
+
default: { $ref: "#/components/responses/Error" }
|
|
5072
|
+
}
|
|
5073
|
+
}
|
|
5074
|
+
},
|
|
5075
|
+
"/api/v1/operator/context": {
|
|
5076
|
+
get: {
|
|
5077
|
+
summary: "Get the operator-focused Forge context for agents and assistant workflows",
|
|
5078
|
+
responses: {
|
|
5079
|
+
"200": jsonResponse({
|
|
5080
|
+
type: "object",
|
|
5081
|
+
required: ["context"],
|
|
5082
|
+
properties: {
|
|
5083
|
+
context: {
|
|
5084
|
+
$ref: "#/components/schemas/OperatorContextPayload"
|
|
5085
|
+
}
|
|
5086
|
+
}
|
|
5087
|
+
}, "Operator context")
|
|
5088
|
+
}
|
|
5089
|
+
}
|
|
5090
|
+
},
|
|
5091
|
+
"/api/v1/users/directory": {
|
|
5092
|
+
get: {
|
|
5093
|
+
summary: "Read the live human and bot directory with ownership summaries and directional relationship graph",
|
|
5094
|
+
responses: {
|
|
5095
|
+
"200": jsonResponse({
|
|
5096
|
+
type: "object",
|
|
5097
|
+
required: ["directory"],
|
|
5098
|
+
properties: {
|
|
5099
|
+
directory: {
|
|
5100
|
+
type: "object",
|
|
5101
|
+
additionalProperties: true
|
|
5102
|
+
}
|
|
5103
|
+
}
|
|
5104
|
+
}, "User directory")
|
|
5105
|
+
}
|
|
5106
|
+
}
|
|
5107
|
+
},
|
|
5108
|
+
"/api/v1/preferences/workspace": {
|
|
5109
|
+
get: {
|
|
5110
|
+
summary: "Get the inferred Preferences workspace for one user, domain, and optional context",
|
|
5111
|
+
responses: {
|
|
5112
|
+
"200": jsonResponse({
|
|
5113
|
+
type: "object",
|
|
5114
|
+
required: ["workspace"],
|
|
5115
|
+
properties: {
|
|
5116
|
+
workspace: {
|
|
4082
5117
|
type: "object",
|
|
4083
5118
|
additionalProperties: true
|
|
4084
5119
|
}
|
|
@@ -4107,6 +5142,22 @@ export function buildOpenApiDocument() {
|
|
|
4107
5142
|
}
|
|
4108
5143
|
},
|
|
4109
5144
|
"/api/v1/preferences/catalogs": {
|
|
5145
|
+
get: {
|
|
5146
|
+
summary: "List Preferences concept lists",
|
|
5147
|
+
responses: {
|
|
5148
|
+
"200": jsonResponse({
|
|
5149
|
+
type: "object",
|
|
5150
|
+
required: ["catalogs"],
|
|
5151
|
+
properties: {
|
|
5152
|
+
catalogs: arrayOf({
|
|
5153
|
+
type: "object",
|
|
5154
|
+
additionalProperties: true
|
|
5155
|
+
})
|
|
5156
|
+
}
|
|
5157
|
+
}, "Preferences catalogs"),
|
|
5158
|
+
default: { $ref: "#/components/responses/Error" }
|
|
5159
|
+
}
|
|
5160
|
+
},
|
|
4110
5161
|
post: {
|
|
4111
5162
|
summary: "Create a Preferences concept list",
|
|
4112
5163
|
responses: {
|
|
@@ -4125,6 +5176,22 @@ export function buildOpenApiDocument() {
|
|
|
4125
5176
|
}
|
|
4126
5177
|
},
|
|
4127
5178
|
"/api/v1/preferences/catalogs/{id}": {
|
|
5179
|
+
get: {
|
|
5180
|
+
summary: "Get one Preferences concept list",
|
|
5181
|
+
responses: {
|
|
5182
|
+
"200": jsonResponse({
|
|
5183
|
+
type: "object",
|
|
5184
|
+
required: ["catalog"],
|
|
5185
|
+
properties: {
|
|
5186
|
+
catalog: {
|
|
5187
|
+
type: "object",
|
|
5188
|
+
additionalProperties: true
|
|
5189
|
+
}
|
|
5190
|
+
}
|
|
5191
|
+
}, "Preferences catalog"),
|
|
5192
|
+
default: { $ref: "#/components/responses/Error" }
|
|
5193
|
+
}
|
|
5194
|
+
},
|
|
4128
5195
|
patch: {
|
|
4129
5196
|
summary: "Update a Preferences concept list",
|
|
4130
5197
|
responses: {
|
|
@@ -4159,6 +5226,22 @@ export function buildOpenApiDocument() {
|
|
|
4159
5226
|
}
|
|
4160
5227
|
},
|
|
4161
5228
|
"/api/v1/preferences/catalog-items": {
|
|
5229
|
+
get: {
|
|
5230
|
+
summary: "List Preferences concept entries",
|
|
5231
|
+
responses: {
|
|
5232
|
+
"200": jsonResponse({
|
|
5233
|
+
type: "object",
|
|
5234
|
+
required: ["items"],
|
|
5235
|
+
properties: {
|
|
5236
|
+
items: arrayOf({
|
|
5237
|
+
type: "object",
|
|
5238
|
+
additionalProperties: true
|
|
5239
|
+
})
|
|
5240
|
+
}
|
|
5241
|
+
}, "Preferences catalog items"),
|
|
5242
|
+
default: { $ref: "#/components/responses/Error" }
|
|
5243
|
+
}
|
|
5244
|
+
},
|
|
4162
5245
|
post: {
|
|
4163
5246
|
summary: "Create a Preferences concept entry",
|
|
4164
5247
|
responses: {
|
|
@@ -4177,6 +5260,22 @@ export function buildOpenApiDocument() {
|
|
|
4177
5260
|
}
|
|
4178
5261
|
},
|
|
4179
5262
|
"/api/v1/preferences/catalog-items/{id}": {
|
|
5263
|
+
get: {
|
|
5264
|
+
summary: "Get one Preferences concept entry",
|
|
5265
|
+
responses: {
|
|
5266
|
+
"200": jsonResponse({
|
|
5267
|
+
type: "object",
|
|
5268
|
+
required: ["item"],
|
|
5269
|
+
properties: {
|
|
5270
|
+
item: {
|
|
5271
|
+
type: "object",
|
|
5272
|
+
additionalProperties: true
|
|
5273
|
+
}
|
|
5274
|
+
}
|
|
5275
|
+
}, "Preferences catalog item"),
|
|
5276
|
+
default: { $ref: "#/components/responses/Error" }
|
|
5277
|
+
}
|
|
5278
|
+
},
|
|
4180
5279
|
patch: {
|
|
4181
5280
|
summary: "Update a Preferences concept entry",
|
|
4182
5281
|
responses: {
|
|
@@ -4211,6 +5310,22 @@ export function buildOpenApiDocument() {
|
|
|
4211
5310
|
}
|
|
4212
5311
|
},
|
|
4213
5312
|
"/api/v1/preferences/contexts": {
|
|
5313
|
+
get: {
|
|
5314
|
+
summary: "List Preferences contexts",
|
|
5315
|
+
responses: {
|
|
5316
|
+
"200": jsonResponse({
|
|
5317
|
+
type: "object",
|
|
5318
|
+
required: ["contexts"],
|
|
5319
|
+
properties: {
|
|
5320
|
+
contexts: arrayOf({
|
|
5321
|
+
type: "object",
|
|
5322
|
+
additionalProperties: true
|
|
5323
|
+
})
|
|
5324
|
+
}
|
|
5325
|
+
}, "Preferences contexts"),
|
|
5326
|
+
default: { $ref: "#/components/responses/Error" }
|
|
5327
|
+
}
|
|
5328
|
+
},
|
|
4214
5329
|
post: {
|
|
4215
5330
|
summary: "Create a Preferences context",
|
|
4216
5331
|
responses: {
|
|
@@ -4229,6 +5344,22 @@ export function buildOpenApiDocument() {
|
|
|
4229
5344
|
}
|
|
4230
5345
|
},
|
|
4231
5346
|
"/api/v1/preferences/contexts/{id}": {
|
|
5347
|
+
get: {
|
|
5348
|
+
summary: "Get one Preferences context",
|
|
5349
|
+
responses: {
|
|
5350
|
+
"200": jsonResponse({
|
|
5351
|
+
type: "object",
|
|
5352
|
+
required: ["context"],
|
|
5353
|
+
properties: {
|
|
5354
|
+
context: {
|
|
5355
|
+
type: "object",
|
|
5356
|
+
additionalProperties: true
|
|
5357
|
+
}
|
|
5358
|
+
}
|
|
5359
|
+
}, "Preferences context"),
|
|
5360
|
+
default: { $ref: "#/components/responses/Error" }
|
|
5361
|
+
}
|
|
5362
|
+
},
|
|
4232
5363
|
patch: {
|
|
4233
5364
|
summary: "Update a Preferences context",
|
|
4234
5365
|
responses: {
|
|
@@ -4244,6 +5375,22 @@ export function buildOpenApiDocument() {
|
|
|
4244
5375
|
}, "Updated Preferences context"),
|
|
4245
5376
|
default: { $ref: "#/components/responses/Error" }
|
|
4246
5377
|
}
|
|
5378
|
+
},
|
|
5379
|
+
delete: {
|
|
5380
|
+
summary: "Delete a Preferences context",
|
|
5381
|
+
responses: {
|
|
5382
|
+
"200": jsonResponse({
|
|
5383
|
+
type: "object",
|
|
5384
|
+
required: ["context"],
|
|
5385
|
+
properties: {
|
|
5386
|
+
context: {
|
|
5387
|
+
type: "object",
|
|
5388
|
+
additionalProperties: true
|
|
5389
|
+
}
|
|
5390
|
+
}
|
|
5391
|
+
}, "Deleted Preferences context"),
|
|
5392
|
+
default: { $ref: "#/components/responses/Error" }
|
|
5393
|
+
}
|
|
4247
5394
|
}
|
|
4248
5395
|
},
|
|
4249
5396
|
"/api/v1/preferences/contexts/merge": {
|
|
@@ -4265,6 +5412,22 @@ export function buildOpenApiDocument() {
|
|
|
4265
5412
|
}
|
|
4266
5413
|
},
|
|
4267
5414
|
"/api/v1/preferences/items": {
|
|
5415
|
+
get: {
|
|
5416
|
+
summary: "List Preferences items",
|
|
5417
|
+
responses: {
|
|
5418
|
+
"200": jsonResponse({
|
|
5419
|
+
type: "object",
|
|
5420
|
+
required: ["items"],
|
|
5421
|
+
properties: {
|
|
5422
|
+
items: arrayOf({
|
|
5423
|
+
type: "object",
|
|
5424
|
+
additionalProperties: true
|
|
5425
|
+
})
|
|
5426
|
+
}
|
|
5427
|
+
}, "Preferences items"),
|
|
5428
|
+
default: { $ref: "#/components/responses/Error" }
|
|
5429
|
+
}
|
|
5430
|
+
},
|
|
4268
5431
|
post: {
|
|
4269
5432
|
summary: "Create a standalone Preferences item",
|
|
4270
5433
|
responses: {
|
|
@@ -4283,6 +5446,22 @@ export function buildOpenApiDocument() {
|
|
|
4283
5446
|
}
|
|
4284
5447
|
},
|
|
4285
5448
|
"/api/v1/preferences/items/{id}": {
|
|
5449
|
+
get: {
|
|
5450
|
+
summary: "Get one Preferences item",
|
|
5451
|
+
responses: {
|
|
5452
|
+
"200": jsonResponse({
|
|
5453
|
+
type: "object",
|
|
5454
|
+
required: ["item"],
|
|
5455
|
+
properties: {
|
|
5456
|
+
item: {
|
|
5457
|
+
type: "object",
|
|
5458
|
+
additionalProperties: true
|
|
5459
|
+
}
|
|
5460
|
+
}
|
|
5461
|
+
}, "Preferences item"),
|
|
5462
|
+
default: { $ref: "#/components/responses/Error" }
|
|
5463
|
+
}
|
|
5464
|
+
},
|
|
4286
5465
|
patch: {
|
|
4287
5466
|
summary: "Update a Preferences item",
|
|
4288
5467
|
responses: {
|
|
@@ -4298,6 +5477,22 @@ export function buildOpenApiDocument() {
|
|
|
4298
5477
|
}, "Updated Preferences item"),
|
|
4299
5478
|
default: { $ref: "#/components/responses/Error" }
|
|
4300
5479
|
}
|
|
5480
|
+
},
|
|
5481
|
+
delete: {
|
|
5482
|
+
summary: "Delete a Preferences item",
|
|
5483
|
+
responses: {
|
|
5484
|
+
"200": jsonResponse({
|
|
5485
|
+
type: "object",
|
|
5486
|
+
required: ["item"],
|
|
5487
|
+
properties: {
|
|
5488
|
+
item: {
|
|
5489
|
+
type: "object",
|
|
5490
|
+
additionalProperties: true
|
|
5491
|
+
}
|
|
5492
|
+
}
|
|
5493
|
+
}, "Deleted Preferences item"),
|
|
5494
|
+
default: { $ref: "#/components/responses/Error" }
|
|
5495
|
+
}
|
|
4301
5496
|
}
|
|
4302
5497
|
},
|
|
4303
5498
|
"/api/v1/preferences/items/from-entity": {
|
|
@@ -4422,6 +5617,38 @@ export function buildOpenApiDocument() {
|
|
|
4422
5617
|
}, "Questionnaire instrument detail"),
|
|
4423
5618
|
default: { $ref: "#/components/responses/Error" }
|
|
4424
5619
|
}
|
|
5620
|
+
},
|
|
5621
|
+
patch: {
|
|
5622
|
+
summary: "Update one questionnaire instrument through the direct route",
|
|
5623
|
+
responses: {
|
|
5624
|
+
"200": jsonResponse({
|
|
5625
|
+
type: "object",
|
|
5626
|
+
required: ["instrument"],
|
|
5627
|
+
properties: {
|
|
5628
|
+
instrument: {
|
|
5629
|
+
type: "object",
|
|
5630
|
+
additionalProperties: true
|
|
5631
|
+
}
|
|
5632
|
+
}
|
|
5633
|
+
}, "Updated questionnaire instrument"),
|
|
5634
|
+
default: { $ref: "#/components/responses/Error" }
|
|
5635
|
+
}
|
|
5636
|
+
},
|
|
5637
|
+
delete: {
|
|
5638
|
+
summary: "Archive one questionnaire instrument through the direct route",
|
|
5639
|
+
responses: {
|
|
5640
|
+
"200": jsonResponse({
|
|
5641
|
+
type: "object",
|
|
5642
|
+
required: ["instrument"],
|
|
5643
|
+
properties: {
|
|
5644
|
+
instrument: {
|
|
5645
|
+
type: "object",
|
|
5646
|
+
additionalProperties: true
|
|
5647
|
+
}
|
|
5648
|
+
}
|
|
5649
|
+
}, "Archived questionnaire instrument"),
|
|
5650
|
+
default: { $ref: "#/components/responses/Error" }
|
|
5651
|
+
}
|
|
4425
5652
|
}
|
|
4426
5653
|
},
|
|
4427
5654
|
"/api/v1/psyche/questionnaires/{id}/clone": {
|
|
@@ -5611,6 +6838,21 @@ export function buildOpenApiDocument() {
|
|
|
5611
6838
|
}
|
|
5612
6839
|
}
|
|
5613
6840
|
},
|
|
6841
|
+
"/api/v1/calendar/work-block-templates/{id}": {
|
|
6842
|
+
get: {
|
|
6843
|
+
summary: "Get one recurring work-block template",
|
|
6844
|
+
responses: {
|
|
6845
|
+
"200": jsonResponse({
|
|
6846
|
+
type: "object",
|
|
6847
|
+
required: ["template"],
|
|
6848
|
+
properties: {
|
|
6849
|
+
template: { $ref: "#/components/schemas/WorkBlockTemplate" }
|
|
6850
|
+
}
|
|
6851
|
+
}, "Work-block template"),
|
|
6852
|
+
default: { $ref: "#/components/responses/Error" }
|
|
6853
|
+
}
|
|
6854
|
+
}
|
|
6855
|
+
},
|
|
5614
6856
|
"/api/v1/calendar/timeboxes": {
|
|
5615
6857
|
get: {
|
|
5616
6858
|
summary: "List task timeboxes",
|
|
@@ -5641,6 +6883,21 @@ export function buildOpenApiDocument() {
|
|
|
5641
6883
|
}
|
|
5642
6884
|
}
|
|
5643
6885
|
},
|
|
6886
|
+
"/api/v1/calendar/timeboxes/{id}": {
|
|
6887
|
+
get: {
|
|
6888
|
+
summary: "Get one task timebox",
|
|
6889
|
+
responses: {
|
|
6890
|
+
"200": jsonResponse({
|
|
6891
|
+
type: "object",
|
|
6892
|
+
required: ["timebox"],
|
|
6893
|
+
properties: {
|
|
6894
|
+
timebox: { $ref: "#/components/schemas/TaskTimebox" }
|
|
6895
|
+
}
|
|
6896
|
+
}, "Task timebox"),
|
|
6897
|
+
default: { $ref: "#/components/responses/Error" }
|
|
6898
|
+
}
|
|
6899
|
+
}
|
|
6900
|
+
},
|
|
5644
6901
|
"/api/v1/calendar/timeboxes/recommend": {
|
|
5645
6902
|
post: {
|
|
5646
6903
|
summary: "Suggest future timeboxes for a task",
|
|
@@ -5660,6 +6917,21 @@ export function buildOpenApiDocument() {
|
|
|
5660
6917
|
}
|
|
5661
6918
|
},
|
|
5662
6919
|
"/api/v1/calendar/events": {
|
|
6920
|
+
get: {
|
|
6921
|
+
summary: "List native and mirrored calendar events for a range",
|
|
6922
|
+
responses: {
|
|
6923
|
+
"200": jsonResponse({
|
|
6924
|
+
type: "object",
|
|
6925
|
+
required: ["events"],
|
|
6926
|
+
properties: {
|
|
6927
|
+
events: arrayOf({
|
|
6928
|
+
$ref: "#/components/schemas/CalendarEvent"
|
|
6929
|
+
})
|
|
6930
|
+
}
|
|
6931
|
+
}, "Calendar events"),
|
|
6932
|
+
default: { $ref: "#/components/responses/Error" }
|
|
6933
|
+
}
|
|
6934
|
+
},
|
|
5663
6935
|
post: {
|
|
5664
6936
|
summary: "Create a native Forge calendar event",
|
|
5665
6937
|
description: "Forge stores the event canonically first, then projects it to a connected writable calendar when a preferred calendar is selected.",
|
|
@@ -5676,6 +6948,19 @@ export function buildOpenApiDocument() {
|
|
|
5676
6948
|
}
|
|
5677
6949
|
},
|
|
5678
6950
|
"/api/v1/calendar/events/{id}": {
|
|
6951
|
+
get: {
|
|
6952
|
+
summary: "Get one Forge calendar event",
|
|
6953
|
+
responses: {
|
|
6954
|
+
"200": jsonResponse({
|
|
6955
|
+
type: "object",
|
|
6956
|
+
required: ["event"],
|
|
6957
|
+
properties: {
|
|
6958
|
+
event: { $ref: "#/components/schemas/CalendarEvent" }
|
|
6959
|
+
}
|
|
6960
|
+
}, "Calendar event"),
|
|
6961
|
+
default: { $ref: "#/components/responses/Error" }
|
|
6962
|
+
}
|
|
6963
|
+
},
|
|
5679
6964
|
patch: {
|
|
5680
6965
|
summary: "Update a Forge calendar event and sync remote projections",
|
|
5681
6966
|
responses: {
|