mammoth-cli 2.0.13__tar.gz → 2.0.15__tar.gz

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 (211) hide show
  1. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/PKG-INFO +2 -2
  2. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/__init__.py +1 -1
  3. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +3 -0
  4. mammoth_cli-2.0.15/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +274 -0
  5. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +2 -2
  6. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +1 -1
  7. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +4 -4
  8. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +1 -1
  9. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +1 -1
  10. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +3 -3
  11. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +2 -4
  12. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +7 -9
  13. mammoth_cli-2.0.15/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +73 -0
  14. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +9 -0
  15. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +4 -0
  16. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +38 -1
  17. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +3 -1
  18. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/ai.py +12 -5
  19. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/connector.py +11 -9
  20. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/dashboard.py +55 -9
  21. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/dataset.py +25 -3
  22. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/project.py +47 -5
  23. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/view.py +1 -1
  24. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/output/normalize.py +25 -4
  25. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/services/command_contract.py +3 -2
  26. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/services/input_fields.py +64 -0
  27. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/services/mapping.py +50 -0
  28. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/services/positionals.py +8 -0
  29. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/services/protocol.py +1 -1
  30. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/services/sdk_service.py +15 -3
  31. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/services/testing.py +4 -1
  32. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/pyproject.toml +2 -2
  33. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/ai.yaml +8 -3
  34. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/connector.yaml +2 -2
  35. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/dashboard.yaml +11 -9
  36. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/dataset.yaml +1 -1
  37. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/folder.yaml +2 -1
  38. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/project.yaml +9 -7
  39. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/user.yaml +4 -2
  40. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/view.yaml +13 -10
  41. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/sdk-methods.yaml +378 -806
  42. mammoth_cli-2.0.13/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -34
  43. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/.gitignore +0 -0
  44. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/LICENSE +0 -0
  45. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/README.md +0 -0
  46. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/__main__.py +0 -0
  47. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/app.py +0 -0
  48. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
  49. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +0 -0
  50. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
  51. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
  52. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
  53. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
  54. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
  55. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
  56. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
  57. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
  58. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
  59. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
  60. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
  61. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
  62. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
  63. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
  64. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
  65. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
  66. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
  67. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
  68. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
  69. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
  70. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
  71. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
  72. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
  73. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
  74. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
  75. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
  76. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
  77. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
  78. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
  79. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
  80. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
  81. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
  82. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
  83. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
  84. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
  85. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
  86. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
  87. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
  88. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
  89. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
  90. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
  91. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
  92. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
  93. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
  94. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
  95. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
  96. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
  97. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/__init__.py +0 -0
  98. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/activity.py +0 -0
  99. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/addon.py +0 -0
  100. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/agent.py +0 -0
  101. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/annotation.py +0 -0
  102. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/auth.py +0 -0
  103. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/automation.py +0 -0
  104. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/batch.py +0 -0
  105. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/billing.py +0 -0
  106. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/browse.py +0 -0
  107. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/capability.py +0 -0
  108. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/client_app.py +0 -0
  109. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/completion.py +0 -0
  110. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/config.py +0 -0
  111. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/context.py +0 -0
  112. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/data_app.py +0 -0
  113. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/doctor.py +0 -0
  114. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/external_key.py +0 -0
  115. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/file.py +0 -0
  116. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/folder.py +0 -0
  117. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/job.py +0 -0
  118. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/notification.py +0 -0
  119. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/parameter.py +0 -0
  120. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/registry.py +0 -0
  121. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/report.py +0 -0
  122. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/schedule.py +0 -0
  123. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/schema.py +0 -0
  124. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/skill.py +0 -0
  125. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/snippet.py +0 -0
  126. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/support.py +0 -0
  127. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/template.py +0 -0
  128. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/trash.py +0 -0
  129. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/upgrade.py +0 -0
  130. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/user.py +0 -0
  131. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/view_ops.py +0 -0
  132. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/webhook.py +0 -0
  133. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/workflow.py +0 -0
  134. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/commands/workspace.py +0 -0
  135. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/context/__init__.py +0 -0
  136. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/context/credentials.py +0 -0
  137. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/context/endpoint.py +0 -0
  138. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/context/profiles.py +0 -0
  139. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/context/resolver.py +0 -0
  140. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/contracts/__init__.py +0 -0
  141. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/contracts/auth.py +0 -0
  142. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/errors/__init__.py +0 -0
  143. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/errors/envelope.py +0 -0
  144. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/manifest/__init__.py +0 -0
  145. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/manifest/loader.py +0 -0
  146. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/messages/__init__.py +0 -0
  147. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/output/__init__.py +0 -0
  148. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/output/envelope.py +0 -0
  149. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/output/policy.py +0 -0
  150. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/output/progress.py +0 -0
  151. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/output/render.py +0 -0
  152. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/py.typed +0 -0
  153. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/runtime/__init__.py +0 -0
  154. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/runtime/confirm.py +0 -0
  155. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/runtime/executor.py +0 -0
  156. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/runtime/input_loader.py +0 -0
  157. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/runtime/invocation.py +0 -0
  158. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/runtime/options.py +0 -0
  159. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/runtime/session.py +0 -0
  160. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/runtime/strict.py +0 -0
  161. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/runtime/validate.py +0 -0
  162. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/services/__init__.py +0 -0
  163. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/services/argspec.py +0 -0
  164. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/services/coerce.py +0 -0
  165. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/services/conditions.py +0 -0
  166. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/services/dispatch.py +0 -0
  167. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/services/factory.py +0 -0
  168. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/services/openapi_types.py +0 -0
  169. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/services/type_system.py +0 -0
  170. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/skills/__init__.py +0 -0
  171. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/skills/installer.py +0 -0
  172. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/mammoth_cli/testing.py +0 -0
  173. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/activity.yaml +0 -0
  174. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/addon.yaml +0 -0
  175. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/agent.yaml +0 -0
  176. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/annotation.yaml +0 -0
  177. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/auth.yaml +0 -0
  178. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/automation.yaml +0 -0
  179. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/batch.yaml +0 -0
  180. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/billing.yaml +0 -0
  181. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/browse.yaml +0 -0
  182. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/capability.yaml +0 -0
  183. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/client-app.yaml +0 -0
  184. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/completion.yaml +0 -0
  185. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/config.yaml +0 -0
  186. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/context.yaml +0 -0
  187. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/data-app.yaml +0 -0
  188. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/doctor.yaml +0 -0
  189. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/external-key.yaml +0 -0
  190. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/file.yaml +0 -0
  191. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/job.yaml +0 -0
  192. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/notification.yaml +0 -0
  193. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/parameter.yaml +0 -0
  194. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/report.yaml +0 -0
  195. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/schedule.yaml +0 -0
  196. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/schema.yaml +0 -0
  197. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/skill.yaml +0 -0
  198. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/snippet.yaml +0 -0
  199. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/support.yaml +0 -0
  200. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/template.yaml +0 -0
  201. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/trash.yaml +0 -0
  202. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/upgrade.yaml +0 -0
  203. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/version.yaml +0 -0
  204. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/webhook.yaml +0 -0
  205. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/workflow.yaml +0 -0
  206. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/commands/workspace.yaml +0 -0
  207. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/openapi-operations.yaml +0 -0
  208. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/schema-v1.json +0 -0
  209. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/manifests/sdk-catalog.source.yaml +0 -0
  210. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/openapi/metadata.json +0 -0
  211. {mammoth_cli-2.0.13 → mammoth_cli-2.0.15}/spec/openapi/openapi.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mammoth-cli
3
- Version: 2.0.13
3
+ Version: 2.0.15
4
4
  Summary: Command-line interface for the Mammoth Analytics platform
5
5
  Project-URL: homepage, https://mammoth.io
6
6
  Project-URL: repository, https://github.com/EdgeMetric/mammothsdk
@@ -17,7 +17,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
17
17
  Requires-Python: <3.15,>=3.12
18
18
  Requires-Dist: jsonschema>=4.20
19
19
  Requires-Dist: keyring<26,>=25.7
20
- Requires-Dist: mammoth-io<0.8,>=0.7.5
20
+ Requires-Dist: mammoth-io<0.8,>=0.7.7
21
21
  Requires-Dist: platformdirs<5,>=4.10
22
22
  Requires-Dist: pydantic<3,>=2.13
23
23
  Requires-Dist: pyyaml<7,>=6
@@ -6,7 +6,7 @@ not implement a second HTTP client and does not call private SDK members.
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
- __version__ = "2.0.13"
9
+ __version__ = "2.0.15"
10
10
 
11
11
  # The versioned machine output envelope contract.
12
12
  SCHEMA_VERSION = 1
@@ -65,6 +65,9 @@ the result.
65
65
  - **Import, resources, transforms, pipelines, dashboards, exports, or cleanup:**
66
66
  [recipes](references/recipes/index.md) and [operations](references/operations.md)
67
67
  - **A known command family or exact command:** [command catalog](references/command-index.md)
68
+ - **Whether a route is proven, known-blocked, or untried on release:**
69
+ [capabilities](references/capabilities.md) — read it before promising a
70
+ deliverable or reporting a failure as a backend fault
68
71
  - **Pause or transfer to another agent:** [handoff](references/handoff.md)
69
72
 
70
73
  ## Handoff checklist
@@ -0,0 +1,274 @@
1
+ # What is proven on release
2
+
3
+ Generated from `docs/release-capability-matrix.json`; do not edit by hand.
4
+ 455 API operations have a CLI command. 193 were exercised successfully on release, 2 are not supported there, and the rest are untried. Untried is not broken: discover the contract with `mammoth schema get COMMAND_ID --output json --no-input`, run it, and treat the structured error envelope as the answer.
5
+
6
+ Status meanings:
7
+
8
+ - **verified**: one bounded live run on release returned a success envelope (single path; variants and error paths are usually untested).
9
+ - **not supported**: the backend refuses the route on release; the note says why and what to use instead.
10
+ - **observed blocker**: the last run hit an error; the note quotes it. Re-check before relying on the route, and do not retry the same input.
11
+ - **CLI defect fixed, untried since**: the failure was on the CLI side and this release repairs it; nobody has re-run the route yet.
12
+ - Commands not listed under a family are untried.
13
+
14
+ The typed `view transform *` commands all submit through `view.task.add`; its row below carries the transformations proven end to end (filter, fill-missing, join, pivot with an exported summary). A transformation not named there has the same untried status as any other command.
15
+
16
+ ## Coverage by family
17
+
18
+ | Family | Commands | Verified | Not supported | Untried |
19
+ |---|---|---|---|---|
20
+ | `dashboard` | 104 | 80 | 2 | 22 |
21
+ | `view` | 62 | 43 | 0 | 19 |
22
+ | `support` | 45 | 0 | 0 | 45 |
23
+ | `billing` | 23 | 0 | 0 | 23 |
24
+ | `connector` | 22 | 2 | 0 | 20 |
25
+ | `workspace` | 19 | 6 | 0 | 13 |
26
+ | `project` | 17 | 11 | 0 | 6 |
27
+ | `workflow` | 16 | 5 | 0 | 11 |
28
+ | `dataset` | 15 | 10 | 0 | 5 |
29
+ | `parameter` | 14 | 2 | 0 | 12 |
30
+ | `data-app` | 12 | 1 | 0 | 11 |
31
+ | `folder` | 8 | 7 | 0 | 1 |
32
+ | `snippet` | 8 | 1 | 0 | 7 |
33
+ | `automation` | 7 | 1 | 0 | 6 |
34
+ | `user` | 7 | 2 | 0 | 5 |
35
+ | `webhook` | 7 | 0 | 0 | 7 |
36
+ | `addon` | 6 | 0 | 0 | 6 |
37
+ | `batch` | 6 | 4 | 0 | 2 |
38
+ | `file` | 6 | 5 | 0 | 1 |
39
+ | `agent` | 5 | 1 | 0 | 4 |
40
+ | `ai` | 5 | 1 | 0 | 4 |
41
+ | `annotation` | 5 | 1 | 0 | 4 |
42
+ | `client-app` | 5 | 0 | 0 | 5 |
43
+ | `notification` | 5 | 1 | 0 | 4 |
44
+ | `schedule` | 5 | 0 | 0 | 5 |
45
+ | `template` | 5 | 0 | 0 | 5 |
46
+ | `browse` | 4 | 2 | 0 | 2 |
47
+ | `external-key` | 4 | 0 | 0 | 4 |
48
+ | `trash` | 3 | 3 | 0 | 0 |
49
+ | `activity` | 2 | 1 | 0 | 1 |
50
+ | `job` | 2 | 2 | 0 | 0 |
51
+ | `report` | 1 | 1 | 0 | 0 |
52
+
53
+ ## `activity`
54
+
55
+ Verified: `activity.list`
56
+
57
+ | Command | State | Note |
58
+ |---|---|---|
59
+ | `activity.export` | observed blocker | server_error: see sweep report |
60
+
61
+ ## `agent`
62
+
63
+ Verified: `agent.session.list`
64
+
65
+ ## `ai`
66
+
67
+ Verified: `ai.condition.generate`
68
+
69
+ | Command | State | Note |
70
+ |---|---|---|
71
+ | `ai.retention.condition` | observed blocker | backend_error: HTTP 403 4PERM001 PERMISSION_UNDEFINED: "Permissions have not been set correctly for this API, please contact Mammoth Help to report this error" on POST /workspaces/ |
72
+ | `ai.expression.generate` | CLI defect fixed, untried since | 2.0.15 (SDK-side argument rejections (e.g. mode not math/metric) surface as invalid_arguments with the SDK message instead of an empty api_error) |
73
+ | `ai.sql.generate` | CLI defect fixed, untried since | 2.0.15 (dataset_id is required and sent as the query parameter |
74
+ | `ai.suggestion.list` | CLI defect fixed, untried since | 2.0.15 (command takes the release UnifiedPromptSpec (suggestion_type + params, optional dataset_id/dataview_id)) |
75
+
76
+ ## `annotation`
77
+
78
+ Verified: `annotation.list`
79
+
80
+ ## `automation`
81
+
82
+ Verified: `automation.list`
83
+
84
+ ## `batch`
85
+
86
+ Verified: `batch.bulk-delete`, `batch.delete`, `batch.get`, `batch.list`
87
+
88
+ | Command | State | Note |
89
+ |---|---|---|
90
+ | `batch.create` | CLI defect fixed, untried since | 2.0.15 (mapping is sent as the release list of {source_c_name,destination_c_name} items and body keys match BatchesPostRequest) |
91
+ | `batch.update` | CLI defect fixed, untried since | 2.0.15 (SDK-side argument rejections (patch ops must be replace/remove) surface as invalid_arguments with the SDK message instead of an empty api_error) |
92
+
93
+ ## `browse`
94
+
95
+ Verified: `browse.project`, `browse.workspace`
96
+
97
+ | Command | State | Note |
98
+ |---|---|---|
99
+ | `browse.folder` | observed blocker | cli_error: rejects folder id 0 although folder.root reports id 0 as the root |
100
+ | `browse.root` | observed blocker | server_error: see sweep report |
101
+
102
+ ## `connector`
103
+
104
+ Verified: `connector.active`, `connector.list`
105
+
106
+ | Command | State | Note |
107
+ |---|---|---|
108
+ | `connector.ai.session.list` | observed blocker | cli_error: backend returned HTTP 200 but the CLI raised api_error (envelope mismatch) |
109
+ | `connector.connection.list` | observed blocker | server_error: see sweep report |
110
+ | `connector.get` | observed blocker | validation_error: HTTP 400 'Invalid connector key' for a key returned by connector.list |
111
+ | `connector.query.status` | observed blocker | blocked_missing_fixture: No real connector connection exists in workspace 4 (connector list shows all is_added:false; connector active returns []) and creating one requires externa |
112
+ | `connector.query.generate` | CLI defect fixed, untried since | 2.0.15 (input field is query (release Intent body) instead of prompt) |
113
+
114
+ ## `dashboard`
115
+
116
+ Verified: `dashboard.action`, `dashboard.analytics`, `dashboard.archive`, `dashboard.cancel-generation`, `dashboard.canvas.get`, `dashboard.canvas.restore`, `dashboard.canvas.save`, `dashboard.chat.edit`, `dashboard.chat.history`, `dashboard.context.create`, `dashboard.context.delete`, `dashboard.context.extract`, `dashboard.context.list`, `dashboard.context.update`, `dashboard.create-blank`, `dashboard.delete`, `dashboard.descriptor-data`, `dashboard.duplicate`, `dashboard.exemplar.extract`, `dashboard.figure-intent`, `dashboard.get`, `dashboard.get-by-url`, `dashboard.job-by-url`, `dashboard.list`, `dashboard.page.plan`, `dashboard.pages.add`, `dashboard.published.canvas`, `dashboard.published.share-page`, `dashboard.qa.ask`, `dashboard.qa.comment.create`, `dashboard.qa.comment.delete`, `dashboard.qa.feedback`, `dashboard.qa.session.create`, `dashboard.qa.session.delete`, `dashboard.qa.session.fork`, `dashboard.qa.session.get`, `dashboard.qa.session.list`, `dashboard.qa.session.rename`, `dashboard.qa.session.set-visibility`, `dashboard.qa.settings.get`, `dashboard.qa.settings.set`, `dashboard.query`, `dashboard.restore`, `dashboard.rls.assignment.list`, `dashboard.rls.assignment.set`, `dashboard.rls.column.list`, `dashboard.rls.value.list`, `dashboard.share`, `dashboard.signature.create`, `dashboard.signature.delete`, `dashboard.signature.list`, `dashboard.signature.update`, `dashboard.style.custom.create`, `dashboard.style.custom.delete`, `dashboard.style.custom.list`, `dashboard.style.custom.update`, `dashboard.style.default.get`, `dashboard.style.default.set`, `dashboard.style.derive`, `dashboard.style.extract-brand`, `dashboard.style.preset.list`, `dashboard.style.token.list`, `dashboard.suggestion.list`, `dashboard.swap-data`, `dashboard.tags.delete`, `dashboard.tags.list`, `dashboard.tags.merge`, `dashboard.tags.rename`, `dashboard.tags.set`, `dashboard.template.apply`, `dashboard.template.fit`, `dashboard.template.get`, `dashboard.template.list`, `dashboard.template.preview`, `dashboard.template.resolve-mapping`, `dashboard.templates.pending`, `dashboard.trash`, `dashboard.update`, `dashboard.v3.generate`, `dashboard.video-state`
117
+
118
+ | Command | State | Note |
119
+ |---|---|---|
120
+ | `dashboard.create` | not supported | Not supported on release: backend returns HTTP 409 4DASH012 DASHBOARD_LEGACY_CREATION_RETIRED (legacy dashboard creation retired). Use dashboard.create-blank or dashboard.v3.generate. Dashboard sweep 2026-09-18, CLI 2.0.12. |
121
+ | `dashboard.pdf.export` | not supported | Not supported from the CLI on release: backend HTTP 400 4GENR001 requires params.data to be the browser-hydrated DashboardData map and states it cannot rebuild it from stored descriptors (dashboard sweep and Haiku e2e, 2026-09-18). The route works only with a client render pass. |
122
+ | `dashboard.data.draft` | observed blocker | blocked_missing_fixture: Dashboard 56 (create-blank/v3 engine) has no widgets in its canvas and getDraftData rejects with backend_code 4DASH004 DASHBOARD_WRONG_ENGINE: "This dashbo |
123
+ | `dashboard.data.published` | observed blocker | blocked_missing_fixture: Same as dashboard.data.draft: backend_code 4DASH004 DASHBOARD_WRONG_ENGINE on /dashboards/56/getPublishData |
124
+ | `dashboard.published-data-by-url` | observed blocker | blocked_missing_fixture: backend_code 4DASH004 DASHBOARD_WRONG_ENGINE on /dashboards/url/IuZl5tk5KcEHJWTy4tnhrA/getPublishData, same class of blocker as widget-data: this v3 dashbo |
125
+ | `dashboard.published.pdf-artifact` | observed blocker | blocked_missing_fixture: Same as dashboard.pdf-artifact: no real pdf job available; used job 313 (descriptor-data job) as the only real job id in hand and got backend_code 4DASH001 |
126
+ | `dashboard.published.pdf.export` | observed blocker | backend_error: Got backend_code 4PERM002 PERMISSION_ERROR, "User lacks permission to perform given action" on POST /dashboards/url/IuZl5tk5KcEHJWTy4tnhrA/pdf (403), envelope: {"err |
127
+ | `dashboard.published.video.export` | observed blocker | backend_error: backend_code 4PERM002 PERMISSION_ERROR, "User lacks permission to perform given action" on POST /dashboards/url/IuZl5tk5KcEHJWTy4tnhrA/video (403) |
128
+ | `dashboard.source.list` | observed blocker | blocker; still broken, not one of the 11 CLI-fixed commands |
129
+ | `dashboard.template.create` | observed blocker | backend_error: Both attempts (2/2) returned the same outcome_unknown envelope: {"error":{"code":"outcome_unknown","details":{"endpoint":"/dashboards/v3/templates","method":"POST"," |
130
+ | `dashboard.template.delete` | observed blocker | blocked_missing_fixture: dashboard.template.create never produced an owned template (HTTP 500 both attempts, reconciled as not-committed via template list) |
131
+ | `dashboard.templates.use` | observed blocker | skipped_out_of_scope: BRIEF instructs running templates.use "on that template" (i.e |
132
+ | `dashboard.video.export` | observed blocker | backend_error: After publishing dashboard 56 (dashboard.share public + dashboard.action publish-presentation), the previously-documented "publish the dashboard before exporting a v |
133
+ | `dashboard.widget-data` | observed blocker | blocked_missing_fixture: backend_code 4DASH004 DASHBOARD_WRONG_ENGINE, "This dashboard uses a different rendering engine -- use the matching endpoints", on POST /dashboards/56/widg |
134
+ | `dashboard.widget-data-by-url` | observed blocker | blocked_missing_fixture: Same backend_code 4DASH004 DASHBOARD_WRONG_ENGINE, on POST /dashboards/url/IuZl5tk5KcEHJWTy4tnhrA/widgets/data |
135
+ | `dashboard.og-card` | CLI defect fixed, untried since | SDK 0.7.5 returns a described binary body |
136
+ | `dashboard.published.data` | CLI defect fixed, untried since | 2.0.15 (published-dashboard jobs are polled through the URL-scoped job route) |
137
+
138
+ ## `data-app`
139
+
140
+ Verified: `data-app.list`
141
+
142
+ ## `dataset`
143
+
144
+ Verified: `dataset.batch-data`, `dataset.create`, `dataset.data`, `dataset.delete`, `dataset.file-settings.get`, `dataset.file-settings.update`, `dataset.get`, `dataset.list`, `dataset.restore`, `dataset.trash`
145
+
146
+ | Command | State | Note |
147
+ |---|---|---|
148
+ | `dataset.bulk-update` | observed blocker | cli_error: Schema preconditions already flag this as BLOCKED[B07 DATASET_PATCH_UNTYPED]; reserved, not registered -- confirmed live |
149
+ | `dataset.create-from-pdf` | observed blocker | backend_error: Attempt 1 (file_name only) -> HTTP 400 4DSET053 MUST_PROVIDE_TABLE_LIST_OR_PREVIEW: "Either 'table_list' or 'is_preview_needed' must be provided." (clear, actionable |
150
+ | `dataset.bulk-delete` | CLI defect fixed, untried since | 2.0.15 (dataset_ids is required, confirmation names the ids, and ids are sent as the ids query parameter) |
151
+ | `dataset.file-settings.undo` | CLI defect fixed, untried since | 2.0.15 (2xx non-object bodies are reported as success instead of outcome_unknown) |
152
+
153
+ ## `external-key`
154
+
155
+ | Command | State | Note |
156
+ |---|---|---|
157
+ | `external-key.list` | observed blocker | cli_error: not_authenticated although the same session authenticated elsewhere |
158
+
159
+ ## `file`
160
+
161
+ Verified: `file.bulk-delete`, `file.delete`, `file.get`, `file.list`, `file.upload`
162
+
163
+ | Command | State | Note |
164
+ |---|---|---|
165
+ | `file.update` | observed blocker | backend_error: CLI accepted the typed patch and submitted job 314 (handle_file on /workspaces/4/projects/21/files/50), then correctly reported timeout after 60s with recovery_comma |
166
+
167
+ ## `folder`
168
+
169
+ Verified: `folder.bulk-delete`, `folder.create`, `folder.delete`, `folder.get`, `folder.list`, `folder.trash`, `folder.update`
170
+
171
+ | Command | State | Note |
172
+ |---|---|---|
173
+ | `folder.move` | CLI defect fixed, untried since | 2.0.15 (SDK now sends {patch:[{op:move,from:[ids],path:destination/root}]}) |
174
+
175
+ ## `job`
176
+
177
+ Verified: `job.get`, `job.get-many`
178
+
179
+ ## `notification`
180
+
181
+ Verified: `notification.list`
182
+
183
+ ## `parameter`
184
+
185
+ Verified: `parameter.group.list`, `parameter.list`
186
+
187
+ ## `project`
188
+
189
+ Verified: `project.bulk-delete`, `project.checkpoint.list`, `project.create`, `project.data-check.list`, `project.list`, `project.pending-changes`, `project.publish-credentials`, `project.resource-dependencies`, `project.resource-dependencies.update`, `project.resource-status`, `project.sample-flow`
190
+
191
+ | Command | State | Note |
192
+ |---|---|---|
193
+ | `project.user.update` | observed blocker | backend_error: HTTP 400 4PROJ010 ROLE_ALREADY_ASSIGNED: "Role already assigned to the user" -- targeted our own user (id 5, already project_admin as project owner) |
194
+ | `project.bulk-update` | CLI defect fixed, untried since | 2.0.15 (body must be a ProjectsPatch naming project_id in every value item and the confirmation lists those projects) |
195
+ | `project.delete` | CLI defect fixed, untried since | 2.0.15 (2xx non-object bodies such as 202 Accepted are reported as success instead of outcome_unknown) |
196
+ | `project.update` | CLI defect fixed, untried since | 2.0.15 (SDK now sends the release ProjectPatch {patches:[{op:replace,path:name/properties,...}]} body) |
197
+ | `project.user.add` | CLI defect fixed, untried since | 2.0.15 (SDK now sends {users:[{user_id,role}]} with numeric user ids) |
198
+
199
+ ## `report`
200
+
201
+ Verified: `report.list`
202
+
203
+ ## `schedule`
204
+
205
+ | Command | State | Note |
206
+ |---|---|---|
207
+ | `schedule.list` | observed blocker | validation_error: HTTP 400 with message 'Not implemented' |
208
+
209
+ ## `snippet`
210
+
211
+ Verified: `snippet.list`
212
+
213
+ ## `template`
214
+
215
+ | Command | State | Note |
216
+ |---|---|---|
217
+ | `template.list` | observed blocker | cli_error: backend returned HTTP 200 but the CLI raised api_error (envelope mismatch) |
218
+
219
+ ## `trash`
220
+
221
+ Verified: `trash.add`, `trash.list`, `trash.restore`
222
+
223
+ ## `user`
224
+
225
+ Verified: `user.get`, `user.preference.get`
226
+
227
+ | Command | State | Note |
228
+ |---|---|---|
229
+ | `user.preference.update` | CLI defect fixed, untried since | 2.0.15 (command takes the release {patch:[...]} list instead of free keyword fields) |
230
+
231
+ ## `view`
232
+
233
+ Verified: `view.active-user.list`, `view.active-user.mark`, `view.ai.generate-data`, `view.bulk-delete`, `view.checkpoint.create`, `view.checkpoint.list`, `view.conditional-format.list`, `view.conditional-format.update`, `view.create`, `view.data-check.create`, `view.data-check.get`, `view.data-check.list`, `view.data.get`, `view.data.query`, `view.delete`, `view.derivative.create`, `view.derivative.list`, `view.draft.command`, `view.export.delete`, `view.export.get`, `view.export.list`, `view.export.publish-db`, `view.export.update`, `view.exportable-config.get`, `view.get`, `view.list`, `view.parameter-context`, `view.pipeline.get`, `view.pipeline.items`, `view.pipeline.rerun`, `view.preview`, `view.restore`, `view.task.add`, `view.task.delete`, `view.task.get`, `view.task.list`, `view.trash`, `view.version.apply`, `view.version.delete`, `view.version.get`, `view.version.list`, `view.version.update`
234
+
235
+ | Command | State | Note |
236
+ |---|---|---|
237
+ | `view.ai.generation-info` | observed blocker | backend_error: HTTP 400 5GENR011 NOT_IMPLEMENTED: "Not implemented" -- matches known capabilities.md observed blocker for this route (backend-side, not CLI) |
238
+ | `view.checkpoint.get` | observed blocker | backend_error: HTTP 500 on GET /workspaces/4/projects/21/datasets/48/dataviews/73/pipeline/checkpoints/1 with empty response_body:{}, reproduced twice (2s apart) right after checkp |
239
+ | `view.conditional-format.create` | observed blocker | cli_error: Skill doc (view.md) claims this route is 'fail-closed and must not dispatch a request' (BLOCKED B09 DATAVIEW_INPUT_UNTYPED) -- but live it DOES dispatch: HTTP 400 4GENR0 |
240
+ | `view.data-check.update` | observed blocker | backend_error: PATCH .../pipeline/data-checks/1 -> HTTP 500, empty response_body, CLI correctly reported outcome_unknown (exit 7) rather than a false success |
241
+ | `view.derivative.data` | observed blocker | backend_error: HTTP 500 on POST .../dataviews/73/derivatives/2/data, empty response_body |
242
+ | `view.export.create` | observed blocker | cli_error: Both attempts return exit 0 with a job accepted (334, then 335 after adding target_properties.destination:local), but the job itself always fails: job get shows status:e |
243
+ | `view.exportable-config.apply` | observed blocker | cli_error: Schema's own runnable_example (config:{tasks:[]}) fails: job_failed, response:{reason:(quote)dependencies(quote)} -- a raw Python KeyError, not a structured validation m |
244
+ | `view.task.preview` | observed blocker | cli_error: Schema's own runnable_example (COPY:{}) fails: HTTP 400 5GENR010 UNKNOWN_ERROR "Unknown error occurred |
245
+ | `view.ai.profile` | CLI defect fixed, untried since | 2.0.15 (SDK sends the release ProfileGenerationSpec {params:{action}} body (action defaults to insights)) |
246
+ | `view.checkpoint.delete` | CLI defect fixed, untried since | 2.0.15 (2xx non-object bodies such as 202 Accepted are reported as success instead of outcome_unknown) |
247
+ | `view.checkpoint.update` | CLI defect fixed, untried since | 2.0.15 (example now carries value:null as the backend requires |
248
+ | `view.conditional-format.delete-all` | CLI defect fixed, untried since | 2.0.15 (rule_id is required and sent as the query parameter) |
249
+ | `view.data-check.delete` | CLI defect fixed, untried since | 2.0.15 (2xx non-object bodies such as 202 Accepted are reported as success instead of outcome_unknown) |
250
+ | `view.derivative.delete` | CLI defect fixed, untried since | 2.0.15 (2xx non-object bodies such as 202 Accepted are reported as success instead of outcome_unknown) |
251
+ | `view.derivative.update` | CLI defect fixed, untried since | 2.0.15 (2xx non-object bodies such as 202 Accepted are reported as success instead of outcome_unknown) |
252
+ | `view.export.publish-db-update` | CLI defect fixed, untried since | 2.0.15 (example now shows the only accepted patch path (credentials -> postgres/bigquery)) |
253
+ | `view.pipeline.edit` | CLI defect fixed, untried since | 2.0.15 (example now shows a valid patch (path auto_run with a bool value) |
254
+ | `view.task.update` | CLI defect fixed, untried since | 2.0.15 (SDK now sends {patches:[{op:replace,path:params,value:task_spec}]} (or caller-supplied patches)) |
255
+
256
+ ## `webhook`
257
+
258
+ | Command | State | Note |
259
+ |---|---|---|
260
+ | `webhook.list` | observed blocker | cli_error: api_error with no HTTP status recorded |
261
+
262
+ ## `workflow`
263
+
264
+ Verified: `workflow.graph`, `workflow.list`, `workflow.workspace-datasets`, `workflow.workspace-exports`, `workflow.workspace-sources`
265
+
266
+ ## `workspace`
267
+
268
+ Verified: `workspace.app-usage`, `workspace.get`, `workspace.list`, `workspace.segment.list`, `workspace.storage-breakdown`, `workspace.user.list`
269
+
270
+ | Command | State | Note |
271
+ |---|---|---|
272
+ | `workspace.segment.update` | CLI defect fixed, untried since | 2.0.15 (2xx non-object bodies are reported as success instead of outcome_unknown |
273
+
274
+ Evidence version: CLI mammoth-cli 1.1.11; mammoth-io 0.7.1. Details: `docs/capability-evidence/` in the repository.
@@ -28,7 +28,7 @@ Expected success: `AiRetentionConditionResult` in the standard JSON envelope; mu
28
28
 
29
29
  Run: `mammoth ai sql generate`. Exact input fields: `mammoth schema get ai.sql.generate --output json --no-input`.
30
30
 
31
- Example: `mammoth ai sql generate 'Summarize revenue by region' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
31
+ Example: `mammoth ai sql generate 'Summarize revenue by region' --input '{"dataset_id": 456}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
32
32
 
33
33
  Expected success: `AiSqlGenerateResult` in the standard JSON envelope; mutation `read`, confirmation `none`, wait policy `always_wait`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
34
34
 
@@ -36,6 +36,6 @@ Expected success: `AiSqlGenerateResult` in the standard JSON envelope; mutation
36
36
 
37
37
  Run: `mammoth ai suggestion list`. Exact input fields: `mammoth schema get ai.suggestion.list --output json --no-input`.
38
38
 
39
- Example: `mammoth ai suggestion list --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
39
+ Example: `mammoth ai suggestion list --input '{"suggestion_type": "generate_task", "params": {"prompt": "Filter rows where Price > 100"}, "dataset_id": 456, "dataview_id": 123}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
40
40
 
41
41
  Expected success: `AiSuggestionListResult` in the standard JSON envelope; mutation `read`, confirmation `none`, wait policy `always_wait`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
@@ -164,7 +164,7 @@ Expected success: `ConnectorListResult` in the standard JSON envelope; mutation
164
164
 
165
165
  Run: `mammoth connector query generate`. Exact input fields: `mammoth schema get connector.query.generate --output json --no-input`.
166
166
 
167
- Example: `mammoth connector query generate sample sample --input '{"prompt": "Summarize revenue by region"}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
167
+ Example: `mammoth connector query generate sample sample --input '{"query": "Total sales for January"}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
168
168
 
169
169
  Expected success: `ConnectorQueryGenerateResult` in the standard JSON envelope; mutation `read`, confirmation `none`, wait policy `always_wait`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
170
170
 
@@ -148,7 +148,7 @@ Expected success: `DashboardCreateBlankResult` in the standard JSON envelope; mu
148
148
 
149
149
  Run: `mammoth dashboard data draft`. Exact input fields: `mammoth schema get dashboard.data.draft --output json --no-input`.
150
150
 
151
- Example: `mammoth dashboard data draft 123 --input '{"sql": "SELECT region, SUM(revenue) FROM data GROUP BY region"}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
151
+ Example: `mammoth dashboard data draft 123 --input '{"widget_id": "550e8400-e29b-41d4-a716-446655440000"}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
152
152
 
153
153
  Expected success: `DashboardDataDraftResult` in the standard JSON envelope; mutation `read`, confirmation `none`, wait policy `always_wait`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
154
154
 
@@ -156,7 +156,7 @@ Expected success: `DashboardDataDraftResult` in the standard JSON envelope; muta
156
156
 
157
157
  Run: `mammoth dashboard data published`. Exact input fields: `mammoth schema get dashboard.data.published --output json --no-input`.
158
158
 
159
- Example: `mammoth dashboard data published 123 --input '{"sql": "SELECT region, SUM(revenue) FROM data GROUP BY region"}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
159
+ Example: `mammoth dashboard data published 123 --input '{"widget_id": "550e8400-e29b-41d4-a716-446655440000"}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
160
160
 
161
161
  Expected success: `DashboardDataPublishedResult` in the standard JSON envelope; mutation `read`, confirmation `none`, wait policy `always_wait`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
162
162
 
@@ -460,7 +460,7 @@ Expected success: `DashboardQaSettingsSetResult` in the standard JSON envelope;
460
460
 
461
461
  Run: `mammoth dashboard query`. Exact input fields: `mammoth schema get dashboard.query --output json --no-input`.
462
462
 
463
- Example: `mammoth dashboard query 123 --input '{"body": {"params": {"descriptor": {}}}}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
463
+ Example: `mammoth dashboard query 123 --input '{"body": {"params": {"descriptor": {"kind": "scalar", "agg": "count"}}}}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
464
464
 
465
465
  Expected success: `DashboardQueryResult` in the standard JSON envelope; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
466
466
 
@@ -788,7 +788,7 @@ Expected success: `DashboardTrashResult` in the standard JSON envelope; mutation
788
788
 
789
789
  Run: `mammoth dashboard update`. Exact input fields: `mammoth schema get dashboard.update --output json --no-input`.
790
790
 
791
- Example: `mammoth dashboard update 123 --input '{"patch": [{"op": "add", "path": "intent", "value": "sample"}]}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
791
+ Example: `mammoth dashboard update 123 --input '{"patch": [{"op": "replace", "path": "title", "value": "Renamed dashboard"}]}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
792
792
 
793
793
  Expected success: `DashboardUpdateResult` in the standard JSON envelope; mutation `benign_mutation`, confirmation `none`, wait policy `returns_job`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
794
794
 
@@ -12,7 +12,7 @@ Expected success: `DatasetBatchDataResult` in the standard JSON envelope; mutati
12
12
 
13
13
  Run: `mammoth dataset bulk-delete`. Exact input fields: `mammoth schema get dataset.bulk-delete --output json --no-input`.
14
14
 
15
- Example: `mammoth dataset bulk-delete --output json --no-input`. Illustrative only: append `--yes` after observing an owned target.
15
+ Example: `mammoth dataset bulk-delete --input '{"dataset_ids": [456, 457]}' --output json --no-input`. Illustrative only: append `--yes` after observing an owned target.
16
16
 
17
17
  Expected success: `DatasetBulkDeleteResult` in the standard JSON envelope; mutation `destructive`, confirmation `prompt_or_yes`, wait policy `not_async`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
18
18
 
@@ -52,7 +52,7 @@ Expected success: `FolderListResult` in the standard JSON envelope; mutation `re
52
52
 
53
53
  Run: `mammoth folder move`. Exact input fields: `mammoth schema get folder.move --output json --no-input`.
54
54
 
55
- Example: `mammoth folder move --input '{"resource_ids": ["resource-123"]}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
55
+ Example: `mammoth folder move --input '{"resource_ids": [8024], "target_folder_resource_id": "root"}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
56
56
 
57
57
  Expected success: `FolderMoveResult` in the standard JSON envelope; mutation `benign_mutation`, confirmation `none`, wait policy `returns_job`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
58
58
 
@@ -12,7 +12,7 @@ Expected success: `ProjectBulkDeleteResult` in the standard JSON envelope; mutat
12
12
 
13
13
  Run: `mammoth project bulk-update`. Exact input fields: `mammoth schema get project.bulk-update --output json --no-input`.
14
14
 
15
- Example: `mammoth project bulk-update --input '{"patch_data": {"sample_key": "Status"}}' --output json --no-input`. Illustrative only: append `--yes --confirm <EXACT_TARGET>` after observing the target.
15
+ Example: `mammoth project bulk-update --input '{"patch_data": {"patches": [{"op": "add", "path": "role", "value": [{"project_id": 456, "user_roles": [{"user_id": 123, "role": "project_analyst"}]}]}]}}' --output json --no-input`. Illustrative only: append `--yes --confirm <EXACT_TARGET>` after observing the target.
16
16
 
17
17
  Expected success: `ProjectBulkUpdateResult` in the standard JSON envelope; mutation `high_impact`, confirmation `confirm_target`, wait policy `not_async`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
18
18
 
@@ -116,7 +116,7 @@ Expected success: `ProjectSampleFlowResult` in the standard JSON envelope; mutat
116
116
 
117
117
  Run: `mammoth project update`. Exact input fields: `mammoth schema get project.update --output json --no-input`.
118
118
 
119
- Example: `mammoth project update 123 --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
119
+ Example: `mammoth project update 123 --input '{"name": "Renamed project"}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
120
120
 
121
121
  Expected success: `ProjectUpdateResult` in the standard JSON envelope; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
122
122
 
@@ -124,7 +124,7 @@ Expected success: `ProjectUpdateResult` in the standard JSON envelope; mutation
124
124
 
125
125
  Run: `mammoth project user add`. Exact input fields: `mammoth schema get project.user.add --output json --no-input`.
126
126
 
127
- Example: `mammoth project user add 123 --input '{"user_ids": ["resource-123"]}' --output json --no-input`. Illustrative only: append `--yes --confirm <EXACT_TARGET>` after observing the target.
127
+ Example: `mammoth project user add 123 --input '{"user_ids": [123], "role": "project_analyst"}' --output json --no-input`. Illustrative only: append `--yes --confirm <EXACT_TARGET>` after observing the target.
128
128
 
129
129
  Expected success: `ProjectUserAddResult` in the standard JSON envelope; mutation `high_impact`, confirmation `confirm_target`, wait policy `not_async`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
130
130
 
@@ -54,11 +54,9 @@ Expected success: `UserPreferenceGetResult` in the standard JSON envelope; mutat
54
54
 
55
55
  Run: `mammoth user preference update`. Exact input fields: `mammoth schema get user.preference.update --output json --no-input`.
56
56
 
57
- Example: `mammoth user preference update --output json --no-input`. Discovery only: this command is fail-closed and must not dispatch a request.
57
+ Example: `mammoth user preference update --input '{"patch": [{"op": "replace", "path": "GLOBAL.PREFERENCES.TOP_TABS", "value": []}]}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
58
58
 
59
- Execution is unavailable for the current contract and returns `unsupported_contract`. Do not infer request fields or retry it; use only a separately typed alternative.
60
-
61
- Known restriction: BLOCKED[B17 VARIADIC_INPUT_UNTYPED]: **prefs is unconstrained; reserved, not registered.
59
+ Expected success: `UserPreferenceUpdateResult` in the standard JSON envelope; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
62
60
 
63
61
  ### `user.update`
64
62
 
@@ -36,7 +36,7 @@ Expected success: `ViewAiGenerationInfoResult` in the standard JSON envelope; mu
36
36
 
37
37
  Run: `mammoth view ai profile`. Exact input fields: `mammoth schema get view.ai.profile --output json --no-input`.
38
38
 
39
- Example: `mammoth view ai profile 123 --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
39
+ Example: `mammoth view ai profile 123 --input '{"dataset_id": 456, "action": "insights"}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
40
40
 
41
41
  Expected success: `ViewAiProfileResult` in the standard JSON envelope; mutation `benign_mutation`, confirmation `none`, wait policy `always_wait`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
42
42
 
@@ -84,7 +84,7 @@ Expected success: `ViewCheckpointListResult` in the standard JSON envelope; muta
84
84
 
85
85
  Run: `mammoth view checkpoint update`. Exact input fields: `mammoth schema get view.checkpoint.update --output json --no-input`.
86
86
 
87
- Example: `mammoth view checkpoint update 123 123 123 --input '{"body": {"patches": [{"op": "replace", "path": "approve"}]}}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
87
+ Example: `mammoth view checkpoint update 123 123 123 --input '{"body": {"patches": [{"op": "command", "path": "approve", "value": null}]}}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
88
88
 
89
89
  Expected success: `ViewCheckpointUpdateResult` in the standard JSON envelope; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
90
90
 
@@ -92,17 +92,15 @@ Expected success: `ViewCheckpointUpdateResult` in the standard JSON envelope; mu
92
92
 
93
93
  Run: `mammoth view conditional-format create`. Exact input fields: `mammoth schema get view.conditional-format.create --output json --no-input`.
94
94
 
95
- Example: `mammoth view conditional-format create 123 123 --input '{"rule": {"sample_key": "Status"}}' --output json --no-input`. Discovery only: this command is fail-closed and must not dispatch a request.
95
+ Example: `mammoth view conditional-format create 123 123 --input '{"rule": {"sample_key": "Status"}}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
96
96
 
97
- Execution is unavailable for the current contract and returns `unsupported_contract`. Do not infer request fields or retry it; use only a separately typed alternative.
98
-
99
- Known restriction: BLOCKED[B09 DATAVIEW_INPUT_UNTYPED]: rule is an arbitrary dictionary; reserved, not registered.
97
+ Expected success: `ViewConditionalFormatCreateResult` in the standard JSON envelope; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
100
98
 
101
99
  ### `view.conditional-format.delete-all`
102
100
 
103
101
  Run: `mammoth view conditional-format delete-all`. Exact input fields: `mammoth schema get view.conditional-format.delete-all --output json --no-input`.
104
102
 
105
- Example: `mammoth view conditional-format delete-all 123 123 --output json --no-input`. Illustrative only: append `--yes` after observing an owned target.
103
+ Example: `mammoth view conditional-format delete-all 123 123 --input '{"rule_id": "rule-1"}' --output json --no-input`. Illustrative only: append `--yes` after observing an owned target.
106
104
 
107
105
  Expected success: `ViewConditionalFormatDeleteAllResult` in the standard JSON envelope; mutation `destructive`, confirmation `prompt_or_yes`, wait policy `not_async`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
108
106
 
@@ -448,7 +446,7 @@ Expected success: `ViewExportPublishDbResult` in the standard JSON envelope; mut
448
446
 
449
447
  Run: `mammoth view export publish-db-update`. Exact input fields: `mammoth schema get view.export.publish-db-update --output json --no-input`.
450
448
 
451
- Example: `mammoth view export publish-db-update 123 --input '{"patch": [{"sample_key": "Status"}]}' --output json --no-input`. Illustrative only: append `--yes` after observing an owned target.
449
+ Example: `mammoth view export publish-db-update 123 --input '{"patch": [{"op": "replace", "path": "credentials", "value": "postgres"}]}' --output json --no-input`. Illustrative only: append `--yes` after observing an owned target.
452
450
 
453
451
  Expected success: `ViewExportPublishDbUpdateResult` in the standard JSON envelope; mutation `external_effect`, confirmation `yes_always`, wait policy `not_async`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
454
452
 
@@ -550,7 +548,7 @@ Expected success: `ViewParameterContextResult` in the standard JSON envelope; mu
550
548
 
551
549
  Run: `mammoth view pipeline edit`. Exact input fields: `mammoth schema get view.pipeline.edit --output json --no-input`.
552
550
 
553
- Example: `mammoth view pipeline edit 123 --input '{"patches": [{"sample_key": "Status"}]}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
551
+ Example: `mammoth view pipeline edit 123 --input '{"patches": [{"op": "replace", "path": "auto_run", "value": true}]}' --output json --no-input`. Runnable only after resolving schema-required IDs and input from observed reads.
554
552
 
555
553
  Expected success: `ViewPipelineEditResult` in the standard JSON envelope; mutation `benign_mutation`, confirmation `none`, wait policy `always_wait`. On nonzero exit, inspect the JSON error envelope and its `recovery_commands`; do not guess request fields. See [representative envelopes](../machine-output.md) for concrete success/error shapes.
556
554
 
@@ -0,0 +1,73 @@
1
+ # Dashboards
2
+
3
+ Dashboard inputs are generated and release-dependent:
4
+
5
+ ```bash
6
+ mammoth schema find "dashboard create" --output json --no-input
7
+ mammoth schema find "dashboard source" --output json --no-input
8
+ mammoth schema get dashboard.create-blank --output json --no-input
9
+ mammoth dashboard create-blank --input INPUT_JSON --project PROJECT_ID --output json --no-input --yes
10
+ mammoth dashboard get DASHBOARD_ID --output json --no-input
11
+ mammoth dashboard source list --output json --no-input
12
+ ```
13
+
14
+ Discover page/widget/publish routes and verify source binding, draft/published
15
+ data and terminal jobs. Use only returned IDs and schema confirmation policy;
16
+ do not invent dashboard JSON or opaque task specs.
17
+
18
+ Expected create-blank input is currently typed as
19
+ `{"params":{"dataview_id":VIEW_ID,"title":"TITLE"}}`; confirm with
20
+ `schema get dashboard.create-blank` first. If the dashboard is requested as a
21
+ deliverable, preserve the dashboard ID actually named in the returned `data`
22
+ object and do not clean it up. Otherwise, classify it explicitly as
23
+ temporary/intermediate before authorizing deletion. Then run:
24
+
25
+ ```bash
26
+ mammoth dashboard get DASHBOARD_ID --output json --no-input
27
+ mammoth dashboard source list --output json --no-input
28
+ mammoth schema find "dashboard page" --output json --no-input
29
+ mammoth schema find "dashboard" --output json --no-input
30
+ ```
31
+
32
+ Page/widget schemas vary by release. Read each schema, use returned IDs, and
33
+ verify dashboard source plus draft/published data after every mutation. A
34
+ creation response alone is not proof of a usable published view.
35
+
36
+ ## Canvas, widget data and PDF
37
+
38
+ Never save an invented canvas. Read it, change it, write it back:
39
+
40
+ ```bash
41
+ mammoth dashboard canvas get DASHBOARD_ID --output json --no-input # data.canvas incl. style_tokens
42
+ mammoth dashboard canvas save DASHBOARD_ID --input '{"body":{"params":{"canvas":CANVAS_FROM_GET}}}' --output json --no-input
43
+ ```
44
+
45
+ `canvas save` with `{"canvas": {}}` fails (`dataset` and other fields are
46
+ required); the object returned by `canvas get` is the only known-good shape.
47
+ Widget ids for `dashboard data draft` / `dashboard data published` come from
48
+ that canvas: `--input '{"widget_id": "WIDGET_UUID"}'` (optional
49
+ `global_filters` / `drilldown_filters` objects). `dashboard query` needs a
50
+ descriptor with a `kind` (`scalar`, `group`, `rate`, `detail`, `options`,
51
+ `range`); `{"kind":"scalar","agg":"count"}` is the smallest that runs.
52
+
53
+ `dashboard pdf export` and `dashboard video export` cannot be completed from
54
+ the CLI: the backend requires the browser-hydrated `DashboardData` map
55
+ (pre-rendered widget results) in `params.data` and refuses to rebuild it. Report
56
+ this as a known limitation instead of retrying with `{}`. `dashboard create`
57
+ (legacy engine) is retired on release (HTTP 409 `4DASH012`); use
58
+ `create-blank` or `v3 generate`.
59
+
60
+ ## Publishing and the url routes
61
+
62
+ `dashboard share DASHBOARD_ID --input '{"type_of_auth":"public"}'` alone does
63
+ not publish: `was_published` stays false until you also run
64
+ `dashboard action DASHBOARD_ID --input '{"action":"publish-presentation"}'`.
65
+ `share` returns `data: null`; read the url slug back with `dashboard get`.
66
+ Only then do `dashboard published canvas URL`, `published data URL`,
67
+ `job-by-url URL JOB_ID` and the other `/dashboards/url/...` routes answer;
68
+ before that they return 404 `DASHBOARD_NOT_FOUND`. Legacy widget routes
69
+ (`widget-data`, `widget-data-by-url`, `published-data-by-url`, `data draft`,
70
+ `data published`) answer 409 `DASHBOARD_WRONG_ENGINE` on a v3 dashboard.
71
+ `video export` needs a motion-story dashboard. Revert the share
72
+ (`type_of_auth: "mammoth"`) before trashing a temporary dashboard.
73
+
@@ -21,3 +21,12 @@ returns `job_id`, read it until terminal success before inspecting the artifact.
21
21
  If `schema get view.export.csv` rejects requested fields, preserve the
22
22
  structured error and discover another declared export route rather than using
23
23
  raw HTTP.
24
+
25
+ ## Generic export routes
26
+
27
+ `view export csv` and the typed destination commands are the proven path. The
28
+ generic `view export create` accepts a raw `export_spec`; for `handler_type`
29
+ `csv_file` the release job failed with a bare `'destination'` key even when
30
+ `target_properties.destination` was set, so do not use it for CSV. `view export
31
+ publish-db-update` only rotates credentials: the body is
32
+ `{"patch":[{"op":"replace","path":"credentials","value":"postgres"|"bigquery"}]}`.
@@ -16,6 +16,10 @@ mammoth view list DATASET_ID --project PROJECT_ID --output json --no-input
16
16
  mammoth view get VIEW_ID --project PROJECT_ID --output json --no-input
17
17
  ```
18
18
 
19
+ `file upload` takes the local path as its positional argument; there is no
20
+ `--source`/`--file` option. `dataset delete` is asynchronous: re-read
21
+ `dataset list` (the id disappears once the job completes) before reporting.
22
+
19
23
  Use display names from the exact view schema. For settings, folders and other
20
24
  families, use `schema find`/`schema get` first, then read back the exact parent
21
25
  and resource IDs. For example: