@salesforce/afv-skills 1.59.0 → 1.61.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 (174) hide show
  1. package/package.json +1 -1
  2. package/skills/agentforce-architecture-analyze/SKILL.md +66 -17
  3. package/skills/agentforce-architecture-analyze/assets/cli/show_access_token.yaml +4 -7
  4. package/skills/agentforce-architecture-analyze/references/contract.json +1 -1
  5. package/skills/agentforce-architecture-analyze/scripts/emit_env.py +2 -2
  6. package/skills/agentforce-architecture-analyze/scripts/main.py +40 -44
  7. package/skills/agentforce-architecture-analyze/scripts/rest_client.py +11 -3
  8. package/skills/agentforce-architecture-analyze/scripts/sf_cli.py +77 -10
  9. package/skills/agentforce-architecture-analyze/scripts/tests/test_end_to_end_fixture.py +1 -0
  10. package/skills/agentforce-architecture-analyze/scripts/tests/test_flow_children_inflation.py +1 -0
  11. package/skills/agentforce-architecture-analyze/scripts/tests/test_main_pipeline.py +53 -2
  12. package/skills/agentforce-architecture-analyze/scripts/tests/test_resolve_creds.py +184 -36
  13. package/skills/agentforce-architecture-analyze/scripts/tests/test_rest_client.py +17 -0
  14. package/skills/agentforce-architecture-analyze/scripts/tests/test_sf_cli.py +165 -11
  15. package/skills/agentforce-architecture-analyze/scripts/tests/test_skill_md_pipeline_block.py +319 -0
  16. package/skills/agentforce-d360-analyze/SKILL.md +28 -10
  17. package/skills/agentforce-d360-analyze/scripts/dc.py +200 -50
  18. package/skills/agentforce-d360-analyze/scripts/discover_sessions.py +10 -6
  19. package/skills/agentforce-d360-analyze/scripts/fetch_dc.py +22 -6
  20. package/skills/agentforce-d360-analyze/scripts/resolve_session.py +21 -13
  21. package/skills/agentforce-d360-analyze/scripts/tests/test_dc_and_resolve_session.py +298 -76
  22. package/skills/agentforce-d360-analyze/scripts/tests/test_default_target_org.py +432 -0
  23. package/skills/agentforce-d360-analyze/scripts/tests/test_discover_sessions.py +1 -1
  24. package/skills/agentforce-d360-analyze/scripts/tests/test_resolve_session_main.py +9 -3
  25. package/skills/agentforce-d360-analyze/scripts/tests/test_skill_md_prefix_block.py +176 -0
  26. package/skills/consumer-goods-accruals-datakit-deploy/SKILL.md +17 -27
  27. package/skills/consumer-goods-accruals-datakit-deploy/scripts/setup.js +7 -17
  28. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/00-check-prerequisites.js +47 -63
  29. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/01-download-static-resource.js +10 -13
  30. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/02-replace-org-id.js +46 -46
  31. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/03-deploy-metadata.js +4 -21
  32. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/06-create-dataspace.js +58 -82
  33. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/07-deploy-accruals-reports.js +16 -315
  34. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/08-deploy-ui.js +9 -24
  35. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/09-completion.js +44 -44
  36. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/utils.js +11 -63
  37. package/skills/consumer-goods-rtr-datacloud-export-configure/SKILL.md +2 -1
  38. package/skills/consumer-goods-tpe-dashboard-configure/SKILL.md +2 -1
  39. package/skills/consumer-goods-tpe-dashboard-custom-kpi-configure/SKILL.md +2 -1
  40. package/skills/consumer-goods-tpe-datakit-deploy/SKILL.md +2 -1
  41. package/skills/data360-schema-get/SKILL.md +3 -3
  42. package/skills/design-systems-slds-validate/references/report-format.md +1 -1
  43. package/skills/dx-org-manage/SKILL.md +1 -0
  44. package/skills/dx-org-shape-manage/SKILL.md +1 -0
  45. package/skills/dx-org-snapshot-manage/SKILL.md +172 -0
  46. package/skills/dx-org-snapshot-manage/examples/create_error_output.json +16 -0
  47. package/skills/dx-org-snapshot-manage/examples/create_success_output.json +19 -0
  48. package/skills/dx-org-snapshot-manage/examples/delete_output.json +9 -0
  49. package/skills/dx-org-snapshot-manage/examples/get_output.json +19 -0
  50. package/skills/dx-org-snapshot-manage/examples/list_output.json +36 -0
  51. package/skills/dx-org-snapshot-manage/references/cli_flags.md +179 -0
  52. package/skills/dx-org-snapshot-manage/references/snapshot_usage.md +55 -0
  53. package/skills/dx-org-trial-expiration-check/SKILL.md +1 -1
  54. package/skills/dx-org-trial-expiration-check/scripts/check_expiration.sh +2 -2
  55. package/skills/education-cloud-student-recruitment-agent-configure/SKILL.md +7 -5
  56. package/skills/education-cloud-student-recruitment-agent-configure/references/prerequisites.md +11 -11
  57. package/skills/experience-content-media-image-generate/SKILL.md +83 -0
  58. package/skills/experience-content-media-image-generate/scripts/download-image.sh +84 -0
  59. package/skills/external-diagram-mermaid-generate/SKILL.md +12 -12
  60. package/skills/field-service-data-capture-migrate/references/component-mapping.md +1 -1
  61. package/skills/field-service-data-capture-migrate/references/fsm-dc-capability-catalog.md +1 -2
  62. package/skills/field-service-data-capture-migrate/references/known-deploy-errors.md +1 -0
  63. package/skills/field-service-data-capture-migrate/references/transformer-rules.md +1 -1
  64. package/skills/field-service-data-capture-migrate/scripts/transform_flow.py +12 -1
  65. package/skills/field-service-data-capture-migrate/scripts/vendor/build_flow.py +4 -1
  66. package/skills/field-service-setup-orchestrator-get/SKILL.md +0 -1
  67. package/skills/insurance-brokerage-agency-billing-configure/SKILL.md +233 -0
  68. package/skills/insurance-brokerage-agency-billing-configure/references/accounting-setup.md +117 -0
  69. package/skills/insurance-brokerage-agency-billing-configure/references/billing-rules-config.md +237 -0
  70. package/skills/insurance-brokerage-agency-billing-configure/references/billing-settings.md +271 -0
  71. package/skills/insurance-brokerage-agency-billing-configure/references/demo-policy-config.md +138 -0
  72. package/skills/insurance-brokerage-agency-billing-configure/references/org-defaults.md +64 -0
  73. package/skills/insurance-brokerage-agency-billing-configure/references/permissions-config.md +226 -0
  74. package/skills/insurance-brokerage-agency-billing-configure/references/prerequisites.md +142 -0
  75. package/skills/life-sciences-fieldsalesrep-coordinate/SKILL.md +3 -2
  76. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-5-visit-creation-execution-state-and-recovery.md +3 -3
  77. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-5-visit-creation-overview.md +68 -45
  78. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-5-visit-creation-visit-creation-data.md +17 -18
  79. package/skills/life-sciences-kam-coordinate/references/stage-5-data-and-plan-templates-overview.md +16 -3
  80. package/skills/life-sciences-kam-coordinate/references/stage-5-data-creation-data.md +16 -13
  81. package/skills/marketing-message-test/SKILL.md +194 -0
  82. package/skills/marketing-message-test/references/api-contract.md +333 -0
  83. package/skills/omnistudio-callable-apex-generate/SKILL.md +3 -3
  84. package/skills/omnistudio-datamapper-generate/SKILL.md +6 -6
  85. package/skills/omnistudio-datapacks-deploy/SKILL.md +11 -11
  86. package/skills/omnistudio-dependencies-analyze/SKILL.md +5 -5
  87. package/skills/omnistudio-epc-catalog-generate/SKILL.md +6 -6
  88. package/skills/omnistudio-flexcard-generate/SKILL.md +6 -6
  89. package/skills/omnistudio-integration-procedure-generate/SKILL.md +6 -6
  90. package/skills/omnistudio-omniscript-generate/SKILL.md +6 -5
  91. package/skills/platform-apex-logs-debug/SKILL.md +1 -0
  92. package/skills/platform-metadata-deploy/SKILL.md +1 -0
  93. package/skills/platform-models-api-configure/SKILL.md +5 -5
  94. package/skills/platform-soql-query/SKILL.md +1 -0
  95. package/skills/service-itsm-agentic-setup-cmdb-coordinate/SKILL.md +17 -6
  96. package/skills/service-itsm-agentic-setup-incident-sla-configure/SKILL.md +107 -192
  97. package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/attach-milestone-action.json +6 -6
  98. package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/milestone-patterns.md +49 -20
  99. package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/output-templates.md +4 -4
  100. package/skills/service-itsm-agentic-setup-incident-sla-configure/references/mcp-invocation.md +224 -290
  101. package/skills/service-itsm-agentic-setup-incident-sla-configure/references/workflow.md +295 -0
  102. package/skills/service-itsm-incident-priority-configure/SKILL.md +1 -1
  103. package/skills/service-itsm-slack-itservice-configure/SKILL.md +2 -1
  104. package/skills/service-itsm-slack-itservice-configure/references/manage-slack-connection.md +2 -2
  105. package/skills/service-omni-channel-setup-coordinate/SKILL.md +20 -13
  106. package/skills/service-omni-channel-setup-coordinate/scripts/integration-driver.sh +5 -55
  107. package/skills/service-omni-channel-setup-coordinate/scripts/tests/test_omni_contracts.py +0 -38
  108. package/skills/service-omni-command-center-analyze/SKILL.md +2 -3
  109. package/skills/service-omni-command-center-analyze/scripts/analyze.sh +3 -3
  110. package/skills/tableau-next-asset-create/README.md +65 -0
  111. package/skills/tableau-next-asset-create/SKILL.md +409 -0
  112. package/skills/tableau-next-asset-create/references/admin-users.md +149 -0
  113. package/skills/tableau-next-asset-create/references/ai-readiness.md +355 -0
  114. package/skills/tableau-next-asset-create/references/alerts.md +111 -0
  115. package/skills/tableau-next-asset-create/references/build-workflow.md +819 -0
  116. package/skills/tableau-next-asset-create/references/dashboard-authoring.md +302 -0
  117. package/skills/tableau-next-asset-create/references/dashboard-design-principles.md +352 -0
  118. package/skills/tableau-next-asset-create/references/data-transform-gotchas.md +210 -0
  119. package/skills/tableau-next-asset-create/references/data-understanding.md +387 -0
  120. package/skills/tableau-next-asset-create/references/deep-reference-index.md +74 -0
  121. package/skills/tableau-next-asset-create/references/destructive-operations.md +62 -0
  122. package/skills/tableau-next-asset-create/references/edit-dashboard.md +273 -0
  123. package/skills/tableau-next-asset-create/references/edit-visualization.md +529 -0
  124. package/skills/tableau-next-asset-create/references/empty-source-handling.md +104 -0
  125. package/skills/tableau-next-asset-create/references/ingest-and-metric-gotchas.md +638 -0
  126. package/skills/tableau-next-asset-create/references/insight-bundle.md +69 -0
  127. package/skills/tableau-next-asset-create/references/large-flat-file-handling.md +331 -0
  128. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/_envelope.json +54 -0
  129. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/_shared-widget-fields.json +122 -0
  130. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/add_page.json +29 -0
  131. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/delete_page.json +27 -0
  132. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/discard_dashboard.json +11 -0
  133. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/move_widget.json +30 -0
  134. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/move_widget_to_page.json +30 -0
  135. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/place_widget_on_page.json +30 -0
  136. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/remove_widget_from_dashboard.json +16 -0
  137. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/remove_widget_from_page.json +26 -0
  138. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/rename_page.json +28 -0
  139. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/save_dashboard.json +18 -0
  140. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/undo.json +11 -0
  141. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/upsert_button_widget.json +69 -0
  142. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/upsert_container_widget.json +88 -0
  143. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/upsert_filter_widget.json +146 -0
  144. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/upsert_metric_widget.json +78 -0
  145. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/upsert_navigation_widget.json +80 -0
  146. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/upsert_parameter_widget.json +160 -0
  147. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/upsert_text_widget.json +103 -0
  148. package/skills/tableau-next-asset-create/references/schemas/edit-dashboard/upsert_visualization_widget.json +68 -0
  149. package/skills/tableau-next-asset-create/references/sdm-tool-reference.md +721 -0
  150. package/skills/tableau-next-asset-create/references/semantic-query-and-enrichment.md +355 -0
  151. package/skills/tableau-next-asset-create/references/shared-gates.md +322 -0
  152. package/skills/tableau-next-asset-create/references/sharing-and-promotion.md +306 -0
  153. package/skills/tableau-next-asset-create/references/tasks/ai-readiness-audit.md +51 -0
  154. package/skills/tableau-next-asset-create/references/tasks/analyze-data.md +48 -0
  155. package/skills/tableau-next-asset-create/references/tasks/build-dashboard.md +66 -0
  156. package/skills/tableau-next-asset-create/references/tasks/build-end-to-end.md +73 -0
  157. package/skills/tableau-next-asset-create/references/tasks/create-data-transform.md +51 -0
  158. package/skills/tableau-next-asset-create/references/tasks/create-viz.md +58 -0
  159. package/skills/tableau-next-asset-create/references/tasks/edit-dashboard.md +80 -0
  160. package/skills/tableau-next-asset-create/references/tasks/edit-sdm.md +106 -0
  161. package/skills/tableau-next-asset-create/references/tasks/edit-viz.md +40 -0
  162. package/skills/tableau-next-asset-create/references/tasks/enrich-model.md +68 -0
  163. package/skills/tableau-next-asset-create/references/tasks/ingest-flat-file.md +68 -0
  164. package/skills/tableau-next-asset-create/references/tasks/manage-alert.md +35 -0
  165. package/skills/tableau-next-asset-create/references/tasks/profile-dataset.md +47 -0
  166. package/skills/tableau-next-asset-create/references/tasks/promote-or-reuse.md +46 -0
  167. package/skills/tableau-next-asset-create/references/tasks/provision-user.md +39 -0
  168. package/skills/tableau-next-asset-create/references/tasks/query-model.md +92 -0
  169. package/skills/tableau-next-asset-create/references/tasks/review-verified-questions.md +42 -0
  170. package/skills/tableau-next-asset-create/references/tasks/share-asset.md +37 -0
  171. package/skills/tableau-next-asset-create/references/verified-questions.md +125 -0
  172. package/skills/tableau-next-asset-create/references/viz-authoring.md +992 -0
  173. package/skills/service-de-channel-consent-configure/SKILL.md +0 -230
  174. package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/predefined-incident-policy.json +0 -102
@@ -0,0 +1,80 @@
1
+ {
2
+ "title": "upsert_navigation_widget",
3
+ "type": "object",
4
+ "additionalProperties": false,
5
+ "required": ["operation", "widget"],
6
+ "properties": {
7
+ "operation": { "const": "upsert_navigation_widget" },
8
+ "widget": {
9
+ "type": "object",
10
+ "description": "Complete navigation (in-dashboard page navigation) widget definition for create or full replacement. Omitted fields are dropped on replacement. parameters.navigationItems is the ordered list of destinations; an omitted or empty list is an empty nav bar. Upsert defines the widget only; it neither places it nor changes existing placements. This is a gated pilot type: persisting the batch or using save_dashboard fails with ACCESS_DENIED unless the org has the navigation-widget pilot enabled.",
11
+ "required": ["type", "name"],
12
+ "properties": {
13
+ "id": {
14
+ "type": "string",
15
+ "description": "Existing widget ID. Required when fully replacing a persisted widget; omit when creating a widget. Never invent this value. An unsaved draft widget has no ID and may be replaced by matching widget.name."
16
+ },
17
+ "type": { "const": "navigation" },
18
+ "name": {
19
+ "type": "string",
20
+ "description": "Stable widget key, e.g. \"navigation_1\". On persisted replacement, it must match the widget identified by id."
21
+ },
22
+ "label": { "type": "string", "description": "Display label." },
23
+ "description": { "type": "string", "description": "Optional widget description (distinct from label)." },
24
+ "actions": {
25
+ "type": "array",
26
+ "description": "Optional click/select interactions. Full per-type shape: _shared-widget-fields.json.",
27
+ "items": { "type": "object", "required": ["actionType", "eventType"] }
28
+ },
29
+ "dynamicTokens": {
30
+ "type": "object",
31
+ "description": "Optional dynamic value bindings keyed by token name. Full shape: _shared-widget-fields.json.",
32
+ "additionalProperties": { "type": "object" }
33
+ },
34
+ "parameters": {
35
+ "type": "object",
36
+ "description": "Navigation widget parameters.",
37
+ "properties": {
38
+ "viewType": { "type": "string", "description": "How the navigation renders, e.g. \"tabs\"." },
39
+ "navigationItems": {
40
+ "type": "array",
41
+ "description": "Ordered navigation destinations.",
42
+ "items": {
43
+ "type": "object",
44
+ "properties": {
45
+ "id": { "type": "string", "description": "Item id." },
46
+ "name": { "type": "string", "description": "Item dev name." },
47
+ "label": { "type": "string", "description": "Display label for this item." },
48
+ "description": { "type": "string", "description": "Optional item description." },
49
+ "type": { "type": "string", "description": "Item type, e.g. \"page\"." },
50
+ "target": { "type": "string", "description": "Target identifier (e.g. a page name)." },
51
+ "order": { "type": "integer", "description": "Explicit position in the navigation order." },
52
+ "hidden": { "type": "boolean", "description": "Whether the item is hidden." }
53
+ }
54
+ }
55
+ },
56
+ "labelStyle": { "type": "object", "description": "NavigationLabelStyle. Full shape: _shared-widget-fields.json#/styleBlocks/NavigationLabelStyle." },
57
+ "widgetStyle": { "type": "object", "description": "ButtonStyle. Full shape: _shared-widget-fields.json#/styleBlocks/ButtonStyle." },
58
+ "defaultStyle": { "type": "object", "description": "ButtonStyle applied to unselected items. Full shape: _shared-widget-fields.json#/styleBlocks/ButtonStyle." },
59
+ "selectedStyle": { "type": "object", "description": "ButtonStyle applied to the selected item. Full shape: _shared-widget-fields.json#/styleBlocks/ButtonStyle." },
60
+ "dropdownValueStyle": { "type": "object", "description": "WidgetTextStyle for a dropdown-rendered viewType. Full shape: _shared-widget-fields.json#/styleBlocks/WidgetTextStyle." }
61
+ }
62
+ }
63
+ }
64
+ }
65
+ },
66
+ "example": {
67
+ "operation": "upsert_navigation_widget",
68
+ "widget": {
69
+ "type": "navigation",
70
+ "name": "navigation_1",
71
+ "label": "Pages",
72
+ "parameters": {
73
+ "viewType": "tabs",
74
+ "navigationItems": [
75
+ { "type": "page", "target": "page_1", "order": 0, "hidden": false }
76
+ ]
77
+ }
78
+ }
79
+ }
80
+ }
@@ -0,0 +1,160 @@
1
+ {
2
+ "title": "upsert_parameter_widget",
3
+ "type": "object",
4
+ "additionalProperties": false,
5
+ "required": ["operation", "widget"],
6
+ "properties": {
7
+ "operation": { "const": "upsert_parameter_widget" },
8
+ "widget": {
9
+ "type": "object",
10
+ "description": "Complete parameter widget definition for create or full replacement. Omitted fields are dropped on replacement. source is optional; parameters carry the view type and the parameter option. Upsert defines the widget only; it neither places it nor changes existing placements.",
11
+ "required": ["type", "name"],
12
+ "properties": {
13
+ "id": {
14
+ "type": "string",
15
+ "description": "Existing widget ID. Required when fully replacing a persisted widget; omit when creating a widget. Never invent this value. An unsaved draft widget has no ID and may be replaced by matching widget.name."
16
+ },
17
+ "type": { "const": "parameter" },
18
+ "name": {
19
+ "type": "string",
20
+ "description": "Stable widget key, e.g. \"parameter_1\". On persisted replacement, it must match the widget identified by id."
21
+ },
22
+ "label": { "type": "string", "description": "Display label." },
23
+ "description": { "type": "string", "description": "Optional widget description (distinct from label)." },
24
+ "actions": {
25
+ "type": "array",
26
+ "description": "Optional click/select interactions. Full per-type shape: _shared-widget-fields.json.",
27
+ "items": { "type": "object", "required": ["actionType", "eventType"] }
28
+ },
29
+ "dynamicTokens": {
30
+ "type": "object",
31
+ "description": "Optional dynamic value bindings keyed by token name. Full shape: _shared-widget-fields.json.",
32
+ "additionalProperties": { "type": "object" }
33
+ },
34
+ "source": {
35
+ "type": "object",
36
+ "description": "Optional data source reference.",
37
+ "properties": {
38
+ "id": { "type": "string", "description": "Data source record id." },
39
+ "name": { "type": "string", "description": "Data source apiName." }
40
+ }
41
+ },
42
+ "initialValues": {
43
+ "type": "object",
44
+ "description": "Optional default parameter value applied when the dashboard loads.",
45
+ "properties": {
46
+ "details": { "description": "Untyped — shape depends on parameterOption.dataType (a scalar for text/number/date/boolean/percentage). No fixed schema; do not assume FilterDetails' shape here." }
47
+ }
48
+ },
49
+ "parameters": {
50
+ "description": "Parameter widget parameters — shape depends on viewType. oneOf ListParameterParameters | ListCardParameterParameters | ToggleParameterParameters | InputParameterParameters | InputCardParameterParameters. Send only the fields for your chosen viewType.",
51
+ "oneOf": [
52
+ {
53
+ "title": "ListParameterParameters",
54
+ "type": "object",
55
+ "required": ["viewType", "isLabelHidden"],
56
+ "properties": {
57
+ "viewType": { "const": "list" },
58
+ "isLabelHidden": { "type": "boolean", "description": "REQUIRED for viewType list/listcard." },
59
+ "parameterName": { "type": "string", "description": "The parameter's field/dev name." },
60
+ "parameterOption": {
61
+ "type": "object",
62
+ "description": "Parameter input configuration.",
63
+ "properties": {
64
+ "dataType": {
65
+ "type": "string",
66
+ "enum": ["text", "number", "date", "boolean", "percentage"],
67
+ "description": "Input data type. Lowercase — a different casing convention than the filter widget's dataType; do not cross-copy."
68
+ }
69
+ }
70
+ },
71
+ "widgetStyle": { "type": "object", "description": "WidgetStyle. Full shape: _shared-widget-fields.json#/styleBlocks/WidgetStyle." },
72
+ "titleStyle": { "type": "object", "description": "WidgetTextStyle. Full shape: _shared-widget-fields.json#/styleBlocks/WidgetTextStyle." },
73
+ "valueStyle": { "type": "object", "description": "WidgetTextStyle. Full shape: _shared-widget-fields.json#/styleBlocks/WidgetTextStyle." },
74
+ "receiveParameterSource": { "type": "object", "description": "Full shape: _shared-widget-fields.json#/receiveSources/receiveParameterSource." }
75
+ }
76
+ },
77
+ {
78
+ "title": "ListCardParameterParameters",
79
+ "type": "object",
80
+ "required": ["viewType", "isLabelHidden"],
81
+ "properties": {
82
+ "viewType": { "const": "listcard" },
83
+ "isLabelHidden": { "type": "boolean", "description": "REQUIRED for viewType list/listcard." },
84
+ "parameterName": { "type": "string" },
85
+ "parameterOption": { "type": "object", "description": "Same shape as ListParameterParameters.parameterOption above." },
86
+ "widgetStyle": { "type": "object", "description": "WidgetStyle. Full shape: _shared-widget-fields.json#/styleBlocks/WidgetStyle." },
87
+ "titleStyle": { "type": "object", "description": "WidgetTextStyle. Full shape: _shared-widget-fields.json#/styleBlocks/WidgetTextStyle." },
88
+ "valueStyle": { "type": "object", "description": "WidgetTextStyle. Full shape: _shared-widget-fields.json#/styleBlocks/WidgetTextStyle." },
89
+ "receiveParameterSource": { "type": "object", "description": "Full shape: _shared-widget-fields.json#/receiveSources/receiveParameterSource." }
90
+ }
91
+ },
92
+ {
93
+ "title": "ToggleParameterParameters",
94
+ "type": "object",
95
+ "required": ["viewType"],
96
+ "description": "isLabelHidden is not required here (unlike list/listcard).",
97
+ "properties": {
98
+ "viewType": { "const": "toggle" },
99
+ "parameterName": { "type": "string" },
100
+ "parameterOption": { "type": "object", "description": "Same shape as ListParameterParameters.parameterOption above." },
101
+ "widgetStyle": { "type": "object", "description": "WidgetStyle. Full shape: _shared-widget-fields.json#/styleBlocks/WidgetStyle." },
102
+ "textStyle": { "type": "object", "description": "ToggleTextStyle. Full shape: _shared-widget-fields.json#/styleBlocks/ToggleTextStyle." },
103
+ "defaultStyle": { "type": "object", "description": "ToggleDefaultStyle. Full shape: _shared-widget-fields.json#/styleBlocks/ToggleDefaultStyle." },
104
+ "selectedStyle": { "type": "object", "description": "ToggleSelectedStyle. Full shape: _shared-widget-fields.json#/styleBlocks/ToggleSelectedStyle." },
105
+ "receiveParameterSource": { "type": "object", "description": "Full shape: _shared-widget-fields.json#/receiveSources/receiveParameterSource." }
106
+ }
107
+ },
108
+ {
109
+ "title": "InputParameterParameters",
110
+ "type": "object",
111
+ "required": ["viewType"],
112
+ "description": "isLabelHidden is optional (not required) for input/inputcard.",
113
+ "properties": {
114
+ "viewType": { "const": "input" },
115
+ "isLabelHidden": { "type": "boolean", "description": "Optional for viewType input/inputcard." },
116
+ "parameterName": { "type": "string" },
117
+ "parameterOption": { "type": "object", "description": "Same shape as ListParameterParameters.parameterOption above." },
118
+ "valueSource": { "type": "object", "description": "Optional source feeding the input's current/default value." },
119
+ "widgetStyle": { "type": "object", "description": "WidgetStyle. Full shape: _shared-widget-fields.json#/styleBlocks/WidgetStyle." },
120
+ "titleStyle": { "type": "object", "description": "WidgetTextStyle. Full shape: _shared-widget-fields.json#/styleBlocks/WidgetTextStyle." },
121
+ "valueStyle": { "type": "object", "description": "WidgetTextStyle. Full shape: _shared-widget-fields.json#/styleBlocks/WidgetTextStyle." },
122
+ "receiveParameterSource": { "type": "object", "description": "Full shape: _shared-widget-fields.json#/receiveSources/receiveParameterSource." }
123
+ }
124
+ },
125
+ {
126
+ "title": "InputCardParameterParameters",
127
+ "type": "object",
128
+ "required": ["viewType"],
129
+ "description": "isLabelHidden is optional (not required) for input/inputcard.",
130
+ "properties": {
131
+ "viewType": { "const": "inputcard" },
132
+ "isLabelHidden": { "type": "boolean", "description": "Optional for viewType input/inputcard." },
133
+ "parameterName": { "type": "string" },
134
+ "parameterOption": { "type": "object", "description": "Same shape as ListParameterParameters.parameterOption above." },
135
+ "valueSource": { "type": "object", "description": "Optional source feeding the input's current/default value." },
136
+ "widgetStyle": { "type": "object", "description": "WidgetStyle. Full shape: _shared-widget-fields.json#/styleBlocks/WidgetStyle." },
137
+ "titleStyle": { "type": "object", "description": "WidgetTextStyle. Full shape: _shared-widget-fields.json#/styleBlocks/WidgetTextStyle." },
138
+ "valueStyle": { "type": "object", "description": "WidgetTextStyle. Full shape: _shared-widget-fields.json#/styleBlocks/WidgetTextStyle." },
139
+ "receiveParameterSource": { "type": "object", "description": "Full shape: _shared-widget-fields.json#/receiveSources/receiveParameterSource." }
140
+ }
141
+ }
142
+ ]
143
+ }
144
+ }
145
+ }
146
+ },
147
+ "example": {
148
+ "operation": "upsert_parameter_widget",
149
+ "widget": {
150
+ "type": "parameter",
151
+ "name": "parameter_1",
152
+ "label": "Target",
153
+ "parameters": {
154
+ "viewType": "input",
155
+ "parameterOption": { "dataType": "number" },
156
+ "isLabelHidden": false
157
+ }
158
+ }
159
+ }
160
+ }
@@ -0,0 +1,103 @@
1
+ {
2
+ "title": "upsert_text_widget",
3
+ "type": "object",
4
+ "additionalProperties": false,
5
+ "required": ["operation", "widget"],
6
+ "properties": {
7
+ "operation": { "const": "upsert_text_widget" },
8
+ "widget": {
9
+ "type": "object",
10
+ "description": "Complete text widget definition for create or full replacement. Omitted fields are dropped on replacement. No data source. Rich text lives in parameters.content as Quill-Delta ops. Upsert defines the widget only; it neither places it nor changes existing placements.",
11
+ "required": ["type", "name"],
12
+ "properties": {
13
+ "id": {
14
+ "type": "string",
15
+ "description": "Existing widget ID. Required when fully replacing a persisted widget; omit when creating a widget. Never invent this value. An unsaved draft widget has no ID and may be replaced by matching widget.name."
16
+ },
17
+ "type": { "const": "text" },
18
+ "name": {
19
+ "type": "string",
20
+ "description": "Stable widget key within the dashboard, e.g. \"text_1\". On persisted replacement, it must match the widget identified by id."
21
+ },
22
+ "label": { "type": "string", "description": "Display label." },
23
+ "description": { "type": "string", "description": "Optional widget description (distinct from label)." },
24
+ "actions": {
25
+ "type": "array",
26
+ "description": "Optional click/select interactions (navigate, run a flow, set a parameter, set a filter, record action). Full per-type shape: _shared-widget-fields.json.",
27
+ "items": { "type": "object", "required": ["actionType", "eventType"] }
28
+ },
29
+ "dynamicTokens": {
30
+ "type": "object",
31
+ "description": "Optional dynamic value bindings keyed by token name. Full shape: _shared-widget-fields.json.",
32
+ "additionalProperties": { "type": "object" }
33
+ },
34
+ "parameters": {
35
+ "type": "object",
36
+ "description": "Text widget parameters.",
37
+ "properties": {
38
+ "content": {
39
+ "type": "array",
40
+ "description": "Quill-Delta ops list. Each op is { insert, attributes? }. Plain text ends with a trailing \"\\n\".",
41
+ "items": {
42
+ "type": "object",
43
+ "properties": {
44
+ "insert": { "description": "Inserted text or embed token." },
45
+ "attributes": {
46
+ "type": "object",
47
+ "description": "Inline formatting for the inserted text.",
48
+ "properties": {
49
+ "bold": { "type": "boolean" },
50
+ "italic": { "type": "boolean" },
51
+ "underline": { "type": "boolean" },
52
+ "strike": { "type": "boolean" },
53
+ "color": { "type": "string", "description": "Hex color, e.g. \"#FF0000\"." },
54
+ "background": { "type": "string", "description": "Hex background color." },
55
+ "align": { "type": "string", "description": "\"left\" | \"center\" | \"right\"." },
56
+ "link": { "type": "string", "description": "URL." },
57
+ "size": { "type": "string", "description": "e.g. \"18px\" or \"large\"." },
58
+ "list": { "type": "string", "description": "\"bullet\" | \"ordered\"." }
59
+ }
60
+ },
61
+ "rules": {
62
+ "type": "array",
63
+ "items": { "type": "string" },
64
+ "description": "Echoed back by the server on each op even if you didn't send one — harmless, don't be surprised reading it back."
65
+ }
66
+ }
67
+ }
68
+ },
69
+ "verticalAlignment": {
70
+ "type": "string",
71
+ "enum": ["top", "center", "bottom"],
72
+ "description": "Vertical alignment of the content."
73
+ },
74
+ "lineSpacing": { "type": "number", "description": "Line spacing multiplier." },
75
+ "overflow": { "type": "string", "enum": ["scroll", "truncate"], "description": "How content overflowing the widget's bounds is handled." },
76
+ "wrap": { "type": "string", "enum": ["wrap", "nowrap"], "description": "Whether text wraps within the widget." },
77
+ "tooltip": { "type": "string", "description": "Tooltip text." },
78
+ "widgetStyle": { "type": "object", "description": "WidgetStyle (backgroundColor/borderEdges/borderColor/borderWidth/borderRadius). Full shape: _shared-widget-fields.json#/styleBlocks/WidgetStyle." },
79
+ "receiveFilterSource": { "type": "object", "description": "Which published filters this widget listens to. Full shape: _shared-widget-fields.json#/receiveSources/receiveFilterSource." },
80
+ "receiveParameterSource": { "type": "object", "description": "Which published parameters this widget listens to. Full shape: _shared-widget-fields.json#/receiveSources/receiveParameterSource." },
81
+ "conditionalFormattingRules": {
82
+ "type": "array",
83
+ "description": "Rules that restyle content based on a bucketed value. Full shape: _shared-widget-fields.json#/conditionalFormatting.",
84
+ "items": { "type": "object" }
85
+ }
86
+ }
87
+ }
88
+ }
89
+ }
90
+ },
91
+ "example": {
92
+ "operation": "upsert_text_widget",
93
+ "widget": {
94
+ "type": "text",
95
+ "name": "text_1",
96
+ "parameters": {
97
+ "content": [
98
+ { "insert": "Q4 Summary\n", "attributes": { "bold": true, "align": "center" } }
99
+ ]
100
+ }
101
+ }
102
+ }
103
+ }
@@ -0,0 +1,68 @@
1
+ {
2
+ "title": "upsert_visualization_widget",
3
+ "type": "object",
4
+ "additionalProperties": false,
5
+ "required": ["operation", "widget"],
6
+ "properties": {
7
+ "operation": { "const": "upsert_visualization_widget" },
8
+ "widget": {
9
+ "type": "object",
10
+ "description": "Complete visualization widget definition for create or full replacement. Omitted fields are dropped on replacement. source references the saved visualization { id, name }. Upsert defines the widget only; it neither places it nor changes existing placements.",
11
+ "required": ["type", "name"],
12
+ "properties": {
13
+ "id": {
14
+ "type": "string",
15
+ "description": "Existing widget ID. Required when fully replacing a persisted widget; omit when creating a widget. Never invent this value. An unsaved draft widget has no ID and may be replaced by matching widget.name."
16
+ },
17
+ "type": { "const": "visualization" },
18
+ "name": {
19
+ "type": "string",
20
+ "description": "Stable widget key, e.g. \"viz_1\". On persisted replacement, it must match the widget identified by id."
21
+ },
22
+ "label": { "type": "string", "description": "Display label." },
23
+ "description": { "type": "string", "description": "Optional widget description (distinct from label)." },
24
+ "actions": {
25
+ "type": "array",
26
+ "description": "Optional click/select interactions. Full per-type shape: _shared-widget-fields.json.",
27
+ "items": { "type": "object", "required": ["actionType", "eventType"] }
28
+ },
29
+ "dynamicTokens": {
30
+ "type": "object",
31
+ "description": "Optional dynamic value bindings keyed by token name. Full shape: _shared-widget-fields.json.",
32
+ "additionalProperties": { "type": "object" }
33
+ },
34
+ "source": {
35
+ "type": "object",
36
+ "description": "Saved visualization reference.",
37
+ "properties": {
38
+ "id": { "type": "string", "description": "Visualization record id." },
39
+ "name": { "type": "string", "description": "Visualization apiName." }
40
+ }
41
+ },
42
+ "parameters": {
43
+ "type": "object",
44
+ "description": "Visualization widget parameters.",
45
+ "properties": {
46
+ "legendPosition": {
47
+ "type": "string",
48
+ "enum": ["Top", "Bottom", "Left", "Right"],
49
+ "description": "Position of the visualization legend."
50
+ },
51
+ "shareState": { "type": "boolean", "description": "Whether the widget shares interaction state." },
52
+ "widgetStyle": { "type": "object", "description": "VisualizationStyle (WidgetStyle + textColor/lineColor/headerBackgroundColor/textSize). Full shape: _shared-widget-fields.json#/styleBlocks/VisualizationStyle." },
53
+ "receiveFilterSource": { "type": "object", "description": "Which published filters this widget listens to. Full shape: _shared-widget-fields.json#/receiveSources/receiveFilterSource." },
54
+ "receiveParameterSource": { "type": "object", "description": "Which published parameters this widget listens to. Full shape: _shared-widget-fields.json#/receiveSources/receiveParameterSource." }
55
+ }
56
+ }
57
+ }
58
+ }
59
+ },
60
+ "example": {
61
+ "operation": "upsert_visualization_widget",
62
+ "widget": {
63
+ "type": "visualization",
64
+ "name": "viz_1",
65
+ "source": { "id": "0Fx000000000123", "name": "SalesByRegion" }
66
+ }
67
+ }
68
+ }