procesio-cli 0.1.1__py3-none-any.whl

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 (647) hide show
  1. procesio_cli/__init__.py +18 -0
  2. procesio_cli/_cli.py +71 -0
  3. procesio_cli/agents/__init__.py +0 -0
  4. procesio_cli/agents/_lib/__init__.py +0 -0
  5. procesio_cli/agents/_lib/actiondef.py +24 -0
  6. procesio_cli/agents/_lib/errors.py +40 -0
  7. procesio_cli/agents/_lib/reversibility.py +236 -0
  8. procesio_cli/agents/_lib/toolrunner.py +141 -0
  9. procesio_cli/agents/connector-builder/CONNECTOR-BUILDER-PLAYBOOK.md +62 -0
  10. procesio_cli/agents/connector-builder/CONNECTOR-BUILDER-PROCESIO-INTEROP.md +76 -0
  11. procesio_cli/agents/connector-builder/CONNECTOR-BUILDER-TROUBLESHOOTING.md +60 -0
  12. procesio_cli/agents/connector-builder/README.md +51 -0
  13. procesio_cli/agents/connector-builder/agent.yaml +61 -0
  14. procesio_cli/agents/connector-builder/context.py +19 -0
  15. procesio_cli/agents/connector-builder/handlers/__init__.py +1 -0
  16. procesio_cli/agents/connector-builder/handlers/checklist.py +71 -0
  17. procesio_cli/agents/connector-builder/handlers/guidance.py +37 -0
  18. procesio_cli/agents/connector-builder/handlers/nextstep.py +221 -0
  19. procesio_cli/agents/connector-builder/handlers/status.py +35 -0
  20. procesio_cli/agents/connector-builder/knowledge.py +47 -0
  21. procesio_cli/agents/connector-builder/main.py +93 -0
  22. procesio_cli/agents/connector-builder/tests/conftest.py +95 -0
  23. procesio_cli/agents/connector-builder/tests/test_cba_agent.py +148 -0
  24. procesio_cli/agents/orchestrator/__init__.py +0 -0
  25. procesio_cli/agents/orchestrator/bootstraplib.py +166 -0
  26. procesio_cli/agents/procesio/IMPLEMENTATION-PATTERNS/00-INDEX.md +60 -0
  27. procesio_cli/agents/procesio/IMPLEMENTATION-PATTERNS/01-PROCESSES.md +230 -0
  28. procesio_cli/agents/procesio/IMPLEMENTATION-PATTERNS/02-FORMS.md +287 -0
  29. procesio_cli/agents/procesio/IMPLEMENTATION-PATTERNS/03-INTEGRATIONS.md +384 -0
  30. procesio_cli/agents/procesio/IMPLEMENTATION-PATTERNS/04-DATABASE.md +293 -0
  31. procesio_cli/agents/procesio/PROCESIO-API-RELIABILITY-DOCTRINE.md +113 -0
  32. procesio_cli/agents/procesio/PROCESIO-BEST-PRACTICES.md +316 -0
  33. procesio_cli/agents/procesio/PROCESIO-BUILD-AND-TEST-PLAYBOOK.md +217 -0
  34. procesio_cli/agents/procesio/PROCESIO-DATASTORE.md +72 -0
  35. procesio_cli/agents/procesio/PROCESIO-ENVIRONMENTS.md +62 -0
  36. procesio_cli/agents/procesio/PROCESIO-SCHEDULING.md +47 -0
  37. procesio_cli/agents/procesio/PROCESIO-VISUAL-ORGANIZATION.md +175 -0
  38. procesio_cli/agents/procesio/README.md +97 -0
  39. procesio_cli/agents/procesio/__init__.py +0 -0
  40. procesio_cli/agents/procesio/agent.yaml +73 -0
  41. procesio_cli/agents/procesio/audit.py +226 -0
  42. procesio_cli/agents/procesio/checklist.py +135 -0
  43. procesio_cli/agents/procesio/context.py +19 -0
  44. procesio_cli/agents/procesio/handlers/__init__.py +0 -0
  45. procesio_cli/agents/procesio/handlers/audit.py +39 -0
  46. procesio_cli/agents/procesio/handlers/checklist.py +34 -0
  47. procesio_cli/agents/procesio/handlers/guidance.py +36 -0
  48. procesio_cli/agents/procesio/handlers/status.py +33 -0
  49. procesio_cli/agents/procesio/handlers/verify.py +39 -0
  50. procesio_cli/agents/procesio/knowledge.py +115 -0
  51. procesio_cli/agents/procesio/main.py +89 -0
  52. procesio_cli/agents/procesio/tests/__init__.py +0 -0
  53. procesio_cli/agents/procesio/tests/conftest.py +62 -0
  54. procesio_cli/agents/procesio/tests/test_audit.py +91 -0
  55. procesio_cli/agents/procesio/tests/test_checklist.py +28 -0
  56. procesio_cli/agents/procesio/tests/test_guidance.py +78 -0
  57. procesio_cli/agents/procesio/tests/test_manifest_sync.py +48 -0
  58. procesio_cli/agents/procesio/tests/test_verify.py +134 -0
  59. procesio_cli/agents/procesio/tests/test_workspace_scope.py +97 -0
  60. procesio_cli/agents/procesio/verifylib.py +222 -0
  61. procesio_cli/dashboard/README.md +117 -0
  62. procesio_cli/dashboard/__init__.py +18 -0
  63. procesio_cli/dashboard/serve.py +98 -0
  64. procesio_cli/dashboard/server/__init__.py +1 -0
  65. procesio_cli/dashboard/server/config_schemas.py +92 -0
  66. procesio_cli/dashboard/server/google.py +103 -0
  67. procesio_cli/dashboard/server/handler.py +160 -0
  68. procesio_cli/dashboard/server/inventory.py +213 -0
  69. procesio_cli/dashboard/server/jobs.py +118 -0
  70. procesio_cli/dashboard/server/llmtest.py +181 -0
  71. procesio_cli/dashboard/server/procesio_env.py +94 -0
  72. procesio_cli/dashboard/server/routes.py +74 -0
  73. procesio_cli/dashboard/server/runner.py +150 -0
  74. procesio_cli/dashboard/server/security.py +29 -0
  75. procesio_cli/dashboard/server/setup.py +211 -0
  76. procesio_cli/dashboard/server/validate.py +152 -0
  77. procesio_cli/dashboard/tests/conftest.py +16 -0
  78. procesio_cli/dashboard/tests/test_dashboard.py +225 -0
  79. procesio_cli/dashboard/tests/test_procesio_env.py +159 -0
  80. procesio_cli/dashboard/web/actions.js +274 -0
  81. procesio_cli/dashboard/web/api.js +79 -0
  82. procesio_cli/dashboard/web/app.js +385 -0
  83. procesio_cli/dashboard/web/copilot.js +72 -0
  84. procesio_cli/dashboard/web/google.js +121 -0
  85. procesio_cli/dashboard/web/index.html +67 -0
  86. procesio_cli/dashboard/web/procesio_env.js +187 -0
  87. procesio_cli/dashboard/web/styles.css +207 -0
  88. procesio_cli/registry.py +370 -0
  89. procesio_cli/scripts/build-router.py +249 -0
  90. procesio_cli/scripts/build-tool-skill.py +202 -0
  91. procesio_cli/scripts/check-requirements.py +131 -0
  92. procesio_cli/scripts/check-skill-governance.py +174 -0
  93. procesio_cli/scripts/evaluate-skill-routing.py +217 -0
  94. procesio_cli/scripts/evaluate-skills.py +316 -0
  95. procesio_cli/scripts/get-skill.py +122 -0
  96. procesio_cli/scripts/list-skills.py +68 -0
  97. procesio_cli/scripts/list-tools.py +73 -0
  98. procesio_cli/scripts/run-agent.py +59 -0
  99. procesio_cli/scripts/run-tool.py +123 -0
  100. procesio_cli/scripts/secret_scan.py +584 -0
  101. procesio_cli/scripts/set-credential.py +126 -0
  102. procesio_cli/scripts/validate-skills.py +530 -0
  103. procesio_cli/skills/PORTFOLIO.md +134 -0
  104. procesio_cli/skills/__init__.py +6 -0
  105. procesio_cli/skills/agent-skill-engineer/SKILL.md +226 -0
  106. procesio_cli/skills/agent-skill-engineer/evals/evals.json +422 -0
  107. procesio_cli/skills/agent-skill-engineer/references/authoring-standard.md +178 -0
  108. procesio_cli/skills/agent-skill-engineer/references/decision-framework.md +107 -0
  109. procesio_cli/skills/agent-skill-engineer/references/domain-evidence-protocol.md +248 -0
  110. procesio_cli/skills/agent-skill-engineer/references/evaluation-standard.md +191 -0
  111. procesio_cli/skills/agent-skill-engineer/references/expert-lenses.md +167 -0
  112. procesio_cli/skills/agent-skill-engineer/references/field-gate-standard.md +231 -0
  113. procesio_cli/skills/agent-skill-engineer/references/optimization-protocol.md +233 -0
  114. procesio_cli/skills/agent-skill-engineer/references/optimizer-contract.md +268 -0
  115. procesio_cli/skills/agent-skill-engineer/references/portability-standard.md +99 -0
  116. procesio_cli/skills/agent-skill-engineer/references/research-basis.md +128 -0
  117. procesio_cli/skills/agent-skill-engineer/references/review-standard.md +143 -0
  118. procesio_cli/skills/agent-skill-engineer/scripts/audit_skill.py +959 -0
  119. procesio_cli/skills/agent-skill-engineer/scripts/optimize_skill.py +891 -0
  120. procesio_cli/skills/agent-skill-engineer/scripts/scaffold_skill.py +397 -0
  121. procesio_cli/skills/evals/baseline-catalog.json +14 -0
  122. procesio_cli/skills/evals/baseline-routing-v2.json +38 -0
  123. procesio_cli/skills/evals/baseline.json +37 -0
  124. procesio_cli/skills/evals/behavioral.json +367 -0
  125. procesio_cli/skills/evals/field-boundary-development-v1.json +126 -0
  126. procesio_cli/skills/evals/field-closeout-correction-development-v1.json +23 -0
  127. procesio_cli/skills/evals/field-closeout-development-v1.json +89 -0
  128. procesio_cli/skills/evals/portfolio-pressure-training-v1.json +83 -0
  129. procesio_cli/skills/evals/routing.json +363 -0
  130. procesio_cli/skills/evals/validation-baseline.json +4 -0
  131. procesio_cli/skills/procesio-cli/SKILL.md +134 -0
  132. procesio_cli/skills/procesio-cli/evals/evals.json +111 -0
  133. procesio_cli/skills/procesio-cli/evals/workflows.json +16 -0
  134. procesio_cli/skills/procesio-cli/references/connector-lifecycle.md +47 -0
  135. procesio_cli/skills/procesio-cli/references/credentials-admin.md +113 -0
  136. procesio_cli/skills/procesio-cli/references/data-verification.md +71 -0
  137. procesio_cli/skills/procesio-cli/references/documents-files.md +44 -0
  138. procesio_cli/skills/procesio-cli/references/form-e2e.md +57 -0
  139. procesio_cli/skills/procesio-cli/references/operation-contract.md +138 -0
  140. procesio_cli/skills/procesio-cli/references/process-debugging.md +65 -0
  141. procesio_cli/skills/procesio-cli/references/process-lifecycle.md +88 -0
  142. procesio_cli/skills/procesio-cli/references/schedules-webhooks.md +58 -0
  143. procesio_cli/skills/procesio-cli/references/transport-environments.md +53 -0
  144. procesio_cli/skills/procesio-cli-maintainer/SKILL.md +84 -0
  145. procesio_cli/skills/procesio-cli-maintainer/evals/evals.json +116 -0
  146. procesio_cli/skills/procesio-cli-maintainer/references/change-contract.md +34 -0
  147. procesio_cli/skills/procesio-cli-maintainer/references/mcp-compatibility.md +13 -0
  148. procesio_cli/skills/procesio-cli-maintainer/references/skill-authoring.md +51 -0
  149. procesio_cli/skills/procesio-platform-advisor/SKILL.md +82 -0
  150. procesio_cli/skills/procesio-platform-advisor/evals/evals.json +116 -0
  151. procesio_cli/skills/procesio-platform-advisor/references/capability-map.md +22 -0
  152. procesio_cli/skills/procesio-platform-advisor/references/fit-framework.md +35 -0
  153. procesio_cli/skills/procesio-platform-advisor/references/freshness-policy.md +25 -0
  154. procesio_cli/skills/procesio-platform-advisor/references/sizing-method.md +70 -0
  155. procesio_cli/skills/procesio-platform-advisor/scripts/estimate_capacity.py +99 -0
  156. procesio_cli/skills/procesio-setup/SKILL.md +180 -0
  157. procesio_cli/skills/sql-server-optimizer/SKILL.md +86 -0
  158. procesio_cli/skills/sql-server-optimizer/evals/evals.json +116 -0
  159. procesio_cli/skills/sql-server-optimizer/references/db-context.md +44 -0
  160. procesio_cli/skills/sql-server-optimizer/references/generic-mode.md +32 -0
  161. procesio_cli/skills/sql-server-optimizer/references/procesio-mode.md +40 -0
  162. procesio_cli/skills/sql-server-optimizer/references/sql-rules.md +43 -0
  163. procesio_cli/skills/sql-server-optimizer/scripts/export-indexes.sql +178 -0
  164. procesio_cli/skills/sql-server-optimizer/scripts/export-procs-and-functions.sql +118 -0
  165. procesio_cli/skills/sql-server-optimizer/scripts/export-tables.sql +367 -0
  166. procesio_cli/skills/tests/__init__.py +0 -0
  167. procesio_cli/skills/tests/test_agent_skill_engineer.py +240 -0
  168. procesio_cli/skills/tests/test_auth_failure_stop.py +25 -0
  169. procesio_cli/skills/tests/test_capacity_estimator.py +85 -0
  170. procesio_cli/skills/tests/test_field_boundary_learning.py +100 -0
  171. procesio_cli/skills/tests/test_field_closeout_learning.py +123 -0
  172. procesio_cli/skills/tests/test_field_gate_standard.py +76 -0
  173. procesio_cli/skills/tests/test_operational_playbooks.py +51 -0
  174. procesio_cli/skills/tests/test_portfolio_pressure_training.py +35 -0
  175. procesio_cli/skills/tests/test_process_lifecycle_single_run.py +25 -0
  176. procesio_cli/skills/tests/test_skill_evaluator.py +67 -0
  177. procesio_cli/skills/tests/test_skill_optimizer.py +473 -0
  178. procesio_cli/skills/tests/test_skill_portfolio_review.py +70 -0
  179. procesio_cli/skills/tests/test_skill_release_binding.py +204 -0
  180. procesio_cli/skills/tests/test_skill_routing.py +74 -0
  181. procesio_cli/skills/tests/test_skill_scaffold_v2.py +116 -0
  182. procesio_cli/skills/tests/test_validate_skills.py +115 -0
  183. procesio_cli/tools/__init__.py +0 -0
  184. procesio_cli/tools/_lib/README.md +119 -0
  185. procesio_cli/tools/_lib/__init__.py +0 -0
  186. procesio_cli/tools/_lib/accounting.py +120 -0
  187. procesio_cli/tools/_lib/contacts.py +544 -0
  188. procesio_cli/tools/_lib/creds.py +83 -0
  189. procesio_cli/tools/_lib/creds_backends.py +578 -0
  190. procesio_cli/tools/_lib/dbprofiles.py +147 -0
  191. procesio_cli/tools/_lib/dbquery.py +286 -0
  192. procesio_cli/tools/_lib/dbschema.py +225 -0
  193. procesio_cli/tools/_lib/io.py +54 -0
  194. procesio_cli/tools/_lib/manifest.py +297 -0
  195. procesio_cli/tools/_lib/skill_release.py +127 -0
  196. procesio_cli/tools/_lib/skill_resources.py +118 -0
  197. procesio_cli/tools/_lib/userdata.py +228 -0
  198. procesio_cli/tools/_lib/webserialize/__init__.py +16 -0
  199. procesio_cli/tools/_lib/webserialize/admin.py +61 -0
  200. procesio_cli/tools/_lib/webserialize/client.py +264 -0
  201. procesio_cli/tools/_lib/webserialize/config.py +96 -0
  202. procesio_cli/tools/_lib/webserialize/errors.py +27 -0
  203. procesio_cli/tools/_lib/webserialize/framing.py +45 -0
  204. procesio_cli/tools/_lib/webserialize/registry.py +47 -0
  205. procesio_cli/tools/_lib/webserialize/runtime.py +61 -0
  206. procesio_cli/tools/_lib/webserialize/server.py +510 -0
  207. procesio_cli/tools/_lib/websession.py +194 -0
  208. procesio_cli/tools/connector-builder/CONNECTOR-BUILDER-API-NOTES.md +91 -0
  209. procesio_cli/tools/connector-builder/README.md +101 -0
  210. procesio_cli/tools/connector-builder/SKILL.md +248 -0
  211. procesio_cli/tools/connector-builder/__init__.py +7 -0
  212. procesio_cli/tools/connector-builder/actiondef.py +24 -0
  213. procesio_cli/tools/connector-builder/client.py +251 -0
  214. procesio_cli/tools/connector-builder/errors.py +44 -0
  215. procesio_cli/tools/connector-builder/gen_manifest.py +142 -0
  216. procesio_cli/tools/connector-builder/handlers/__init__.py +1 -0
  217. procesio_cli/tools/connector-builder/handlers/admin.py +182 -0
  218. procesio_cli/tools/connector-builder/handlers/auth.py +74 -0
  219. procesio_cli/tools/connector-builder/handlers/builds.py +396 -0
  220. procesio_cli/tools/connector-builder/handlers/common.py +104 -0
  221. procesio_cli/tools/connector-builder/handlers/files.py +111 -0
  222. procesio_cli/tools/connector-builder/handlers/raw.py +38 -0
  223. procesio_cli/tools/connector-builder/handlers/telemetry.py +39 -0
  224. procesio_cli/tools/connector-builder/main.py +94 -0
  225. procesio_cli/tools/connector-builder/tests/conftest.py +146 -0
  226. procesio_cli/tools/connector-builder/tests/test_cb_client.py +86 -0
  227. procesio_cli/tools/connector-builder/tests/test_cb_dispatch.py +105 -0
  228. procesio_cli/tools/connector-builder/tests/test_cb_manifest_sync.py +76 -0
  229. procesio_cli/tools/connector-builder/tests/test_cb_wait.py +123 -0
  230. procesio_cli/tools/connector-builder/tool.yaml +671 -0
  231. procesio_cli/tools/framework-map/.gitattributes +2 -0
  232. procesio_cli/tools/framework-map/README.md +98 -0
  233. procesio_cli/tools/framework-map/SKILL.md +30 -0
  234. procesio_cli/tools/framework-map/app.js +188 -0
  235. procesio_cli/tools/framework-map/fm_builder.py +476 -0
  236. procesio_cli/tools/framework-map/fm_catalog.py +19 -0
  237. procesio_cli/tools/framework-map/fm_ro_catalog.py +94 -0
  238. procesio_cli/tools/framework-map/fm_strings.py +101 -0
  239. procesio_cli/tools/framework-map/main.py +95 -0
  240. procesio_cli/tools/framework-map/styles.css +214 -0
  241. procesio_cli/tools/framework-map/tests/conftest.py +33 -0
  242. procesio_cli/tools/framework-map/tests/test_fm_build.py +126 -0
  243. procesio_cli/tools/framework-map/tests/test_fm_manifest_sync.py +63 -0
  244. procesio_cli/tools/framework-map/tests/test_fm_store_tree.py +75 -0
  245. procesio_cli/tools/framework-map/tool.yaml +61 -0
  246. procesio_cli/tools/mysql/MOVED-TO-CENTRAL.md +29 -0
  247. procesio_cli/tools/mysql/README.md +196 -0
  248. procesio_cli/tools/mysql/SKILL.md +37 -0
  249. procesio_cli/tools/mysql/__init__.py +0 -0
  250. procesio_cli/tools/mysql/connection.py +191 -0
  251. procesio_cli/tools/mysql/main.py +487 -0
  252. procesio_cli/tools/mysql/profiles.template.json +1 -0
  253. procesio_cli/tools/mysql/schema.py +434 -0
  254. procesio_cli/tools/mysql/tests/__init__.py +0 -0
  255. procesio_cli/tools/mysql/tests/conftest.py +21 -0
  256. procesio_cli/tools/mysql/tests/test_manifest_sync.py +68 -0
  257. procesio_cli/tools/mysql/tests/test_mysql.py +201 -0
  258. procesio_cli/tools/mysql/tests/test_mysql_schema.py +337 -0
  259. procesio_cli/tools/mysql/tool.yaml +112 -0
  260. procesio_cli/tools/procesio/DTO-SUBTOOLS-NOTE.md +360 -0
  261. procesio_cli/tools/procesio/FORM-DEV-GUIDE/00-INDEX.md +67 -0
  262. procesio_cli/tools/procesio/FORM-DEV-GUIDE/01-ANATOMY.md +209 -0
  263. procesio_cli/tools/procesio/FORM-DEV-GUIDE/02-CODE-INJECTION.md +309 -0
  264. procesio_cli/tools/procesio/FORM-DEV-GUIDE/03-DOM-CONTRACT.md +370 -0
  265. procesio_cli/tools/procesio/FORM-DEV-GUIDE/04-INTERACTION-RECIPES.md +600 -0
  266. procesio_cli/tools/procesio/FORM-DEV-GUIDE/05-STEPPER-AND-MOTION.md +426 -0
  267. procesio_cli/tools/procesio/FORM-DEV-GUIDE/06-PROCESS-INTEGRATION.md +347 -0
  268. procesio_cli/tools/procesio/FORM-DEV-GUIDE/07-DEPLOY-WORKFLOW.md +294 -0
  269. procesio_cli/tools/procesio/FORM-DEV-GUIDE/08-PITFALLS.md +569 -0
  270. procesio_cli/tools/procesio/FORM-DEV-GUIDE/09-NAVIGATION-AND-HOSTING.md +308 -0
  271. procesio_cli/tools/procesio/PHASE4-E2E-NOTES.md +594 -0
  272. procesio_cli/tools/procesio/PROCESIO-API-CORRECTIONS.md +295 -0
  273. procesio_cli/tools/procesio/PROCESIO-API-NOTES.md +6976 -0
  274. procesio_cli/tools/procesio/PROCESIO-AUTH-NOTES.md +226 -0
  275. procesio_cli/tools/procesio/PROCESIO-CARD-BUILD-NOTES.md +183 -0
  276. procesio_cli/tools/procesio/PROCESIO-CONNECTORS-NOTES.md +141 -0
  277. procesio_cli/tools/procesio/PROCESIO-CUSTOM-ACTION-NOTES.md +179 -0
  278. procesio_cli/tools/procesio/PROCESIO-DOCS-FIX-REPORT.md +123 -0
  279. procesio_cli/tools/procesio/PROCESIO-ENVIRONMENTS-NOTES.md +94 -0
  280. procesio_cli/tools/procesio/PROCESIO-FE-VALIDATION-NOTES.md +107 -0
  281. procesio_cli/tools/procesio/PROCESIO-FOREACH-NOTES.md +199 -0
  282. procesio_cli/tools/procesio/PROCESIO-FORM-API-HANG-NOTE.md +101 -0
  283. procesio_cli/tools/procesio/PROCESIO-FORM-SUBMISSION-NOTES.md +172 -0
  284. procesio_cli/tools/procesio/PROCESIO-HTML-TO-DOCX-NOTES.md +110 -0
  285. procesio_cli/tools/procesio/PROCESIO-INSTANCE-HISTORY-NOTES.md +242 -0
  286. procesio_cli/tools/procesio/PROCESIO-METERING-NOTES.md +201 -0
  287. procesio_cli/tools/procesio/PROCESIO-NODE-CODE-NOTES.md +279 -0
  288. procesio_cli/tools/procesio/PROCESIO-NODE-MODULE-WHITELIST.md +113 -0
  289. procesio_cli/tools/procesio/PROCESIO-PYTHON-ACTION-NOTES.md +165 -0
  290. procesio_cli/tools/procesio/PROCESIO-QUERY-STORE-NOTES.md +826 -0
  291. procesio_cli/tools/procesio/PROCESIO-RECONCILIATION-PATTERNS.md +104 -0
  292. procesio_cli/tools/procesio/PROCESIO-RESOURCE-MODEL-NOTES.md +1100 -0
  293. procesio_cli/tools/procesio/PROCESIO-SEND-EMAIL-CRED-OPTIONALITY.md +45 -0
  294. procesio_cli/tools/procesio/PROCESIO-SEND-EMAIL-NOTES.md +252 -0
  295. procesio_cli/tools/procesio/PROCESIO-SQL-ACTIONS-NOTES.md +284 -0
  296. procesio_cli/tools/procesio/PROCESIO-USAGE-GUIDE.md +219 -0
  297. procesio_cli/tools/procesio/README.md +341 -0
  298. procesio_cli/tools/procesio/SCHEDULE-INPUT-SECURITY-NOTES.md +63 -0
  299. procesio_cli/tools/procesio/SKILL.md +694 -0
  300. procesio_cli/tools/procesio/__init__.py +1 -0
  301. procesio_cli/tools/procesio/actiondef.py +27 -0
  302. procesio_cli/tools/procesio/assets/html2docx/html2docx.js +2155 -0
  303. procesio_cli/tools/procesio/auth.py +354 -0
  304. procesio_cli/tools/procesio/autogen.py +121 -0
  305. procesio_cli/tools/procesio/client.py +355 -0
  306. procesio_cli/tools/procesio/config.py +96 -0
  307. procesio_cli/tools/procesio/data/endpoints.json +2901 -0
  308. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/01-authentication.md +180 -0
  309. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/02-conventions.md +116 -0
  310. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/ANONYMOUS-SURFACE.md +51 -0
  311. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/README.md +104 -0
  312. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/SYMBOL-INDEX.md +444 -0
  313. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/03-auth-users-workspaces.md +731 -0
  314. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/04-processes.md +913 -0
  315. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/05-actions.md +605 -0
  316. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/06-files.md +237 -0
  317. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/07-forms-documents.md +985 -0
  318. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/08-credentials.md +532 -0
  319. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/09-datastore-datatypes.md +830 -0
  320. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/10-custom-urls.md +319 -0
  321. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/11-subscriptions-resources-analytics.md +455 -0
  322. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/12-webhooks-notifications-misc.md +519 -0
  323. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/13-realtime-signalr.md +153 -0
  324. procesio_cli/tools/procesio/docs_info/API-DOCUMENTATION/endpoints/99-internal-and-other-services.md +52 -0
  325. procesio_cli/tools/procesio/docs_info/FormBuilder mock.ts +5725 -0
  326. procesio_cli/tools/procesio/docs_info/Procesio Platform Actions.json +30219 -0
  327. procesio_cli/tools/procesio/docs_info/form-config-enums.ts +92 -0
  328. procesio_cli/tools/procesio/docs_info/form-theme.ts +1603 -0
  329. procesio_cli/tools/procesio/docs_info/process-validation-reference-1.md +2739 -0
  330. procesio_cli/tools/procesio/dto/__init__.py +13 -0
  331. procesio_cli/tools/procesio/dto/credential/builder.py +179 -0
  332. procesio_cli/tools/procesio/dto/credential/config.schema.json +19 -0
  333. procesio_cli/tools/procesio/dto/credential/description.md +193 -0
  334. procesio_cli/tools/procesio/dto/credential/fixtures/rest.config.json +11 -0
  335. procesio_cli/tools/procesio/dto/credential/fixtures/rest.dto.json +28 -0
  336. procesio_cli/tools/procesio/dto/credential/fixtures/rest.template.json +44 -0
  337. procesio_cli/tools/procesio/dto/credential/template.dto.json +16 -0
  338. procesio_cli/tools/procesio/dto/data/_refresh.py +147 -0
  339. procesio_cli/tools/procesio/dto/data/action_catalog.json +30825 -0
  340. procesio_cli/tools/procesio/dto/data/action_families.json +55 -0
  341. procesio_cli/tools/procesio/dto/data/platform_types.json +182 -0
  342. procesio_cli/tools/procesio/dto/datatype/builder.py +223 -0
  343. procesio_cli/tools/procesio/dto/datatype/config.schema.json +47 -0
  344. procesio_cli/tools/procesio/dto/datatype/description.md +85 -0
  345. procesio_cli/tools/procesio/dto/datatype/fixtures/customer.config.json +41 -0
  346. procesio_cli/tools/procesio/dto/datatype/fixtures/customer.dto.json +164 -0
  347. procesio_cli/tools/procesio/dto/datatype/template.dto.json +37 -0
  348. procesio_cli/tools/procesio/dto/document/builder.py +193 -0
  349. procesio_cli/tools/procesio/dto/document/config.schema.json +33 -0
  350. procesio_cli/tools/procesio/dto/document/description.md +124 -0
  351. procesio_cli/tools/procesio/dto/document/fixtures/invoice.config.json +16 -0
  352. procesio_cli/tools/procesio/dto/document/fixtures/invoice.dto.json +32 -0
  353. procesio_cli/tools/procesio/dto/document/template.dto.json +14 -0
  354. procesio_cli/tools/procesio/dto/form/FORM-STYLING-NOTES.md +142 -0
  355. procesio_cli/tools/procesio/dto/form/GOLDEN-DRIFT-NOTES.md +72 -0
  356. procesio_cli/tools/procesio/dto/form/RUN-PROCESS-RESULT-NOTES.md +80 -0
  357. procesio_cli/tools/procesio/dto/form/addelement.py +277 -0
  358. procesio_cli/tools/procesio/dto/form/builder.py +1009 -0
  359. procesio_cli/tools/procesio/dto/form/capture_goldens.py +106 -0
  360. procesio_cli/tools/procesio/dto/form/code_cipher.py +67 -0
  361. procesio_cli/tools/procesio/dto/form/config.schema.json +76 -0
  362. procesio_cli/tools/procesio/dto/form/data_shell.json +1 -0
  363. procesio_cli/tools/procesio/dto/form/description.md +346 -0
  364. procesio_cli/tools/procesio/dto/form/elements/approval.json +259 -0
  365. procesio_cli/tools/procesio/dto/form/elements/assignee.json +137 -0
  366. procesio_cli/tools/procesio/dto/form/elements/button.json +125 -0
  367. procesio_cli/tools/procesio/dto/form/elements/chart.json +341 -0
  368. procesio_cli/tools/procesio/dto/form/elements/chat.json +199 -0
  369. procesio_cli/tools/procesio/dto/form/elements/checkbox.json +153 -0
  370. procesio_cli/tools/procesio/dto/form/elements/column.json +77 -0
  371. procesio_cli/tools/procesio/dto/form/elements/columns.json +78 -0
  372. procesio_cli/tools/procesio/dto/form/elements/datetime-input.json +304 -0
  373. procesio_cli/tools/procesio/dto/form/elements/divider.json +54 -0
  374. procesio_cli/tools/procesio/dto/form/elements/dropdown.json +130 -0
  375. procesio_cli/tools/procesio/dto/form/elements/dynamic-table-row.json +253 -0
  376. procesio_cli/tools/procesio/dto/form/elements/file-upload.json +196 -0
  377. procesio_cli/tools/procesio/dto/form/elements/file-viewer.json +169 -0
  378. procesio_cli/tools/procesio/dto/form/elements/heading.json +79 -0
  379. procesio_cli/tools/procesio/dto/form/elements/icon.json +107 -0
  380. procesio_cli/tools/procesio/dto/form/elements/image.json +174 -0
  381. procesio_cli/tools/procesio/dto/form/elements/input.json +206 -0
  382. procesio_cli/tools/procesio/dto/form/elements/list.json +202 -0
  383. procesio_cli/tools/procesio/dto/form/elements/number-input.json +202 -0
  384. procesio_cli/tools/procesio/dto/form/elements/paragraph.json +79 -0
  385. procesio_cli/tools/procesio/dto/form/elements/radiobox.json +174 -0
  386. procesio_cli/tools/procesio/dto/form/elements/section.json +114 -0
  387. procesio_cli/tools/procesio/dto/form/elements/select.json +217 -0
  388. procesio_cli/tools/procesio/dto/form/elements/side-panel.json +146 -0
  389. procesio_cli/tools/procesio/dto/form/elements/signature-pad.json +141 -0
  390. procesio_cli/tools/procesio/dto/form/elements/static-table-row.json +84 -0
  391. procesio_cli/tools/procesio/dto/form/elements/step.json +105 -0
  392. procesio_cli/tools/procesio/dto/form/elements/stepper.json +126 -0
  393. procesio_cli/tools/procesio/dto/form/elements/tab.json +77 -0
  394. procesio_cli/tools/procesio/dto/form/elements/table.json +279 -0
  395. procesio_cli/tools/procesio/dto/form/elements/tabs.json +114 -0
  396. procesio_cli/tools/procesio/dto/form/elements/textarea.json +213 -0
  397. procesio_cli/tools/procesio/dto/form/enum_map.json +68 -0
  398. procesio_cli/tools/procesio/dto/form/fieldpath.py +284 -0
  399. procesio_cli/tools/procesio/dto/form/fixtures/reg.config.json +32 -0
  400. procesio_cli/tools/procesio/dto/form/fixtures/reg.elements.json +638 -0
  401. procesio_cli/tools/procesio/dto/form/sync_from_mock.py +386 -0
  402. procesio_cli/tools/procesio/dto/framework.py +125 -0
  403. procesio_cli/tools/procesio/dto/process/builder.py +1991 -0
  404. procesio_cli/tools/procesio/dto/process/config.schema.json +159 -0
  405. procesio_cli/tools/procesio/dto/process/description.md +218 -0
  406. procesio_cli/tools/procesio/dto/process/fixtures/greet.config.json +32 -0
  407. procesio_cli/tools/procesio/dto/process/fixtures/greet.dto.json +317 -0
  408. procesio_cli/tools/procesio/dto/process/naming.py +305 -0
  409. procesio_cli/tools/procesio/dto/process/normalize.py +74 -0
  410. procesio_cli/tools/procesio/dto/process/template.dto.json +32 -0
  411. procesio_cli/tools/procesio/dto/refdata.py +87 -0
  412. procesio_cli/tools/procesio/dto/registry.py +27 -0
  413. procesio_cli/tools/procesio/dto/webhook/builder.py +142 -0
  414. procesio_cli/tools/procesio/dto/webhook/config.schema.json +25 -0
  415. procesio_cli/tools/procesio/dto/webhook/description.md +92 -0
  416. procesio_cli/tools/procesio/dto/webhook/fixtures/order.config.json +10 -0
  417. procesio_cli/tools/procesio/dto/webhook/fixtures/order.dto.json +25 -0
  418. procesio_cli/tools/procesio/dto/webhook/template.dto.json +14 -0
  419. procesio_cli/tools/procesio/environments.py +264 -0
  420. procesio_cli/tools/procesio/errors.py +166 -0
  421. procesio_cli/tools/procesio/flowmodel/README.md +37 -0
  422. procesio_cli/tools/procesio/flowmodel/__init__.py +14 -0
  423. procesio_cli/tools/procesio/flowmodel/digest.py +223 -0
  424. procesio_cli/tools/procesio/flowmodel/families.py +34 -0
  425. procesio_cli/tools/procesio/flowmodel/fevalidation.py +1098 -0
  426. procesio_cli/tools/procesio/flowmodel/formdigest.py +232 -0
  427. procesio_cli/tools/procesio/flowmodel/inspect.py +78 -0
  428. procesio_cli/tools/procesio/flowmodel/model.py +82 -0
  429. procesio_cli/tools/procesio/flowmodel/nodeparam.py +871 -0
  430. procesio_cli/tools/procesio/flowmodel/reader.py +191 -0
  431. procesio_cli/tools/procesio/flowmodel/sqlparam.py +410 -0
  432. procesio_cli/tools/procesio/form_code_keys.py +50 -0
  433. procesio_cli/tools/procesio/formlint.py +292 -0
  434. procesio_cli/tools/procesio/gen_manifest.py +118 -0
  435. procesio_cli/tools/procesio/handlers/__init__.py +1 -0
  436. procesio_cli/tools/procesio/handlers/auth_actions.py +103 -0
  437. procesio_cli/tools/procesio/handlers/catalog.py +147 -0
  438. procesio_cli/tools/procesio/handlers/common.py +90 -0
  439. procesio_cli/tools/procesio/handlers/customaction_ops.py +146 -0
  440. procesio_cli/tools/procesio/handlers/datastore_ops.py +482 -0
  441. procesio_cli/tools/procesio/handlers/datatype_ops.py +275 -0
  442. procesio_cli/tools/procesio/handlers/dto_actions.py +258 -0
  443. procesio_cli/tools/procesio/handlers/environment_admin.py +146 -0
  444. procesio_cli/tools/procesio/handlers/fevalidate.py +236 -0
  445. procesio_cli/tools/procesio/handlers/files.py +141 -0
  446. procesio_cli/tools/procesio/handlers/flowgraph.py +229 -0
  447. procesio_cli/tools/procesio/handlers/flowlint.py +269 -0
  448. procesio_cli/tools/procesio/handlers/form_chains.py +336 -0
  449. procesio_cli/tools/procesio/handlers/form_code.py +277 -0
  450. procesio_cli/tools/procesio/handlers/form_element.py +199 -0
  451. procesio_cli/tools/procesio/handlers/form_events.py +441 -0
  452. procesio_cli/tools/procesio/handlers/form_update.py +270 -0
  453. procesio_cli/tools/procesio/handlers/formprocess.py +211 -0
  454. procesio_cli/tools/procesio/handlers/generic.py +135 -0
  455. procesio_cli/tools/procesio/handlers/layout.py +137 -0
  456. procesio_cli/tools/procesio/handlers/nodeparams.py +1018 -0
  457. procesio_cli/tools/procesio/handlers/process_layout.py +189 -0
  458. procesio_cli/tools/procesio/handlers/process_naming.py +213 -0
  459. procesio_cli/tools/procesio/handlers/processes.py +416 -0
  460. procesio_cli/tools/procesio/handlers/profile_admin.py +184 -0
  461. procesio_cli/tools/procesio/handlers/resource_ops.py +447 -0
  462. procesio_cli/tools/procesio/handlers/schedules.py +320 -0
  463. procesio_cli/tools/procesio/handlers/sqlactions.py +232 -0
  464. procesio_cli/tools/procesio/handlers/transport.py +463 -0
  465. procesio_cli/tools/procesio/handlers/usageguide.py +222 -0
  466. procesio_cli/tools/procesio/layout/README.md +196 -0
  467. procesio_cli/tools/procesio/layout/__init__.py +11 -0
  468. procesio_cli/tools/procesio/layout/adapter.py +736 -0
  469. procesio_cli/tools/procesio/layout/cycles.py +186 -0
  470. procesio_cli/tools/procesio/layout/dispatch.py +39 -0
  471. procesio_cli/tools/procesio/layout/elk/elk_runner.mjs +50 -0
  472. procesio_cli/tools/procesio/layout/elk/package-lock.json +21 -0
  473. procesio_cli/tools/procesio/layout/elk/package.json +11 -0
  474. procesio_cli/tools/procesio/layout/elk_engine.py +568 -0
  475. procesio_cli/tools/procesio/layout/engine.py +1311 -0
  476. procesio_cli/tools/procesio/layout/report.py +187 -0
  477. procesio_cli/tools/procesio/main.py +179 -0
  478. procesio_cli/tools/procesio/profiles.py +193 -0
  479. procesio_cli/tools/procesio/reliability.py +193 -0
  480. procesio_cli/tools/procesio/sqlformat.py +167 -0
  481. procesio_cli/tools/procesio/swagger.py +51 -0
  482. procesio_cli/tools/procesio/tests/__init__.py +0 -0
  483. procesio_cli/tools/procesio/tests/conftest.py +129 -0
  484. procesio_cli/tools/procesio/tests/test_auth.py +200 -0
  485. procesio_cli/tools/procesio/tests/test_autogen.py +78 -0
  486. procesio_cli/tools/procesio/tests/test_builder_attrpath_sqlbind.py +180 -0
  487. procesio_cli/tools/procesio/tests/test_builder_custom_action_catalog.py +72 -0
  488. procesio_cli/tools/procesio/tests/test_client.py +114 -0
  489. procesio_cli/tools/procesio/tests/test_client_reliability.py +139 -0
  490. procesio_cli/tools/procesio/tests/test_customaction.py +103 -0
  491. procesio_cli/tools/procesio/tests/test_customaction_test.py +80 -0
  492. procesio_cli/tools/procesio/tests/test_cycles.py +69 -0
  493. procesio_cli/tools/procesio/tests/test_datastore.py +378 -0
  494. procesio_cli/tools/procesio/tests/test_datastore_node.py +94 -0
  495. procesio_cli/tools/procesio/tests/test_dispatch.py +170 -0
  496. procesio_cli/tools/procesio/tests/test_document_page_size.py +19 -0
  497. procesio_cli/tools/procesio/tests/test_dto.py +734 -0
  498. procesio_cli/tools/procesio/tests/test_edit_dryrun_preview.py +96 -0
  499. procesio_cli/tools/procesio/tests/test_elk_layout.py +221 -0
  500. procesio_cli/tools/procesio/tests/test_environments.py +214 -0
  501. procesio_cli/tools/procesio/tests/test_fevalidate_gate.py +104 -0
  502. procesio_cli/tools/procesio/tests/test_fevalidation.py +317 -0
  503. procesio_cli/tools/procesio/tests/test_fieldpath_variables.py +87 -0
  504. procesio_cli/tools/procesio/tests/test_files.py +72 -0
  505. procesio_cli/tools/procesio/tests/test_flow_digest.py +202 -0
  506. procesio_cli/tools/procesio/tests/test_flowlint.py +114 -0
  507. procesio_cli/tools/procesio/tests/test_flowmodel.py +158 -0
  508. procesio_cli/tools/procesio/tests/test_form_add_element.py +256 -0
  509. procesio_cli/tools/procesio/tests/test_form_approval_gaps.py +319 -0
  510. procesio_cli/tools/procesio/tests/test_form_auto_names.py +60 -0
  511. procesio_cli/tools/procesio/tests/test_form_chains.py +217 -0
  512. procesio_cli/tools/procesio/tests/test_form_code_actions.py +188 -0
  513. procesio_cli/tools/procesio/tests/test_form_code_keys.py +92 -0
  514. procesio_cli/tools/procesio/tests/test_form_code_style.py +178 -0
  515. procesio_cli/tools/procesio/tests/test_form_delete_element.py +99 -0
  516. procesio_cli/tools/procesio/tests/test_form_element_config.py +141 -0
  517. procesio_cli/tools/procesio/tests/test_form_event_maps.py +135 -0
  518. procesio_cli/tools/procesio/tests/test_form_event_ops.py +376 -0
  519. procesio_cli/tools/procesio/tests/test_form_event_replace.py +86 -0
  520. procesio_cli/tools/procesio/tests/test_form_events.py +92 -0
  521. procesio_cli/tools/procesio/tests/test_form_parity.py +171 -0
  522. procesio_cli/tools/procesio/tests/test_form_select_source.py +74 -0
  523. procesio_cli/tools/procesio/tests/test_form_sync.py +35 -0
  524. procesio_cli/tools/procesio/tests/test_form_update.py +133 -0
  525. procesio_cli/tools/procesio/tests/test_formlint.py +155 -0
  526. procesio_cli/tools/procesio/tests/test_formlint_css_scope.py +38 -0
  527. procesio_cli/tools/procesio/tests/test_formlint_field_names.py +83 -0
  528. procesio_cli/tools/procesio/tests/test_guards.py +110 -0
  529. procesio_cli/tools/procesio/tests/test_hidden_setting_types.py +39 -0
  530. procesio_cli/tools/procesio/tests/test_html2docx_asset.py +132 -0
  531. procesio_cli/tools/procesio/tests/test_key_handle_terminology.py +45 -0
  532. procesio_cli/tools/procesio/tests/test_layout.py +574 -0
  533. procesio_cli/tools/procesio/tests/test_layout_report.py +88 -0
  534. procesio_cli/tools/procesio/tests/test_manifest_sync.py +68 -0
  535. procesio_cli/tools/procesio/tests/test_nodedelete.py +151 -0
  536. procesio_cli/tools/procesio/tests/test_nodeparam.py +826 -0
  537. procesio_cli/tools/procesio/tests/test_normalize.py +70 -0
  538. procesio_cli/tools/procesio/tests/test_payload_docs.py +86 -0
  539. procesio_cli/tools/procesio/tests/test_process_action_naming.py +170 -0
  540. procesio_cli/tools/procesio/tests/test_process_call_api_seed.py +46 -0
  541. procesio_cli/tools/procesio/tests/test_process_ext.py +373 -0
  542. procesio_cli/tools/procesio/tests/test_process_invariants.py +183 -0
  543. procesio_cli/tools/procesio/tests/test_process_layout.py +117 -0
  544. procesio_cli/tools/procesio/tests/test_process_naming.py +188 -0
  545. procesio_cli/tools/procesio/tests/test_process_query_store.py +172 -0
  546. procesio_cli/tools/procesio/tests/test_processinfo_variable.py +56 -0
  547. procesio_cli/tools/procesio/tests/test_profiles.py +127 -0
  548. procesio_cli/tools/procesio/tests/test_put_projects.py +41 -0
  549. procesio_cli/tools/procesio/tests/test_reliability.py +107 -0
  550. procesio_cli/tools/procesio/tests/test_removal_gate.py +95 -0
  551. procesio_cli/tools/procesio/tests/test_resource_ops.py +173 -0
  552. procesio_cli/tools/procesio/tests/test_save_validity.py +207 -0
  553. procesio_cli/tools/procesio/tests/test_schedule_cron_shape.py +111 -0
  554. procesio_cli/tools/procesio/tests/test_schedules.py +309 -0
  555. procesio_cli/tools/procesio/tests/test_sqlconvert.py +234 -0
  556. procesio_cli/tools/procesio/tests/test_sqlformat.py +83 -0
  557. procesio_cli/tools/procesio/tests/test_sqlparam.py +187 -0
  558. procesio_cli/tools/procesio/tests/test_superseded_actions.py +54 -0
  559. procesio_cli/tools/procesio/tests/test_surgical_concurrency.py +156 -0
  560. procesio_cli/tools/procesio/tests/test_tier4.py +123 -0
  561. procesio_cli/tools/procesio/tests/test_transport.py +147 -0
  562. procesio_cli/tools/procesio/tests/test_transport_data_stores.py +168 -0
  563. procesio_cli/tools/procesio/tests/test_transport_mapper_repair.py +150 -0
  564. procesio_cli/tools/procesio/tests/test_transport_webhook_strip.py +253 -0
  565. procesio_cli/tools/procesio/tests/test_usage_guide.py +96 -0
  566. procesio_cli/tools/procesio/tool.yaml +12486 -0
  567. procesio_cli/tools/sqlserver/MOVED-TO-CENTRAL.md +29 -0
  568. procesio_cli/tools/sqlserver/README.md +192 -0
  569. procesio_cli/tools/sqlserver/SKILL.md +37 -0
  570. procesio_cli/tools/sqlserver/SQLSERVER-SCHEMA-NOTES.md +284 -0
  571. procesio_cli/tools/sqlserver/__init__.py +0 -0
  572. procesio_cli/tools/sqlserver/connection.py +242 -0
  573. procesio_cli/tools/sqlserver/main.py +521 -0
  574. procesio_cli/tools/sqlserver/profiles.template.json +1 -0
  575. procesio_cli/tools/sqlserver/schema.py +600 -0
  576. procesio_cli/tools/sqlserver/tests/__init__.py +0 -0
  577. procesio_cli/tools/sqlserver/tests/conftest.py +21 -0
  578. procesio_cli/tools/sqlserver/tests/test_connection.py +75 -0
  579. procesio_cli/tools/sqlserver/tests/test_dbprofiles.py +92 -0
  580. procesio_cli/tools/sqlserver/tests/test_dbquery.py +220 -0
  581. procesio_cli/tools/sqlserver/tests/test_manifest_sync.py +68 -0
  582. procesio_cli/tools/sqlserver/tests/test_sqlserver.py +326 -0
  583. procesio_cli/tools/sqlserver/tests/test_sqlserver_schema.py +488 -0
  584. procesio_cli/tools/sqlserver/tool.yaml +123 -0
  585. procesio_cli/tools/web/README.md +381 -0
  586. procesio_cli/tools/web/SKILL.md +37 -0
  587. procesio_cli/tools/web/WEB-AUTOMATION-NOTES.md +277 -0
  588. procesio_cli/tools/web/__init__.py +21 -0
  589. procesio_cli/tools/web/actiondef.py +24 -0
  590. procesio_cli/tools/web/api.py +444 -0
  591. procesio_cli/tools/web/brokered.py +107 -0
  592. procesio_cli/tools/web/driver.py +839 -0
  593. procesio_cli/tools/web/drivercontract.py +44 -0
  594. procesio_cli/tools/web/errors.py +54 -0
  595. procesio_cli/tools/web/handlers/__init__.py +1 -0
  596. procesio_cli/tools/web/handlers/archive.py +367 -0
  597. procesio_cli/tools/web/handlers/browse.py +182 -0
  598. procesio_cli/tools/web/handlers/contacts.py +74 -0
  599. procesio_cli/tools/web/handlers/sessmgmt.py +120 -0
  600. procesio_cli/tools/web/main.py +128 -0
  601. procesio_cli/tools/web/sessions.py +253 -0
  602. procesio_cli/tools/web/steps.py +162 -0
  603. procesio_cli/tools/web/tests/__init__.py +0 -0
  604. procesio_cli/tools/web/tests/conftest.py +197 -0
  605. procesio_cli/tools/web/tests/test_api.py +330 -0
  606. procesio_cli/tools/web/tests/test_archive.py +190 -0
  607. procesio_cli/tools/web/tests/test_brokered.py +138 -0
  608. procesio_cli/tools/web/tests/test_dispatch.py +132 -0
  609. procesio_cli/tools/web/tests/test_errors.py +60 -0
  610. procesio_cli/tools/web/tests/test_manifest_sync.py +76 -0
  611. procesio_cli/tools/web/tests/test_page_contacts.py +68 -0
  612. procesio_cli/tools/web/tests/test_sessions.py +145 -0
  613. procesio_cli/tools/web/tests/test_steps.py +210 -0
  614. procesio_cli/tools/web/tool.yaml +184 -0
  615. procesio_cli/tools/xlsx/README.md +34 -0
  616. procesio_cli/tools/xlsx/SKILL.md +28 -0
  617. procesio_cli/tools/xlsx/__init__.py +0 -0
  618. procesio_cli/tools/xlsx/main.py +129 -0
  619. procesio_cli/tools/xlsx/reader.py +91 -0
  620. procesio_cli/tools/xlsx/tests/__init__.py +0 -0
  621. procesio_cli/tools/xlsx/tests/conftest.py +39 -0
  622. procesio_cli/tools/xlsx/tests/test_xlsx.py +103 -0
  623. procesio_cli/tools/xlsx/tool.yaml +30 -0
  624. procesio_cli/webplatform/aat_mcp/AAT-MCP-NOTES.md +244 -0
  625. procesio_cli/webplatform/aat_mcp/README.md +78 -0
  626. procesio_cli/webplatform/aat_mcp/bridge.py +705 -0
  627. procesio_cli/webplatform/aat_mcp/chat_server.py +194 -0
  628. procesio_cli/webplatform/aat_mcp/chat_surface.snapshot.json +668 -0
  629. procesio_cli/webplatform/aat_mcp/chat_surface.yaml +372 -0
  630. procesio_cli/webplatform/aat_mcp/gate.py +68 -0
  631. procesio_cli/webplatform/aat_mcp/http_server.py +139 -0
  632. procesio_cli/webplatform/aat_mcp/protocol.py +175 -0
  633. procesio_cli/webplatform/aat_mcp/server.py +306 -0
  634. procesio_cli/webplatform/aat_mcp/tests/conftest.py +8 -0
  635. procesio_cli/webplatform/aat_mcp/tests/test_aat_mcp.py +255 -0
  636. procesio_cli/webplatform/aat_mcp/tests/test_chat_surface.py +247 -0
  637. procesio_cli/webplatform/aat_mcp/tests/test_discovery.py +489 -0
  638. procesio_cli/webplatform/aat_mcp/tests/test_multiuser.py +86 -0
  639. procesio_cli/webplatform/aat_mcp/tests/test_progressive_discovery.py +89 -0
  640. procesio_cli/webplatform/aat_mcp/tests/test_protocol.py +180 -0
  641. procesio_cli/webplatform/aat_mcp/tests/test_skill_discovery.py +23 -0
  642. procesio_cli-0.1.1.dist-info/METADATA +467 -0
  643. procesio_cli-0.1.1.dist-info/RECORD +647 -0
  644. procesio_cli-0.1.1.dist-info/WHEEL +4 -0
  645. procesio_cli-0.1.1.dist-info/entry_points.txt +7 -0
  646. procesio_cli-0.1.1.dist-info/licenses/LICENSE +201 -0
  647. procesio_cli-0.1.1.dist-info/licenses/NOTICE +5 -0
@@ -0,0 +1,830 @@
1
+ # Data Store & Data Types endpoints
2
+
3
+ > Service: **Web-Api** (public gateway) · Base URL: see [../02-conventions.md](../02-conventions.md) · Auth: see [../01-authentication.md](../01-authentication.md)
4
+ > Source controllers:
5
+ > - `BE/Web-Api/WebApi/Application/Controllers/DataStore/DataStoreController.cs`
6
+ > - `BE/Web-Api/WebApi/Application/Controllers/DataStore/DataStoreRowsController.cs`
7
+ > - `BE/Web-Api/WebApi/Application/Controllers/DataStore/DataStoreCsvController.cs`
8
+ > - `BE/Web-Api/WebApi/Application/Controllers/DataTypesController.cs`
9
+
10
+ This domain covers two related capabilities.
11
+
12
+ **Data Store** is PROCESIO's user-defined dynamic data-table feature: tenants define a table (a "data store") with a typed column schema, then read/write rows in it. A data store is backed by an internal **data model** (a data type) describing its columns. Rows are exchanged as JSON dictionaries keyed by **column display name** (never by the internal column alias). Large reads/writes can be offloaded to asynchronous **CSV jobs** (import/export) that produce downloadable files.
13
+
14
+ **Data Types** (a.k.a. data models) are the platform's type-definition registry: primitive types, PROCESIO built-in types, and user-defined composite "data models" (objects with nested attributes). These types are what columns, process variables, and action inputs/outputs are typed against. This controller manages their CRUD, cloning, attribute editing, generation from sample content, and read-only listing of primary/PROCESIO types.
15
+
16
+ All routes are served under the Web-Api gateway base URL. Versioning is via the optional `x-version` header (default `1.19`). Unless an endpoint is marked **Auth: Anonymous**, send a Bearer JWT (see [../01-authentication.md](../01-authentication.md)). All four controllers are PUBLIC (none carry `[SecureInternalController]`; no `internal/` route prefix).
17
+
18
+ Error responses for the Data Store controllers use `ProducesResponseType(List<ApiErrorResponse>)` (see Shared DTOs → `ApiErrorResponse`). The Data Types controller returns its errors as `400 Bad Request` with a list of composed error objects.
19
+
20
+ ---
21
+
22
+ ## Endpoints
23
+
24
+ > ⚠ **STALE on row reads (corrected 2026-08).** After the "unified row filters" release (Web-Api #1453 / Data-Store #16), reads go through **`POST api/DataStore/{dataStoreId}/rows/filter`** with a JSON body — NOT the `GET .../rows` query-string form documented below. Pagination is on the QUERY STRING (`?pageNumber=&pageItemCount=`); the body is a recursive filter tree `{filter:<group>, sort:[{column,direction}]}` (empty = read all). The operator set is the FULL `QueryOperators` enum (0..20), not the 1–8 subset shown here. Update = `{values,filter}`, delete = `{filter}` — a non-empty filter is MANDATORY (no key-array form). See `tools/procesio/PROCESIO-API-NOTES.md` ## DataStore (authoritative); the tool's `datastore-*` actions implement the corrected contract.
25
+
26
+ ### DataStoreController — `api/DataStore` (table / schema CRUD)
27
+
28
+ Controller route: `[Route("api/[controller]")]` → **`api/DataStore`**. Controller-level permission entity: `DataStore`.
29
+
30
+ ---
31
+
32
+ #### `POST api/DataStore`
33
+
34
+ - **Operation:** `Create` — Create a new data store (table + column schema).
35
+ - **Auth:** Bearer JWT — **Permission:** `DataStore:Create` (Swagger: "Permission required: DataStore.Write")
36
+ - **Request body** (`application/json`): `DataStoreMetadataDto`
37
+ - `Id` — `string (uuid)`, optional — ignored on create (server-generated).
38
+ - `Name` — `string`, required — store name.
39
+ - `Description` — `string`, optional.
40
+ - `Columns` — array of `DataStoreColumnDefinitionDto`, optional — column schema.
41
+ - `DataTypeId` — `string (uuid)`, optional — **forced to null by the controller on this endpoint** (the backing data type id is generated server-side). Do not send it.
42
+ - **Responses:**
43
+ - `200 OK` → `DataStoreMetadataResponseDto`
44
+ - `400 Bad Request` → array of `ApiErrorResponse`
45
+ - `500 Internal Server Error` → array of `ApiErrorResponse`
46
+
47
+ ---
48
+
49
+ #### `PUT api/DataStore`
50
+
51
+ - **Operation:** `Update` — Update an existing data store (rename, description, schema-level changes).
52
+ - **Auth:** Bearer JWT — **Permission:** `DataStore:Update` (Swagger: "Permission required: DataStore.Update")
53
+ - **Request body** (`application/json`): `DataStoreMetadataDto`
54
+ - Same fields as Create. `Id` identifies the store to update. `DataTypeId` is **forced to null by the controller** (retrieved server-side).
55
+ - **Responses:**
56
+ - `200 OK` → `DataStoreMetadataResponseDto`
57
+ - `400` / `403 Forbidden` / `500` → array of `ApiErrorResponse`
58
+
59
+ ---
60
+
61
+ #### `PATCH api/DataStore/{dataStoreId}/column`
62
+
63
+ - **Operation:** `ModifyColumn` — Modify a single column: rename, change its data type, or update its constraints.
64
+ - **Auth:** Bearer JWT — **Permission:** `DataStore:Update` (Swagger: "Permission required: DataStore.Update")
65
+ - **Path params:** `{dataStoreId}` — `string (uuid)`, required — target data store.
66
+ - **Request body** (`application/json`): `DataStoreModifyColumnDto`
67
+ - `OriginalColumn` — `object (DataStoreColumnDefinitionDto)`, required — the column as it currently exists (identifies which column to change).
68
+ - `UpdatedColumn` — `object (DataStoreColumnDefinitionDto)`, required — the desired new column definition.
69
+ - **Responses:**
70
+ - `200 OK` → `DataStoreMetadataResponseDto` (updated store metadata)
71
+ - `204 No Content` (when the operation produced no metadata payload, e.g. a no-op change)
72
+ - `400` / `403 Forbidden` / `500` → array of `ApiErrorResponse`
73
+
74
+ ---
75
+
76
+ #### `DELETE api/DataStore/{id}`
77
+
78
+ - **Operation:** `Delete` — Delete a data store by id (drops the table and its backing data type).
79
+ - **Auth:** Bearer JWT — **Permission:** `DataStore:Delete` (Swagger: "Permission required: DataStore.Delete")
80
+ - **Path params:** `{id}` — `string (uuid)`, required.
81
+ - **Responses:**
82
+ - `200 OK` (empty body)
83
+ - `404 Not Found` / `500` → array of `ApiErrorResponse`
84
+
85
+ ---
86
+
87
+ #### `GET api/DataStore/{id}`
88
+
89
+ - **Operation:** `GetById` — Get a single data store's metadata (including its column schema).
90
+ - **Auth:** Bearer JWT — **Permission:** `DataStore:Read` (Swagger: "Permission required: DataStore.Read")
91
+ - **Path params:** `{id}` — `string (uuid)`, required.
92
+ - **Responses:**
93
+ - `200 OK` → `DataStoreMetadataResponseDto`
94
+ - `404 Not Found` / `500` → array of `ApiErrorResponse`
95
+
96
+ ---
97
+
98
+ #### `GET api/DataStore`
99
+
100
+ - **Operation:** `GetAll` — List data stores with pagination and optional name search.
101
+ - **Auth:** Bearer JWT — **Permission:** `DataStore:Read` (Swagger: "Permission required: DataStore.Read")
102
+ - **Query params:**
103
+ - `pageNumber` — `number`, required — 1-based page index.
104
+ - `pageItemCount` — `number`, required — page size.
105
+ - `searchName` — `string`, optional, default `null` — case-handled name filter. **A search term shorter than 3 characters (after trim) is ignored** (treated as no filter).
106
+ - **Responses:**
107
+ - `200 OK` → `PageRequestResult<DataStoreMetadataResponseDto>`
108
+ - `500` → array of `ApiErrorResponse`
109
+
110
+ ---
111
+
112
+ #### `POST api/DataStore/from-data-model`
113
+
114
+ - **Operation:** `CreateFromDataModel` — Create a data store from an existing data model. First-level primitive attributes become typed columns; complex attributes become JSON columns.
115
+ - **Auth:** Bearer JWT — **Permission:** `DataStore:Create` (Swagger: "Permission required: DataStore.Write")
116
+ - **Request body** (`application/json`): `DataStoreFromDataModelDto`
117
+ - `DataModelId` — `string (uuid)`, required — source data model.
118
+ - `Name` — `string`, required — new store name.
119
+ - `Description` — `string`, optional.
120
+ - `PrimaryKeyAttributeIds` — array of `string (uuid)`, optional — source attribute ids to mark as primary key columns (composite PKs supported, so multiple ids allowed).
121
+ - **Responses:**
122
+ - `200 OK` → `DataStoreMetadataResponseDto`
123
+ - `400` / `404 Not Found` / `500` → array of `ApiErrorResponse`
124
+
125
+ ---
126
+
127
+ #### `POST api/DataStore/from-json`
128
+
129
+ - **Operation:** `CreateFromJson` — Create a data store by inferring its column schema from a JSON payload or a JSON-returning URL. Top-level properties become typed columns.
130
+ - **Auth:** Bearer JWT — **Permission:** `DataStore:Create` (Swagger: "Permission required: DataStore.Write")
131
+ - **Request body** (`application/json`): `DataStoreFromJsonDto`
132
+ - `Name` — `string`, required.
133
+ - `Description` — `string`, optional.
134
+ - `Content` — `string`, required — either a raw JSON string or a public HTTP/S URL that returns JSON. The resolved JSON object's top-level properties become the columns.
135
+ - `PrimaryKeyAttributeNames` — array of `string`, optional — names of top-level JSON properties to mark as primary key columns. Matching is case-insensitive; composite PKs supported. At least one PK name must be supplied per the operation summary.
136
+ - **Responses:**
137
+ - `200 OK` → `DataStoreMetadataResponseDto`
138
+ - `400` / `500` → array of `ApiErrorResponse`
139
+
140
+ ---
141
+
142
+ #### `GET api/DataStore/{dataStoreId}/data-model`
143
+
144
+ - **Operation:** `GetDataModel` — Get the internal data model (data type) that backs a data store.
145
+ - **Auth:** Bearer JWT — **Permission:** `DataStore:Read` (Swagger: "Permission required: DataStore.Read")
146
+ - **Path params:** `{dataStoreId}` — `string (uuid)`, required.
147
+ - **Responses:**
148
+ - `200 OK` → `DataModelDto` (see Shared DTOs)
149
+ - `404 Not Found` / `500` → array of `ApiErrorResponse`
150
+
151
+ ---
152
+
153
+ #### `GET api/DataStore/restricted`
154
+
155
+ - **Operation:** `GetRestrictedDataStores` — List "restricted" data stores with pagination (data stores the caller can see but has limited access to).
156
+ - **Auth:** Bearer JWT — **Permission:** `None` (authenticated only; Swagger: "Permission required: None")
157
+ - **Query params:**
158
+ - `pageNumber` — `number`, required.
159
+ - `pageItemCount` — `number`, required.
160
+ - **Responses:**
161
+ - `200 OK` → `PageRequestResult<DataStoreMetadataResponseDto>`
162
+ - `500` → array of `ApiErrorResponse`
163
+
164
+ ---
165
+
166
+ ### DataStoreRowsController — `api/DataStore` (row CRUD + query)
167
+
168
+ Controller route: `[Route("api/DataStore")]`. Controller-level permission entity: `DataStore`. All actions are tagged `DataStore` in Swagger.
169
+
170
+ > **Row model (read this first).** Every row is a JSON object (dictionary). Keys are **column display names**, not internal aliases — the Web-Api layer maps display names to aliases before calling the Data Store service. Values are arbitrary JSON (`object` / nullable). Primary-key columns identify rows for update/delete.
171
+
172
+ ---
173
+
174
+ #### `GET api/DataStore/{dataStoreId}/rows`
175
+
176
+ - **Operation:** `GetRows` — Get paginated rows from a data store, with optional filtering and sorting supplied **via query-string parameters** (not a request body).
177
+ - **Auth:** Bearer JWT — **Permission:** `DataStore:Read` (Swagger: "Permission required: DataStore.Read")
178
+ - **Path params:** `{dataStoreId}` — `string (uuid)`, required.
179
+ - **Query params:**
180
+ - `pageNumber` — `number`, required — 1-based page index.
181
+ - `pageItemCount` — `number`, required — page size.
182
+ - **Filters** (repeatable, indexed) — each filter is three keys (parsed by `HttpRequestExtensions.GetDataStoreGetRowsPayload`):
183
+ - `filters[N].displayName` — `string` — column display name to filter on.
184
+ - `filters[N].operator` — `number` — numeric `DataStoreRowsFilterOperator` value (see enum in Shared DTOs; e.g. `1`=Equals, `2`=Contains).
185
+ - `filters[N].value` — `string` — value to compare against.
186
+ - `N` is a 0-based integer index; multiple filters use `filters[0].*`, `filters[1].*`, etc. A filter is only applied if its `displayName` is non-empty **and** its `operator` resolves to a defined non-`None` value; otherwise it is silently dropped.
187
+ - **Sort** (single):
188
+ - `sort.displayName` — `string` — column display name to sort by.
189
+ - `sort.direction` — `number` — numeric `DataStoreRowsSortDirection` value (`1`=Asc, `2`=Desc). Sort is applied only if `displayName` is non-empty and direction resolves to non-`None`.
190
+ - **Responses:**
191
+ - `200 OK` → `DataStoreViewerResponseDto` (column metadata + a `PageRequestResult` of row dictionaries)
192
+ - `400` / `404 Not Found` / `500` → array of `ApiErrorResponse`
193
+ - **Notes:** Filters/sort are parsed into the internal `InternalDataStoreGetRowsDto` shape (see Shared DTOs). Example query string: `?pageNumber=1&pageItemCount=50&filters[0].displayName=Status&filters[0].operator=1&filters[0].value=Active&sort.displayName=CreatedOn&sort.direction=2`.
194
+
195
+ ---
196
+
197
+ #### `POST api/DataStore/{dataStoreId}/rows`
198
+
199
+ - **Operation:** `AddRows` — Add one or more rows to a data store.
200
+ - **Auth:** Bearer JWT — **Permission:** `DataStore:Create` (Swagger: "Permission required: DataStore.Write")
201
+ - **Path params:** `{dataStoreId}` — `string (uuid)`, required.
202
+ - **Request body** (`application/json`): `DataStoreRowsDto`
203
+ - `Rows` — array of `object` (each a dictionary of `displayName → value`), required — the rows to insert.
204
+ - **Responses:**
205
+ - `200 OK` → `DataStoreRowsAffectedDto` (`{ "AffectedRows": <number> }`)
206
+ - `400` / `404 Not Found` / `500` → array of `ApiErrorResponse`
207
+
208
+ ---
209
+
210
+ #### `PUT api/DataStore/{dataStoreId}/rows`
211
+
212
+ - **Operation:** `UpdateRow` — Update a single row in a data store.
213
+ - **Auth:** Bearer JWT — **Permission:** `DataStore:Update` (Swagger: "Permission required: DataStore.Update")
214
+ - **Path params:** `{dataStoreId}` — `string (uuid)`, required.
215
+ - **Request body** (`application/json`): `DataStoreUpdateRowRequestDto`
216
+ - `Keys` — `object` (dictionary `displayName → value`), required — the primary-key column values identifying the row to update.
217
+ - `Values` — `object` (dictionary `displayName → value`), required — the columns to set and their new values.
218
+ - **Responses:**
219
+ - `200 OK` → `DataStoreRowsAffectedDto`
220
+ - `400` / `404 Not Found` / `500` → array of `ApiErrorResponse`
221
+
222
+ ---
223
+
224
+ #### `DELETE api/DataStore/{dataStoreId}/rows`
225
+
226
+ - **Operation:** `DeleteRows` — Delete one or more rows from a data store.
227
+ - **Auth:** Bearer JWT — **Permission:** `DataStore:Delete` (Swagger: "Permission required: DataStore.Delete")
228
+ - **Path params:** `{dataStoreId}` — `string (uuid)`, required.
229
+ - **Request body** (`application/json`): `DataStoreRowsPrimaryKeysDto`
230
+ - `Keys` — array of `object` (each a dictionary `displayName → value` of the PK columns), required — one entry per row to delete.
231
+ - **Responses:**
232
+ - `200 OK` → `DataStoreRowsAffectedDto`
233
+ - `400` / `404 Not Found` / `500` → array of `ApiErrorResponse`
234
+
235
+ ---
236
+
237
+ #### `QueryRows` (NOT a reachable HTTP endpoint)
238
+
239
+ - **Operation:** `QueryRows` — Filtered/sorted paginated row query using a rich JSON body.
240
+ - **Hidden from Swagger:** yes (`[ApiExplorerSettings(IgnoreApi = true)]`)
241
+ - **Routable:** **No.** The method is annotated `[NonAction]`, so ASP.NET does **not** map any route to it — it is not callable over HTTP. It exists as an internal helper only. App builders should use `GET api/DataStore/{dataStoreId}/rows` (query-string filters) for filtered reads.
242
+ - For completeness, the intended body shape was `DataStoreQueryRequestDto` (defined in Shared DTOs) — note this is a different, richer filter format (string operators, per-filter `Logic`, named sort) than the query-string format the live `GetRows` endpoint accepts.
243
+
244
+ ---
245
+
246
+ ### DataStoreCsvController — `api/DataStore` (CSV import/export jobs)
247
+
248
+ Controller route: `[Route("api/DataStore")]`. Controller-level permission entity: `DataStore`. All actions tagged `DataStore` in Swagger. CSV jobs are **asynchronous**: start a job, then poll/download by `jobId`.
249
+
250
+ ---
251
+
252
+ #### `POST api/DataStore/{dataStoreId}/export-start`
253
+
254
+ - **Operation:** `StartExport` — Start an asynchronous CSV export job for a data store.
255
+ - **Auth:** Bearer JWT — **Permission:** `DataStore:Read` (Swagger: "Permission required: DataStore.Read")
256
+ - **Path params:** `{dataStoreId}` — `string (uuid)`, required.
257
+ - **Special headers:** `connectionId` `[FromHeader]` — `string`, optional — SignalR/connection id used to push job progress notifications back to the caller.
258
+ - **Responses:**
259
+ - `200 OK` → `DataStoreCsvJobResponseDto` (the created job descriptor; use its `JobId` to download)
260
+ - `400` / `404 Not Found` / `500` → array of `ApiErrorResponse`
261
+ - **Notes:** Read-only system columns are **never** included in the export (the `includeSystemColumns` flag is hard-coded to `false`). The export runs in the background; the response only confirms the job was queued.
262
+
263
+ ---
264
+
265
+ #### `GET api/DataStore/{dataStoreId}/export-download/{jobId}`
266
+
267
+ - **Operation:** `DownloadExport` — Download the CSV file produced by a completed export job.
268
+ - **Auth:** Bearer JWT — **Permission:** `DataStore:Read` (Swagger: "Permission required: DataStore.Read")
269
+ - **Path params:**
270
+ - `{dataStoreId}` — `string (uuid)`, required.
271
+ - `{jobId}` — `string (uuid)`, required — the export job id returned by `export-start`.
272
+ - **Responses:**
273
+ - `200 OK` → CSV file download (`text/csv; charset=utf-8`, content type `text/csv`, returned as a `FileResult` with a server-set filename)
274
+ - `400` / `404 Not Found` / `409 Conflict` (job not yet complete / wrong state) / `500` → array of `ApiErrorResponse`
275
+
276
+ ---
277
+
278
+ #### `POST api/DataStore/{dataStoreId}/import-start`
279
+
280
+ - **Operation:** `Import` — Import CSV data into a data store (starts an asynchronous import job).
281
+ - **Auth:** Bearer JWT — **Permission:** `DataStore:Create` (Swagger: "Permission required: DataStore.Write")
282
+ - **Path params:** `{dataStoreId}` — `string (uuid)`, required.
283
+ - **Special headers:** `connectionId` `[FromHeader]` — `string`, optional — connection id for progress notifications.
284
+ - **Request body** (`multipart/form-data`):
285
+ - `file` — file (`IFormFile`), required — the CSV file to import. Form field name: `file`.
286
+ - **Responses:**
287
+ - `200 OK` → `DataStoreCsvJobResponseDto` (the created import job descriptor)
288
+ - `400` / `404 Not Found` / `413 Payload Too Large` (file exceeds the configured size limit) / `500` → array of `ApiErrorResponse`
289
+ - **Notes:** Import runs in the background. Rows that fail validation are collected and can be downloaded via `import-failures`.
290
+
291
+ ---
292
+
293
+ #### `GET api/DataStore/{dataStoreId}/import-failures/{jobId}`
294
+
295
+ - **Operation:** `DownloadImportFailures` — Download a CSV of the rows that failed during a completed import job.
296
+ - **Auth:** Bearer JWT — **Permission:** `DataStore:Read` (Swagger: "Permission required: DataStore.Read")
297
+ - **Path params:**
298
+ - `{dataStoreId}` — `string (uuid)`, required.
299
+ - `{jobId}` — `string (uuid)`, required — the import job id returned by `import-start`.
300
+ - **Responses:**
301
+ - `200 OK` → CSV file download (`text/csv; charset=utf-8`) of failed rows
302
+ - `400` / `404 Not Found` / `409 Conflict` (job not yet complete) / `500` → array of `ApiErrorResponse`
303
+
304
+ ---
305
+
306
+ ### DataTypesController — `api/DataTypes` (platform data-type definitions)
307
+
308
+ Controller route: `[Route("api/[controller]")]` → **`api/DataTypes`**. Controller-level permission entity: `DataModels`. Controller-level `[Consumes("application/json", "multipart/form-data")]`. Errors are returned as `400 Bad Request` with a list of composed error objects (no typed response DTO is declared).
309
+
310
+ > **Route ordering caveat.** Two GET routes share the same shape: `{id:guid}/{type?}` and `{value}`. A GUID-looking single segment matches `GetDataType(Guid, type)`; a non-GUID single segment matches `GetDataType(string value, ...)`. App builders should send a real GUID to hit the id-based lookup.
311
+
312
+ ---
313
+
314
+ #### `POST api/DataTypes`
315
+
316
+ - **Operation:** `SaveDataType` — Store a new data type (data model).
317
+ - **Auth:** Bearer JWT — **Permission:** `DataModels:Create` (Swagger: "Permission required: DataModels.Write")
318
+ - **Request body** (`application/json`): `CreateDataTypeDto`
319
+ - `Name` — `string`, optional — internal name.
320
+ - `DisplayName` — `string`, optional — UI name.
321
+ - `Content` — `object (DataModelDto)`, optional — the full data-model definition (attributes, etc.).
322
+ - `IsPublic` — `boolean`, optional, default `true`.
323
+ - **Responses:**
324
+ - `200 OK` → created data type (manager result value; data-type object)
325
+ - `400 Bad Request` → list of composed data-type / authorization errors
326
+
327
+ ---
328
+
329
+ #### `POST api/DataTypes/private`
330
+
331
+ - **Operation:** `SavePrivateDataType` — Store a new private (nested/sub) data type attached to a root data type.
332
+ - **Auth:** Bearer JWT — **Permission:** `DataModels:Create` (Swagger: "Permission required: DataModels.Write")
333
+ - **Request body** (`application/json`): `PrivateDataTypeDto`
334
+ - `Name` — `string`, optional.
335
+ - `DisplayName` — `string`, optional.
336
+ - `Attribute` — `object (DataAttributeDto)`, optional — the attribute definition.
337
+ - `RootDataTypeId` — `string (uuid)`, required — the owning root data type.
338
+ - **Responses:**
339
+ - `200 OK` (empty body)
340
+ - `400 Bad Request` → list of composed data-type / authorization errors
341
+
342
+ ---
343
+
344
+ #### `POST api/DataTypes/changeToPublic`
345
+
346
+ - **Operation:** `ChangeToPublic` — Promote a data type to public visibility.
347
+ - **Auth:** Bearer JWT — **Permission:** `DataModels:Create` (Swagger: "Permission required: DataModels.Write")
348
+ - **Request body** (`application/json`): `DataTypeTransferDto`
349
+ - `RootDataTypeId` — `string (uuid)`, required.
350
+ - `DataTypeId` — `string (uuid)`, required.
351
+ - **Responses:**
352
+ - `200 OK` (empty body)
353
+ - `400 Bad Request` → list of composed data-type errors
354
+
355
+ ---
356
+
357
+ #### `POST api/DataTypes/clone`
358
+
359
+ - **Operation:** `CloneDataModel` — Clone an existing data type / data model.
360
+ - **Auth:** Bearer JWT — **Permission:** `DataModels:Create` (Swagger: "Permission required: DataModels.Write")
361
+ - **Request body** (`application/json`): `DataTypeTransferDto`
362
+ - `RootDataTypeId` — `string (uuid)`, required.
363
+ - `DataTypeId` — `string (uuid)`, required.
364
+ - **Responses:**
365
+ - `200 OK` (empty body)
366
+ - `400 Bad Request` → list of composed data-type errors
367
+
368
+ ---
369
+
370
+ #### `DELETE api/DataTypes/attribute/{rootDataTypeId}/{attributeId}`
371
+
372
+ - **Operation:** `DeleteAttribute` — Delete an attribute from a data type.
373
+ - **Auth:** Bearer JWT — **Permission:** `DataModels:Update` (Swagger: "Permission required: DataModels.Update")
374
+ - **Path params:**
375
+ - `{rootDataTypeId}` — `string (uuid)`, required — the data type being modified.
376
+ - `{attributeId}` — `string (uuid)`, required — the attribute to remove.
377
+ - **Responses:**
378
+ - `200 OK` (empty body)
379
+ - `400 Bad Request` → list of composed data-type errors
380
+
381
+ ---
382
+
383
+ #### `POST api/DataTypes/attribute/{rootDataTypeId}`
384
+
385
+ - **Operation:** `CreateAttribute` — Add a new attribute to a data type.
386
+ - **Auth:** Bearer JWT — **Permission:** `DataModels:Update` (Swagger: "Permission required: DataModels.Update")
387
+ - **Path params:** `{rootDataTypeId}` — `string (uuid)`, required.
388
+ - **Request body** (`application/json`): `DataAttributeDto`
389
+ - **Responses:**
390
+ - `200 OK` (empty body)
391
+ - `400 Bad Request` → list of composed data-type errors
392
+
393
+ ---
394
+
395
+ #### `PUT api/DataTypes/attribute/{rootDataTypeId}`
396
+
397
+ - **Operation:** `EditAttribute` — Edit an existing attribute on a data type.
398
+ - **Auth:** Bearer JWT — **Permission:** `DataModels:Update` (Swagger: "Permission required: DataModels.Update")
399
+ - **Path params:** `{rootDataTypeId}` — `string (uuid)`, required.
400
+ - **Request body** (`application/json`): `DataAttributeDto`
401
+ - **Responses:**
402
+ - `200 OK` (empty body)
403
+ - `400 Bad Request` → list of composed data-type errors
404
+
405
+ ---
406
+
407
+ #### `PUT api/DataTypes`
408
+
409
+ - **Operation:** `UpdateDataType` — Update top-level data type properties (name / display name).
410
+ - **Auth:** Bearer JWT — **Permission:** `DataModels:Update` (Swagger: "Permission required: DataModels.Update")
411
+ - **Request body** (`application/json`): `DataTypeUpdateDto`
412
+ - `Id` — `string (uuid)`, required.
413
+ - `Name` — `string`, optional.
414
+ - `DisplayName` — `string`, optional.
415
+ - `IsProcesio` — `boolean`, optional.
416
+ - `IsPrimaryType` — `boolean`, optional.
417
+ - **Responses:**
418
+ - `200 OK` (empty body)
419
+ - `400 Bad Request` → authorization error if `IsProcesio` or `IsPrimaryType` is `true` (cannot update PROCESIO / primary types); otherwise list of composed data-type errors
420
+ - **Notes:** The request is rejected outright (unauthorized) when `IsProcesio` **or** `IsPrimaryType` is set `true` in the body.
421
+
422
+ ---
423
+
424
+ #### `GET api/DataTypes/{id}/{type?}`
425
+
426
+ - **Operation:** `GetDataType` — Get a data type by id. Returns the same data-type structure regardless of `type` (the `type` segment is legacy and no longer affects the result).
427
+ - **Auth:** Bearer JWT — **Permission:** `DataModels:Read` (Swagger: "Permission required: DataModels.Read")
428
+ - **Path params:**
429
+ - `{id}` — `string (uuid)`, required.
430
+ - `{type}` — `string|number (enum: DataModelTypeParam — Normal=1, Webhook=2)`, optional, default `Normal` — legacy selector; defaults to `Normal` when omitted or null.
431
+ - **Responses:**
432
+ - `200 OK` → data type object (`DataModelDto`-shaped)
433
+ - `400 Bad Request` → list of composed data-type errors
434
+
435
+ ---
436
+
437
+ #### `GET api/DataTypes/{value}`
438
+
439
+ - **Operation:** `GetDataType` — Get a specific data type by its name or display name.
440
+ - **Auth:** Bearer JWT — **Permission:** `DataModels:Read` (Swagger: "Permission required: DataModels.Read")
441
+ - **Path params:** `{value}` — `string`, required — the data type's name or display name (non-GUID; a GUID single segment routes to the id-based overload above).
442
+ - **Query params:** `displayName` — `boolean`, required — when `true`, `value` is matched against display names; when `false`, against internal names.
443
+ - **Responses:**
444
+ - `200 OK` → data type object (or `null` if not found)
445
+
446
+ ---
447
+
448
+ #### `GET api/DataTypes`
449
+
450
+ - **Operation:** `GetDataTypes` — List data types with pagination and optional filters.
451
+ - **Auth:** Bearer JWT — **Permission:** `DataModels:Read` (Swagger: "Permission required: DataModels.Read")
452
+ - **Query params:**
453
+ - `addProperties` — `boolean`, required — include each type's attributes/properties in the response.
454
+ - `pageNumber` — `number`, required.
455
+ - `pageItemCount` — `number`, required.
456
+ - `includeProcesioEntries` — `boolean`, optional, default `true` — include PROCESIO built-in types.
457
+ - `includeExternalEntries` — `boolean`, optional, default `false` — include external/webhook types.
458
+ - `searchName` — `string`, optional, default `null` — name filter; **ignored if shorter than 3 characters** after trim.
459
+ - **Responses:**
460
+ - `200 OK` → paginated list of data types
461
+ - `400 Bad Request` → not-found error message if the manager returns null
462
+
463
+ ---
464
+
465
+ #### `GET api/DataTypes/count`
466
+
467
+ - **Operation:** `CountDataTypes` — Count data types matching the inclusion flags.
468
+ - **Auth:** Bearer JWT — **Permission:** `DataModels:Read` (Swagger: "Permission required: DataModels.Read")
469
+ - **Query params:**
470
+ - `includeProcesioEntries` — `boolean`, optional, default `true`.
471
+ - `includeExternalEntries` — `boolean`, optional, default `false`.
472
+ - **Responses:**
473
+ - `200 OK` → `number` (count)
474
+ - `400 Bad Request` → not-found error message if count is negative
475
+
476
+ ---
477
+
478
+ #### `GET api/DataTypes/primary`
479
+
480
+ - **Operation:** `GetPrimaryTypes` — List the platform's primary (built-in primitive) data types, paginated.
481
+ - **Auth:** **Anonymous** (`[AllowAnonymous]`) — **Permission:** `None`
482
+ - **Query params:**
483
+ - `pageNumber` — `number`, required.
484
+ - `pageItemCount` — `number`, required.
485
+ - **Responses:**
486
+ - `200 OK` → paginated list of primary data types
487
+
488
+ ---
489
+
490
+ #### `GET api/DataTypes/procesio`
491
+
492
+ - **Operation:** `GetProcesioTypes` — List the PROCESIO built-in data types, paginated.
493
+ - **Auth:** **Anonymous** (`[AllowAnonymous]`) — **Permission:** `None`
494
+ - **Query params:**
495
+ - `pageNumber` — `number`, required.
496
+ - `pageItemCount` — `number`, required.
497
+ - **Responses:**
498
+ - `200 OK` → paginated list of PROCESIO data types
499
+
500
+ ---
501
+
502
+ #### `GET api/DataTypes/primary/count`
503
+
504
+ - **Operation:** `CountPrimaryDataTypes` — Count primary data types.
505
+ - **Auth:** Bearer JWT — **Permission:** `None` (no `[AllowAnonymous]` here; authenticated only. Swagger: "Permission required: None")
506
+ - **Responses:**
507
+ - `200 OK` → `number` (count)
508
+
509
+ ---
510
+
511
+ #### `GET api/DataTypes/procesio/count`
512
+
513
+ - **Operation:** `CountProcesioDataTypes` — Count PROCESIO data types.
514
+ - **Auth:** Bearer JWT — **Permission:** `None` (authenticated only. Swagger: "Permission required: None")
515
+ - **Responses:**
516
+ - `200 OK` → `number` (count)
517
+
518
+ ---
519
+
520
+ #### `DELETE api/DataTypes/{id}`
521
+
522
+ - **Operation:** `DeleteDataType` — Delete a data type by id.
523
+ - **Auth:** Bearer JWT — **Permission:** `DataModels:Delete` (Swagger: "Permission required: DataModels.Delete")
524
+ - **Path params:** `{id}` — `string (uuid)`, required.
525
+ - **Responses:**
526
+ - `200 OK` (empty body)
527
+ - `400 Bad Request` → list of composed data-type errors
528
+
529
+ ---
530
+
531
+ #### `POST api/DataTypes/generate`
532
+
533
+ - **Operation:** `GenerateDataModel` — Generate a data model from inline content (e.g. sample JSON/text supplied as a string).
534
+ - **Auth:** Bearer JWT — **Permission:** `DataModels:Create` (Swagger: "Permission required: DataModels.Write")
535
+ - **Request body** (`application/json`): `GenerateDataTypeDto`
536
+ - `Name` — `string`, optional.
537
+ - `DisplayName` — `string`, optional.
538
+ - `Content` — `string`, optional — the source content to infer the model from.
539
+ - **Responses:**
540
+ - `200 OK` → generated data model
541
+ - `400 Bad Request` → list of composed data-type errors
542
+
543
+ ---
544
+
545
+ #### `POST api/DataTypes/generate/file`
546
+
547
+ - **Operation:** `GenerateDataModelByFile` — Generate a data model by inferring it from an uploaded file.
548
+ - **Auth:** Bearer JWT — **Permission:** `DataModels:Create` (Swagger: "Permission required: DataModels.Write")
549
+ - **Request body** (`multipart/form-data`): `DataTypeFileDto`
550
+ - `File` — file (`IFormFile`), required — the source file.
551
+ - `Name` — `string`, optional.
552
+ - `DisplayName` — `string`, optional.
553
+ - **Responses:**
554
+ - `200 OK` → generated data model
555
+ - `400 Bad Request` → list of composed data-type errors
556
+
557
+ ---
558
+
559
+ #### `GET api/DataTypes/restricted`
560
+
561
+ - **Operation:** `GetRestrictedDataTypes` — List "restricted" data types with pagination.
562
+ - **Auth:** Bearer JWT — **Permission:** `None` (authenticated only. Swagger tag `DataTypes`, "Permission required: None")
563
+ - **Query params:**
564
+ - `pageNumber` — `number`, required.
565
+ - `pageItemCount` — `number`, required.
566
+ - **Responses:**
567
+ - `200 OK` → paginated list of restricted data types
568
+ - `400 Bad Request` → not-found error message if null
569
+
570
+ ---
571
+
572
+ ## Shared DTOs
573
+
574
+ ### `DataStoreColumnDefinitionDto`
575
+
576
+ A single column in a data store's schema.
577
+
578
+ - `Name` — `string` — column display name.
579
+ - `DataTypeId` — `string (uuid)` — the data type backing this column (see Data Types).
580
+ - `IsList` — `boolean` — whether the column holds a list/array of the type.
581
+ - `IsPrimaryKey` — `boolean` — part of the (possibly composite) primary key.
582
+ - `IsRequired` — `boolean` — non-null constraint.
583
+ - `IsSystemColumn` — `boolean` — read-only system-managed column (e.g. internal id/audit columns).
584
+
585
+ ### `DataStoreMetadataDto` (request)
586
+
587
+ - `Id` — `string (uuid)`, optional — store id (ignored on POST create).
588
+ - `Name` — `string`, required.
589
+ - `Description` — `string`, optional.
590
+ - `Columns` — array of `DataStoreColumnDefinitionDto`, optional.
591
+ - `DataTypeId` — `string (uuid)`, optional — forced to null by Create/Update controllers; not for client use on those endpoints.
592
+
593
+ ### `DataStoreMetadataResponseDto` (response)
594
+
595
+ Extends `OwnershipAuditDto` (audit fields below are included).
596
+
597
+ - `Id` — `string (uuid)`.
598
+ - `Name` — `string`.
599
+ - `Description` — `string`.
600
+ - `Columns` — array of `DataStoreColumnDefinitionDto`.
601
+ - `DataTypeId` — `string (uuid)`, nullable.
602
+ - *(plus all `OwnershipAuditDto` fields.)*
603
+
604
+ ### `DataStoreModifyColumnDto`
605
+
606
+ - `OriginalColumn` — `object (DataStoreColumnDefinitionDto)` — current column.
607
+ - `UpdatedColumn` — `object (DataStoreColumnDefinitionDto)` — desired column.
608
+
609
+ ### `DataStoreFromDataModelDto`
610
+
611
+ - `DataModelId` — `string (uuid)`, required.
612
+ - `Name` — `string`, required.
613
+ - `Description` — `string`, optional.
614
+ - `PrimaryKeyAttributeIds` — array of `string (uuid)`, optional.
615
+
616
+ ### `DataStoreFromJsonDto`
617
+
618
+ - `Name` — `string`, required.
619
+ - `Description` — `string`, optional.
620
+ - `Content` — `string`, required — raw JSON or a JSON-returning HTTP/S URL.
621
+ - `PrimaryKeyAttributeNames` — array of `string`, optional — case-insensitive top-level property names to use as PKs.
622
+
623
+ ### `DataStoreViewerResponseDto` (response)
624
+
625
+ Combined viewer payload returned by `GET .../rows`.
626
+
627
+ - `Columns` — array of `DataStoreColumnDefinitionDto` — schema for rendering.
628
+ - `Rows` — `object (PageRequestResult<row>)` — paginated rows, where each row is an `object` (dictionary `displayName → value`, values are arbitrary JSON / nullable).
629
+
630
+ ### `DataStoreRowsDto` (request)
631
+
632
+ - `Rows` — array of `object` (each a dictionary `displayName → value`).
633
+
634
+ ### `DataStoreUpdateRowRequestDto` (request)
635
+
636
+ - `Keys` — `object` (dictionary `displayName → value`) — PK columns identifying the row.
637
+ - `Values` — `object` (dictionary `displayName → value`) — columns to update.
638
+
639
+ ### `DataStoreRowsPrimaryKeysDto` (request)
640
+
641
+ - `Keys` — array of `object` (each a dictionary `displayName → value` of PK columns) — one per row to delete.
642
+
643
+ ### `DataStoreRowsAffectedDto` (response)
644
+
645
+ - `AffectedRows` — `number` — count of rows inserted/updated/deleted.
646
+
647
+ ### `DataStoreQueryRequestDto` (NOT used by any live endpoint)
648
+
649
+ Intended body for the non-routable `QueryRows` helper. Documented for completeness only; do not call.
650
+
651
+ - `Filters` — array of `DataStoreFilterEntryDto`, nullable.
652
+ - `Sort` — array of `DataStoreSortEntryDto`, nullable.
653
+ - `PageNumber` — `number`, default `1`.
654
+ - `PageItemCount` — `number`, default `50`.
655
+ - `IncludePagination` — `boolean`, default `true`.
656
+
657
+ ### `DataStoreFilterEntryDto`
658
+
659
+ - `DisplayName` — `string` — column display name.
660
+ - `Operator` — `string` — string operator name (this format uses string operators, unlike the live `GetRows` query-string which uses numeric `DataStoreRowsFilterOperator` values).
661
+ - `Value` — `object`, nullable.
662
+ - `Logic` — `string`, default `"and"` — how this filter combines with others (`"and"`/`"or"`).
663
+
664
+ ### `DataStoreSortEntryDto`
665
+
666
+ - `DisplayName` — `string`.
667
+ - `Direction` — `string`, default `"asc"` (`"asc"`/`"desc"`).
668
+
669
+ ### `InternalDataStoreGetRowsDto` (parsed query payload for `GET .../rows`)
670
+
671
+ Built server-side from the `filters[N].*` and `sort.*` query parameters.
672
+
673
+ - `Filters` — array of `InternalDataStoreRowsFilterDto`.
674
+ - `Sort` — `object (InternalDataStoreRowsSortDto)`, nullable.
675
+
676
+ ### `InternalDataStoreRowsFilterDto`
677
+
678
+ - `DisplayName` — `string`, nullable — column display name (from `filters[N].displayName`).
679
+ - `ColumnAlias` — `string` — internal alias resolved server-side (not client-supplied).
680
+ - `Operator` — `number (enum: DataStoreRowsFilterOperator)` — from `filters[N].operator`.
681
+ - `Value` — `object`, nullable — from `filters[N].value`.
682
+
683
+ ### `InternalDataStoreRowsSortDto`
684
+
685
+ - `DisplayName` — `string`, nullable — from `sort.displayName`.
686
+ - `ColumnAlias` — `string` — resolved server-side.
687
+ - `Direction` — `number (enum: DataStoreRowsSortDirection)` — from `sort.direction`.
688
+
689
+ ### `DataStoreCsvJobResponseDto` (response)
690
+
691
+ - `JobId` — `string (uuid)` — use to download results / failures.
692
+ - `JobType` — `number (enum: DataStoreCsvJobType — Export=0, Import=10)`.
693
+ - `Status` — `number (enum: DataStoreCsvJobStatus — Queued=0, Running=10, Completed=20, CompletedWithFailures=30, Failed=40, Cancelled=50)`.
694
+ - `CreatedOn` — `string (date-time, ISO-8601)`.
695
+
696
+ ### `CreateDataTypeDto` (request)
697
+
698
+ - `Name` — `string`, optional.
699
+ - `DisplayName` — `string`, optional.
700
+ - `Content` — `object (DataModelDto)`, optional.
701
+ - `IsPublic` — `boolean`, optional, default `true`.
702
+
703
+ ### `PrivateDataTypeDto` (request)
704
+
705
+ - `Name` — `string`, optional.
706
+ - `DisplayName` — `string`, optional.
707
+ - `Attribute` — `object (DataAttributeDto)`, optional.
708
+ - `RootDataTypeId` — `string (uuid)`, required.
709
+
710
+ ### `DataTypeTransferDto` (request)
711
+
712
+ - `RootDataTypeId` — `string (uuid)`, required.
713
+ - `DataTypeId` — `string (uuid)`, required.
714
+
715
+ ### `DataTypeUpdateDto` (request)
716
+
717
+ - `Id` — `string (uuid)`, required.
718
+ - `Name` — `string`, optional.
719
+ - `DisplayName` — `string`, optional.
720
+ - `IsProcesio` — `boolean`, optional — must be `false` (request rejected if `true`).
721
+ - `IsPrimaryType` — `boolean`, optional — must be `false` (request rejected if `true`).
722
+
723
+ ### `GenerateDataTypeDto` (request)
724
+
725
+ - `Name` — `string`, optional.
726
+ - `DisplayName` — `string`, optional.
727
+ - `Content` — `string`, optional — source content to infer the model from.
728
+
729
+ ### `DataTypeFileDto` (multipart/form-data request)
730
+
731
+ - `File` — file (`IFormFile`), required.
732
+ - `Name` — `string`, optional.
733
+ - `DisplayName` — `string`, optional.
734
+
735
+ ### `DataAttributeDto`
736
+
737
+ One attribute (field) of a data model. Recursive (`Attributes` holds nested attributes).
738
+
739
+ - `Id` — `string (uuid)`, nullable.
740
+ - `DataTypeId` — `string (uuid)`.
741
+ - `ParentDataTypeId` — `string (uuid)`.
742
+ - `Name` — `string`.
743
+ - `DisplayName` — `string`.
744
+ - `DataTypeName` — `string`.
745
+ - `IsDataModel` — `boolean`.
746
+ - `IsPrimaryType` — `boolean`, default `false`.
747
+ - `IsProcesio` — `boolean`, default `false`.
748
+ - `IsPublic` — `boolean`, default `false`.
749
+ - `CsharpCorrespondent` — `number (enum: PrimaryDataType)` — see enum below.
750
+ - `Type` — `number (enum: DataModelTypeParam — Normal=1, Webhook=2)`, default `Normal`.
751
+ - `IsList` — `boolean`.
752
+ - `jsonProperty` — `string` (wire name; C# `JsonPropertyName`) — JSON property name mapping.
753
+ - `updatedOn` — `string (date-time, ISO-8601)` (wire name) — last update time.
754
+ - `Attributes` — array of `DataAttributeDto` — nested attributes.
755
+
756
+ ### `DataModelDto` (response, also used as `CreateDataTypeDto.Content`)
757
+
758
+ Extends `BaseDataTypeDto`.
759
+
760
+ - `Attributes` — array of `DataAttributeDto`.
761
+ - `ParentIds` — array of `string (uuid)`.
762
+ - *(plus all `BaseDataTypeDto` fields below.)*
763
+
764
+ ### `BaseDataTypeDto`
765
+
766
+ Extends `OwnershipAuditDto`.
767
+
768
+ - `Id` — `string (uuid)`.
769
+ - `Name` — `string`.
770
+ - `DisplayName` — `string`.
771
+ - `IsDataModel` — `boolean`.
772
+ - `IsPrimaryType` — `boolean`, default `false`.
773
+ - `IsProcesio` — `boolean`, default `false`.
774
+ - `IsPublic` — `boolean`, default `false`.
775
+ - `CsharpCorrespondent` — `number (enum: PrimaryDataType)`.
776
+ - `Type` — `number (enum: DataModelTypeParam — Normal=1, Webhook=2)`, default `Normal`.
777
+ - *(plus all `OwnershipAuditDto` fields.)*
778
+
779
+ ### `OwnershipAuditDto`
780
+
781
+ Audit base for FE-facing list/detail entities. All wire names are camelCase via `[JsonProperty]`.
782
+
783
+ - `firstName` — `string` — (legacy; being replaced by `createdBy`/`updatedBy`).
784
+ - `lastName` — `string` — (legacy).
785
+ - `workspaceId` — `string (uuid)`, nullable.
786
+ - `createdBy` — `string` — "FirstName LastName" of creator.
787
+ - `updatedBy` — `string` — "FirstName LastName" of last updater.
788
+ - `createdById` — `string (uuid)`, nullable.
789
+ - `updatedById` — `string (uuid)`, nullable.
790
+ - `createdOn` — `string (date-time, ISO-8601)`, nullable.
791
+ - `updatedOn` — `string (date-time, ISO-8601)`, nullable.
792
+
793
+ ### `PageRequestResult<T>` (paged response wrapper)
794
+
795
+ All wire names via `[JsonProperty]`.
796
+
797
+ - `totalItemCount` — `number` — total matching items across all pages.
798
+ - `pageNumber` — `number` — current page (1-based).
799
+ - `pageItemCount` — `number` — items in this page.
800
+ - `pageItems` — array of `T` — the page's items.
801
+
802
+ ### `Pagination` (query-param trio, not a body)
803
+
804
+ Used by all paginated endpoints via `pageNumber` + `pageItemCount` query params.
805
+
806
+ - `PageNumber` — `number` — 1-based; values `<= 1` are clamped to `1`.
807
+ - `PageItemCount` — `number` — page size; values `<= 0` are clamped to `0` (treated as "all" depending on the manager).
808
+
809
+ ### `ApiErrorResponse` (error item — Data Store controllers)
810
+
811
+ Data Store error responses are a JSON **array** of these objects.
812
+
813
+ - `StatusCode` — `number`.
814
+ - `Value` — `object` — error detail/message payload.
815
+ - `Target` — `object` — what the error refers to (field/entity).
816
+
817
+ ### Enums
818
+
819
+ **`DataStoreRowsFilterOperator`** (numeric, used in `GET .../rows` `filters[N].operator`):
820
+ `None=0`, `Equals=1`, `Contains=2`, `StartsWith=3`, `EndsWith=4`, `GreaterThan=5`, `LessThan=6`, `GreaterThanOrEqual=7`, `LessThanOrEqual=8`.
821
+
822
+ **`DataStoreRowsSortDirection`** (numeric, used in `sort.direction`): `None=0`, `Asc=1`, `Desc=2`.
823
+
824
+ **`DataStoreCsvJobType`**: `Export=0`, `Import=10`.
825
+
826
+ **`DataStoreCsvJobStatus`**: `Queued=0`, `Running=10`, `Completed=20`, `CompletedWithFailures=30`, `Failed=40`, `Cancelled=50`.
827
+
828
+ **`DataModelTypeParam`** (legacy GET selector): `Normal=1` (DataModelType.Expanded), `Webhook=2` (DataModelType.External). Defaults to `Normal`.
829
+
830
+ **`PrimaryDataType`** (`CsharpCorrespondent`): `None=0`, `Boolean=10`, `Integer=20`, `Float=30`, `Double=40`, `String=50`, `Date=60`, `Relationship=70`, `Time=80`, `DateTime=90`, `Guid=100`, `Uri=110`, `Json=120`, `Credentials=130`, `Object=140`.