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,985 @@
1
+ # Forms & Documents 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/Forms/FormController.cs`
6
+ > - `BE/Web-Api/WebApi/Application/Controllers/Forms/FormTemplateController.cs`
7
+ > - `BE/Web-Api/WebApi/Application/Controllers/Forms/FormApplicationController.cs`
8
+ > - `BE/Web-Api/WebApi/Application/Controllers/Forms/FormChainController.cs`
9
+ > - `BE/Web-Api/WebApi/Application/Controllers/Forms/FormProcessController.cs`
10
+ > - `BE/Web-Api/WebApi/Application/Controllers/Forms/FileFormController.cs`
11
+ > - `BE/Web-Api/WebApi/Application/Controllers/Forms/FileFormProcessController.cs`
12
+ > - `BE/Web-Api/WebApi/Application/Controllers/Forms/FormDataStoreController.cs`
13
+ > - `BE/Web-Api/WebApi/Application/Controllers/Documents/DocumentTemplateController.cs`
14
+ > - `BE/Web-Api/WebApi/Application/Controllers/Documents/ProcessInstanceDocumentsController.cs`
15
+ > - `BE/Web-Api/WebApi/Application/Controllers/Documents/ProcessTemplateDocumentsController.cs`
16
+
17
+ This domain covers PROCESIO **forms** and **documents**. A *form template* (`FormTemplate`) defines a form's layout, assignees and status; a *form instance* (`FormInstance`, exposed as "form") is a filled-in copy of a template that lives inside a process/flow run. *Form applications* group form templates into dashboards/menus. *Form chains* link a sequence of form instances that originate from the same template. *Form processes* let a public (anonymous) form front-end fetch/launch the backing flow and read its variables. *File-form* endpoints handle file upload/download tied to form instances and flow instances. *Form data-store* endpoints let a form read/write rows in a backing DataStore. *Document templates* are reusable rich-text/HTML templates with placeholder variables used to render documents in processes.
18
+
19
+ **Important — anonymous/public surface:** Several endpoints are `[AllowAnonymous]` so that publicly shared forms can be fetched, submitted, and can launch their backing flow without a JWT. These are flagged per-endpoint below and summarized in [Notes on anonymous access](#notes-on-anonymous-access). Anonymous endpoints rely on the `formTemplateWorkspaceId` route/header value to scope the request, and several add a randomized response delay (`TimeDelay.RandomWait`) as a timing-attack mitigation.
20
+
21
+ All routes are served under the Web-Api gateway base URL with no version path segment; versioning is via the optional `x-version` header (default `1.19`). Unless noted, request and response bodies are `application/json`.
22
+
23
+ ---
24
+
25
+ ## Endpoints
26
+
27
+ ### FormController — `api/Form`
28
+
29
+ Controller route `api/[controller]` → **`api/Form`**. Controller auth entity: `FormInstance`. Manages **form instances** (filled forms).
30
+
31
+ #### `GET api/Form/{id}`
32
+
33
+ - **Operation:** `GetForm` — Get a single form instance by id.
34
+ - **Auth:** Bearer JWT — **Permission:** `FormInstance:Read`
35
+ - **Path params:** `{id}` — `string (uuid)`, required — form instance id.
36
+ - **Responses:**
37
+ - `200 OK` → `GetFormDto`
38
+ - `400 Bad Request` → array of `ApiErrorResponse` (e.g. not found)
39
+ - **Notes:** Adds a randomized response delay (timing-attack mitigation).
40
+
41
+ #### `GET api/Form/{pid}/all`
42
+
43
+ - **Operation:** `GetForms` — Get the list of form instances for a given process/parent id (`pid`).
44
+ - **Auth:** Bearer JWT — **Permission:** `FormInstance:Read`
45
+ - **Path params:** `{pid}` — `string (uuid)`, required — parent id (process template / form template id).
46
+ - **Query params:**
47
+ - `pageNumber` — `number`, required — 1-based page index.
48
+ - `pageItemCount` — `number`, required — page size.
49
+ - **Responses:**
50
+ - `200 OK` → paginated list of `GetFormDto` (manager returns the list shape; declared `ProducesResponseType` is `GetFormDto`)
51
+ - `400 Bad Request` → array of `ApiErrorResponse`
52
+
53
+ #### `GET api/Form/assigned`
54
+
55
+ - **Operation:** `GetForms` — Get form instances assigned to the current authenticated user.
56
+ - **Auth:** Bearer JWT — **Permission:** `FormInstance:Read`
57
+ - **Query params:**
58
+ - `pageNumber` — `number`, required — 1-based page index.
59
+ - `pageItemCount` — `number`, required — page size.
60
+ - `awaitingAction` — `boolean`, required — when `true`, only forms awaiting the user's action.
61
+ - **Responses:**
62
+ - `200 OK` → paginated list of `GetFormDto`
63
+ - `400 Bad Request` → array of `ApiErrorResponse`
64
+
65
+ #### `POST api/Form`
66
+
67
+ - **Operation:** `SaveForm` — Save (create) a form instance. **Public form submission entry point.**
68
+ - **Auth:** Anonymous — **Permission:** None
69
+ - **Request body** (`application/json`): `SetFormDto`
70
+ - **Responses:**
71
+ - `200 OK` → created form id / value (manager `Value`)
72
+ - `400 Bad Request` → array of `ApiErrorResponse`
73
+ - **Notes:** `[AllowAnonymous]` — lets a publicly shared form be submitted without a JWT. Adds a randomized response delay.
74
+
75
+ #### `PUT api/Form`
76
+
77
+ - **Operation:** `UpdateForm` — Update an existing form instance.
78
+ - **Auth:** Bearer JWT — **Permission:** None (authenticated, no specific permission)
79
+ - **Request body** (`application/json`): `SetFormDto`
80
+ - **Responses:**
81
+ - `200 OK` → empty
82
+ - `400 Bad Request` → array of `ApiErrorResponse`
83
+ - **Notes:** Adds a randomized response delay.
84
+
85
+ #### `DELETE api/Form/{id}`
86
+
87
+ - **Operation:** `RemoveForm` — Delete a single form instance.
88
+ - **Auth:** Bearer JWT — **Permission:** `FormInstance:Delete`
89
+ - **Path params:** `{id}` — `string (uuid)`, required — form instance id.
90
+ - **Responses:**
91
+ - `200 OK` → deleted id / value
92
+ - `400 Bad Request` → array of `ApiErrorResponse`
93
+
94
+ #### `DELETE api/Form`
95
+
96
+ - **Operation:** `RemoveForms` — Delete several form instances by id.
97
+ - **Auth:** Bearer JWT — **Permission:** `FormInstance:Delete`
98
+ - **Request body** (`application/json`): `array of string (uuid)` — list of form instance ids.
99
+ - **Responses:**
100
+ - `200 OK` → result value
101
+ - `400 Bad Request` → array of `ApiErrorResponse`
102
+
103
+ #### `GET api/Form/{pid}/count`
104
+
105
+ - **Operation:** `FormCount` — Count of form instances for a parent id (`pid`).
106
+ - **Auth:** Bearer JWT — **Permission:** `FormInstance:Read`
107
+ - **Path params:** `{pid}` — `string (uuid)`, required — parent id.
108
+ - **Responses:**
109
+ - `200 OK` → `number` (count)
110
+
111
+ ---
112
+
113
+ ### FormTemplateController — `api/FormTemplate`
114
+
115
+ Controller route `api/[controller]` → **`api/FormTemplate`**. Controller auth entity: `FormTemplate`. Manages **form templates** (form definitions).
116
+
117
+ #### `POST api/FormTemplate`
118
+
119
+ - **Operation:** `SaveForm` — Create a form template.
120
+ - **Auth:** Bearer JWT — **Permission:** `FormTemplate:Create` (summary says "FormTemplate.Write")
121
+ - **Request body** (`application/json`): `FormTemplateDto`
122
+ - **Responses:**
123
+ - `200 OK` → created template id / value
124
+ - `400 Bad Request` → array of `ApiErrorResponse`
125
+
126
+ #### `PUT api/FormTemplate`
127
+
128
+ - **Operation:** `UpdateForm` — Update a form template.
129
+ - **Auth:** Bearer JWT — **Permission:** `FormTemplate:Update`
130
+ - **Request body** (`application/json`): `FormTemplateDto`
131
+ - **Responses:**
132
+ - `200 OK` → empty
133
+ - `400 Bad Request` → array of `ApiErrorResponse`
134
+
135
+ #### `PATCH api/FormTemplate/{id}`
136
+
137
+ - **Operation:** `UpdateFormState` — Enable/disable (toggle the `State` flag of) a form template.
138
+ - **Auth:** Bearer JWT — **Permission:** `FormTemplate:Update`
139
+ - **Path params:** `{id}` — `string (uuid)`, required — form template id.
140
+ - **Query params:** `state` — `boolean`, required — new state.
141
+ - **Responses:**
142
+ - `200 OK` → empty
143
+ - `400 Bad Request` → array of `ApiErrorResponse`
144
+
145
+ #### `DELETE api/FormTemplate/{id}`
146
+
147
+ - **Operation:** `RemoveForm` — Delete a form template.
148
+ - **Auth:** Bearer JWT — **Permission:** `FormTemplate:Delete`
149
+ - **Path params:** `{id}` — `string (uuid)`, required — form template id.
150
+ - **Responses:**
151
+ - `200 OK` → empty
152
+ - `400 Bad Request` → array of `ApiErrorResponse`
153
+
154
+ #### `GET api/FormTemplate/{id}`
155
+
156
+ - **Operation:** `GetForm` — Get a form template by id.
157
+ - **Auth:** Bearer JWT — **Permission:** `FormTemplate:Read`
158
+ - **Path params:** `{id}` — `string (uuid)`, required — form template id.
159
+ - **Responses:**
160
+ - `200 OK` → `FormTemplateDto`
161
+ - `400 Bad Request` → array of `ApiErrorResponse`
162
+
163
+ #### `GET api/FormTemplate`
164
+
165
+ - **Operation:** `GetForms` — Get a paginated list of form templates, optionally filtered by name.
166
+ - **Auth:** Bearer JWT — **Permission:** `FormTemplate:Read`
167
+ - **Query params:**
168
+ - `pageNumber` — `number`, required — 1-based page index.
169
+ - `pageItemCount` — `number`, required — page size.
170
+ - `searchName` — `string`, optional, default `null` — name filter; ignored if trimmed length < 3.
171
+ - **Responses:**
172
+ - `200 OK` → paginated list of `FormTemplateDto`
173
+ - `400 Bad Request` → array of `ApiErrorResponse`
174
+
175
+ #### `GET api/FormTemplate/all/basic`
176
+
177
+ - **Operation:** `GetAllFormIds` — Get all form templates in a lightweight (basic) shape.
178
+ - **Auth:** Bearer JWT — **Permission:** None (summary says "FormTemplate.None")
179
+ - **Responses:**
180
+ - `200 OK` → array of `BasicFormTemplateDto`
181
+ - `400 Bad Request` → array of `ApiErrorResponse`
182
+
183
+ #### `POST api/FormTemplate/{id}/duplicate`
184
+
185
+ - **Operation:** `DuplicateForm` — Duplicate an existing form template.
186
+ - **Auth:** Bearer JWT — **Permission:** `FormTemplate:Create` (summary says "FormTemplate.Write")
187
+ - **Path params:** `{id}` — `string (uuid)`, required — template id to duplicate.
188
+ - **Responses:**
189
+ - `200 OK` → `FormTemplateDto` (the new copy)
190
+ - `400 Bad Request` → array of `ApiErrorResponse`
191
+
192
+ #### `GET api/FormTemplate/{workspaceId}/{id}`
193
+
194
+ - **Operation:** `GetAnonymousForm` — **Public** fetch of a form template by workspace + template id (used to render a shared/published form).
195
+ - **Auth:** Anonymous — **Permission:** None
196
+ - **Path params:**
197
+ - `{workspaceId}` — `string (uuid)`, required — owning workspace id.
198
+ - `{id}` — `string (uuid)`, required — form template id.
199
+ - **Responses:**
200
+ - `200 OK` → `FormTemplateDto`
201
+ - `400 Bad Request` (empty or array of `ApiErrorResponse`)
202
+ - `401 Unauthorized` → when the form requires authentication (`AuthenticationRequiredException`).
203
+ - **Notes:** `[AllowAnonymous]`. Adds a randomized response delay. If the template is private/requires auth it returns `401` rather than the body. Route order matters: `{workspaceId}/{id}` only matches two-segment paths.
204
+
205
+ #### `GET api/FormTemplate/processTemplate/list`
206
+
207
+ - **Operation:** `GetProcessTemplates` — List process/flow templates available to back a form.
208
+ - **Auth:** Bearer JWT — **Permission:** `FormTemplate:Read`
209
+ - **Responses:**
210
+ - `200 OK` → list of process templates (manager-defined shape; not a Forms DTO)
211
+
212
+ #### `GET api/FormTemplate/processTemplate/{id}`
213
+
214
+ - **Operation:** `GetProcessTemplates` — Get a single process/flow template usable by a form, by id.
215
+ - **Auth:** Bearer JWT — **Permission:** `FormTemplate:Read`
216
+ - **Path params:** `{id}` — `string (uuid)`, required — process template id.
217
+ - **Responses:**
218
+ - `200 OK` → process template (manager-defined shape; not a Forms DTO)
219
+
220
+ ---
221
+
222
+ ### FormApplicationController — `api/FormApplication`
223
+
224
+ Controller route `api/[controller]` → **`api/FormApplication`**. Controller auth entity: `FormTemplate`. Manages **form applications** (dashboard/menu groupings of forms).
225
+
226
+ #### `GET api/FormApplication/{id}`
227
+
228
+ - **Operation:** `GetApplication` — Get a form application by id.
229
+ - **Auth:** Bearer JWT — **Permission:** None (summary "FormTemplate.None")
230
+ - **Path params:** `{id}` — `string (uuid)`, required — form application id.
231
+ - **Responses:**
232
+ - `200 OK` → `FormApplicationDto`
233
+ - `400 Bad Request` → array of `ApiErrorResponse`
234
+ - **Notes:** Adds a randomized response delay.
235
+
236
+ #### `GET api/FormApplication/all`
237
+
238
+ - **Operation:** `GetApplications` — Get a paginated list of all form applications.
239
+ - **Auth:** Bearer JWT — **Permission:** None
240
+ - **Query params:**
241
+ - `pageNumber` — `number`, required — 1-based page index.
242
+ - `pageItemCount` — `number`, required — page size.
243
+ - **Responses:**
244
+ - `200 OK` → array / paginated list of `FormApplicationDto`
245
+ - `400 Bad Request` → array of `ApiErrorResponse`
246
+
247
+ #### `GET api/FormApplication/all/{pid}`
248
+
249
+ - **Operation:** `GetApplicationsByPid` — Get the form applications tied to a form template id (`pid`).
250
+ - **Auth:** Bearer JWT — **Permission:** None
251
+ - **Path params:** `{pid}` — `string (uuid)`, required — form template id.
252
+ - **Responses:**
253
+ - `200 OK` → array of `FormApplicationDto`
254
+ - `400 Bad Request` → array of `ApiErrorResponse`
255
+
256
+ #### `GET api/FormApplication/all/filter`
257
+
258
+ - **Operation:** `GetApplicationsByFilter` — Get form applications filtered by state and type.
259
+ - **Auth:** Bearer JWT — **Permission:** None
260
+ - **Query params:**
261
+ - `state` — `FormApplicationState` (enum), required — see Shared DTOs.
262
+ - `type` — `FormApplicationType` (enum), required — see Shared DTOs. If omitted/`default (0)` the controller coerces it to `ALL`.
263
+ - **Responses:**
264
+ - `200 OK` → array of `FormApplicationDto`
265
+ - `400 Bad Request` → array of `ApiErrorResponse`
266
+
267
+ #### `POST api/FormApplication`
268
+
269
+ - **Operation:** `CreateApplication` — Create a form application.
270
+ - **Auth:** Bearer JWT — **Permission:** `FormTemplate:Create` (summary "FormTemplate.Write")
271
+ - **Request body** (`application/json`): `FormApplicationDto`
272
+ - **Responses:**
273
+ - `200 OK` → `string (uuid)` (new application id)
274
+ - `400 Bad Request` → array of `ApiErrorResponse`
275
+
276
+ #### `PUT api/FormApplication`
277
+
278
+ - **Operation:** `UpdateApplication` — Update a form application.
279
+ - **Auth:** Bearer JWT — **Permission:** `FormTemplate:Update`
280
+ - **Request body** (`application/json`): `FormApplicationDto`
281
+ - **Responses:**
282
+ - `200 OK` → empty (declared `bool`)
283
+ - `400 Bad Request` → array of `ApiErrorResponse`
284
+
285
+ #### `PATCH api/FormApplication/{id}`
286
+
287
+ - **Operation:** `ToggleApplication` — Enable/disable a form application.
288
+ - **Auth:** Bearer JWT — **Permission:** `FormTemplate:Update`
289
+ - **Path params:** `{id}` — `string (uuid)`, required — application id.
290
+ - **Query params:** `state` — `FormApplicationState` (enum), required — new state.
291
+ - **Responses:**
292
+ - `200 OK` → empty (declared `bool`)
293
+ - `400 Bad Request` → array of `ApiErrorResponse`
294
+
295
+ #### `DELETE api/FormApplication/{id}`
296
+
297
+ - **Operation:** `DeleteApplication` — Delete a form application.
298
+ - **Auth:** Bearer JWT — **Permission:** `FormTemplate:Delete`
299
+ - **Path params:** `{id}` — `string (uuid)`, required — application id.
300
+ - **Responses:**
301
+ - `200 OK` → empty (declared `bool`)
302
+ - `400 Bad Request` → array of `ApiErrorResponse`
303
+
304
+ ---
305
+
306
+ ### FormChainController — `api/Form` (chain sub-routes)
307
+
308
+ Controller route is explicitly **`api/Form`**. Controller auth entity: `FormInstance`. Manages **form chains** (sequences of linked form instances).
309
+
310
+ #### `GET api/Form/chain/{formTemplateId}/all`
311
+
312
+ - **Operation:** `GetFormChainSummary` — Paginated list of form chains that started from a given form template.
313
+ - **Auth:** Bearer JWT — **Permission:** `FormInstance:Read`
314
+ - **Path params:** `{formTemplateId}` — `string (uuid)`, required — originating form template id.
315
+ - **Query params:**
316
+ - `pageNumber` — `number`, required — 1-based page index.
317
+ - `pageItemCount` — `number`, required — page size.
318
+ - **Responses:**
319
+ - `200 OK` → paginated list of chain summaries (manager-defined shape)
320
+ - `400 Bad Request` → array of `ApiErrorResponse`
321
+
322
+ #### `GET api/Form/chain/{chainId}`
323
+
324
+ - **Operation:** `GetFormChainById` — Get an entire form chain by chain id.
325
+ - **Auth:** Bearer JWT — **Permission:** `FormInstance:Read`
326
+ - **Path params:** `{chainId}` — `string (uuid)`, required — chain id.
327
+ - **Responses:**
328
+ - `200 OK` → chain object (manager-defined shape)
329
+ - `400 Bad Request` → array of `ApiErrorResponse`
330
+
331
+ #### `PATCH api/Form/chain/{chainId}/{formInstanceId}`
332
+
333
+ - **Operation:** `UpdateFormChainById` — Patch the chain data of one form instance within a chain (scoped to the current workspace).
334
+ - **Auth:** Bearer JWT — **Permission:** `FormInstance:Update`
335
+ - **Path params:**
336
+ - `{chainId}` — `string (uuid)`, required — chain id.
337
+ - `{formInstanceId}` — `string (uuid)`, required — form instance id within the chain.
338
+ - **Request body** (`application/json`): `object` — free-form chain data (arbitrary JSON; FE-defined).
339
+ - **Responses:**
340
+ - `200 OK` → update result (manager-defined)
341
+ - `400 Bad Request` → array of `ApiErrorResponse`
342
+ - **Notes:** On error, adds a randomized response delay.
343
+
344
+ ---
345
+
346
+ ### FormProcessController — `api/FormProcess`
347
+
348
+ Controller route `api/[controller]` → **`api/FormProcess`**. Controller auth entity: `FormInstance`. **Entirely anonymous** — these endpoints let a public form front-end read and launch the form's backing flow. Every endpoint uses the `formTemplateWorkspaceId` header to scope the request.
349
+
350
+ #### `GET api/FormProcess/{formTemplateId}/{processTemplateId}`
351
+
352
+ - **Operation:** `GetProcessTemplate` — **Public** fetch of the flow/process template backing a form.
353
+ - **Auth:** Anonymous — **Permission:** None
354
+ - **Path params:**
355
+ - `{formTemplateId}` — `string (uuid)`, required — form template id.
356
+ - `{processTemplateId}` — `string (uuid)`, required — process/flow template id.
357
+ - **Special headers:** `formTemplateWorkspaceId` `[FromHeader]` — `string (uuid)`, required — workspace that owns the form template.
358
+ - **Responses:**
359
+ - `200 OK` → flow template (manager-defined shape)
360
+
361
+ #### `POST api/FormProcess/{formTemplateId}/{processTemplateId}/publish`
362
+
363
+ - **Operation:** `PublishFlow` — **Public** publish of the form's backing flow.
364
+ - **Auth:** Anonymous — **Permission:** None
365
+ - **Path params:**
366
+ - `{formTemplateId}` — `string (uuid)`, required.
367
+ - `{processTemplateId}` — `string (uuid)`, required.
368
+ - **Special headers:** `formTemplateWorkspaceId` `[FromHeader]` — `string (uuid)`, required.
369
+ - **Request body** (`application/json`): `object` — free-form publish payload (FE-defined).
370
+ - **Responses:**
371
+ - `200 OK` → published flow result (manager-defined)
372
+ - `400 Bad Request` → array of `ApiErrorResponse` (flow errors)
373
+ - **Notes:** `[AllowAnonymous]`. On error, adds a randomized response delay.
374
+
375
+ #### `POST api/FormProcess/{formTemplateId}/{processTemplateId}/launch`
376
+
377
+ - **Operation:** `LaunchFlowInstance` — **Public** launch of a flow instance from a form (the core "submit form → run flow" action).
378
+ - **Auth:** Anonymous — **Permission:** None
379
+ - **Path params:**
380
+ - `{formTemplateId}` — `string (uuid)`, required.
381
+ - `{processTemplateId}` — `string (uuid)`, required.
382
+ - **Query params:**
383
+ - `runSynchronous` — `boolean`, optional, default `false` — when `true`, waits for the flow to finish.
384
+ - `secondsTimeOut` — `number`, optional, default `60` — synchronous-wait timeout (seconds).
385
+ - **Special headers:** `formTemplateWorkspaceId` `[FromHeader]` — `string (uuid)`, required.
386
+ - **Request body** (`application/json`): `LaunchFlowPayload`
387
+ - **Responses:**
388
+ - `200 OK` → launch result (process instance id and/or variables; manager-defined)
389
+ - `400 Bad Request` → array of `ApiErrorResponse` (flow errors)
390
+ - **Notes:** `[AllowAnonymous]`. On error, adds a randomized response delay.
391
+
392
+ #### `GET api/FormProcess/{formTemplateId}/{processTemplateId}/{processInstanceId}/variables`
393
+
394
+ - **Operation:** `GetFlowInstanceVariables` — **Public** read of a running flow instance's variables (e.g. to show form-submission results).
395
+ - **Auth:** Anonymous — **Permission:** None
396
+ - **Path params:**
397
+ - `{formTemplateId}` — `string (uuid)`, required.
398
+ - `{processTemplateId}` — `string (uuid)`, required.
399
+ - `{processInstanceId}` — `string (uuid)`, required — the launched flow instance id.
400
+ - **Special headers:** `formTemplateWorkspaceId` `[FromHeader]` — `string (uuid)`, required.
401
+ - **Responses:**
402
+ - `200 OK` → flow instance variables (manager-defined shape)
403
+ - `400 Bad Request` → array of `ApiErrorResponse` (flow errors)
404
+ - **Notes:** `[AllowAnonymous]`. On error, adds a randomized response delay.
405
+
406
+ ---
407
+
408
+ ### FileFormController — `api/Form` (file upload/download)
409
+
410
+ Controller route is explicitly **`api/Form`**. Controller auth entity: `FormInstance`. Handles file upload/download tied to a **form instance**.
411
+
412
+ #### `POST api/Form/upload`
413
+
414
+ - **Operation:** `UploadFormFile` — **Public** file upload attached to a form instance.
415
+ - **Auth:** Anonymous — **Permission:** None
416
+ - **Special headers:**
417
+ - `formId` `[FromHeader]` — `string (uuid)`, required — form instance id.
418
+ - `fileId` `[FromHeader]` — `string (uuid)`, required — target file slot id.
419
+ - **Request body** (`multipart/form-data`): form field `package` — the uploaded file (`IFormFile`).
420
+ - **Responses:**
421
+ - `200 OK` → upload result value (manager-defined)
422
+ - `400 Bad Request` → array of `ApiErrorResponse`, or a plain error string on exception.
423
+ - **Notes:** `[AllowAnonymous]` so files can be attached to a publicly submitted form. Content type is `multipart/form-data` (overrides the controller-level `application/json`).
424
+
425
+ #### `GET api/Form/download`
426
+
427
+ - **Operation:** `DownloadFormFile` — Download a file previously attached to a form instance.
428
+ - **Auth:** Bearer JWT — **Permission:** `FormInstance:Read`
429
+ - **Special headers:**
430
+ - `formId` `[FromHeader]` — `string (uuid)`, required — form instance id.
431
+ - `fileId` `[FromHeader]` — `string (uuid)`, required — file id.
432
+ - **Responses:**
433
+ - `200 OK` → file stream (`File(...)`, original content type and file name)
434
+ - `400 Bad Request` → array of `ApiErrorResponse`, or a plain error string on exception.
435
+ - **Notes:** Returns a binary file download, not JSON.
436
+
437
+ ---
438
+
439
+ ### FileFormProcessController — `api/FormProcess` (flow-instance file upload/download)
440
+
441
+ Controller route is explicitly **`api/FormProcess`**. Controller auth entity: `FormInstance`. **Both endpoints anonymous** — file upload/download tied to a flow instance launched from a public form.
442
+
443
+ #### `POST api/FormProcess/{formTemplateId}/{flowInstanceId}/upload`
444
+
445
+ - **Operation:** `Upload` — **Public** file upload into a flow-instance variable (for a form-launched flow).
446
+ - **Auth:** Anonymous — **Permission:** None
447
+ - **Path params:**
448
+ - `{formTemplateId}` — `string (uuid)`, required — form template id.
449
+ - `{flowInstanceId}` — `string (uuid)`, required — launched flow instance id.
450
+ - **Special headers:**
451
+ - `flowTemplateId` `[FromHeader]` — `string (uuid)`, required — flow/process template id.
452
+ - `variableName` `[FromHeader]` — `string`, required — name of the flow variable to attach the file to.
453
+ - `fileId` `[FromHeader]` — `string (uuid)`, required — target file slot id.
454
+ - `formTemplateWorkspaceId` `[FromHeader]` — `string (uuid)`, required — workspace owning the form template.
455
+ - **Request body** (`multipart/form-data`): form field `package` — the uploaded file (`IFormFile`).
456
+ - **Responses:**
457
+ - `200 OK` → `string (uuid)` (the `fileId`)
458
+ - `400 Bad Request` → array of `ApiErrorResponse` (flow errors), or a plain error string on exception.
459
+ - **Notes:** `[AllowAnonymous]`. Content type `multipart/form-data`. On error, adds a randomized response delay.
460
+
461
+ #### `GET api/FormProcess/download`
462
+
463
+ - **Operation:** `Download` — **Public** download of a file from a flow-instance variable / storage path.
464
+ - **Auth:** Anonymous — **Permission:** None
465
+ - **Special headers:**
466
+ - `uploadFilePath` `[FromHeader]` — `string`, required — storage path of the file.
467
+ - `variableId` `[FromHeader]` — `string (uuid)`, optional — flow variable id.
468
+ - `instanceId` `[FromHeader]` — `string (uuid)`, optional — flow instance id.
469
+ - `flowTemplateId` `[FromHeader]` — `string (uuid)`, optional — flow template id.
470
+ - `formTemplateId` `[FromHeader]` — `string (uuid)`, optional — form template id.
471
+ - **Responses:**
472
+ - `200 OK` → file stream (`File(...)`, original content type and file name)
473
+ - `400 Bad Request` → array of `ApiErrorResponse`, or a plain error string on exception.
474
+ - **Notes:** `[AllowAnonymous]`. Returns a binary file download, not JSON.
475
+
476
+ ---
477
+
478
+ ### FormDataStoreController — `api/Form/dataStore/{dataStoreId}/rows`
479
+
480
+ Controller route is explicitly **`api/Form/dataStore/{dataStoreId}/rows`**. Controller auth entity: `FormInstance`. **All endpoints anonymous** — lets a (possibly public) form read/write rows in a backing DataStore. Each request is scoped by the `formTemplateWorkspaceId` / `formTemplateId` headers (and optional `formInstanceId`). Row dictionaries use **display names** as keys; Web-Api maps them to DataStore column aliases internally.
481
+
482
+ > `{dataStoreId}` — `string (uuid)`, required — applies to every endpoint below (path param).
483
+
484
+ #### `GET api/Form/dataStore/{dataStoreId}/rows`
485
+
486
+ - **Operation:** `GetRows` — Get a paginated set of rows from the data store.
487
+ - **Auth:** Anonymous — **Permission:** None
488
+ - **Query params:**
489
+ - `pageNumber` — `number`, required — 1-based page index.
490
+ - `pageItemCount` — `number`, required — page size.
491
+ - **Special headers:**
492
+ - `formTemplateWorkspaceId` `[FromHeader]` — `string (uuid)`, required.
493
+ - `formTemplateId` `[FromHeader]` — `string (uuid)`, required.
494
+ - `formInstanceId` `[FromHeader]` — `string (uuid)`, optional.
495
+ - **Responses:**
496
+ - `200 OK` → paginated rows (manager-defined shape)
497
+ - error → standardized error response (`this.ErrorResponse(result)`)
498
+
499
+ #### `POST api/Form/dataStore/{dataStoreId}/rows`
500
+
501
+ - **Operation:** `AddRows` — Add one or more rows to the data store.
502
+ - **Auth:** Anonymous — **Permission:** None
503
+ - **Special headers:** `formTemplateWorkspaceId` (req), `formTemplateId` (req), `formInstanceId` (opt) — all `[FromHeader]`, `string (uuid)`.
504
+ - **Request body** (`application/json`): `DataStoreRowsDto`
505
+ - **Responses:**
506
+ - `200 OK` → result value (manager-defined)
507
+ - error → standardized error response
508
+
509
+ #### `PUT api/Form/dataStore/{dataStoreId}/rows`
510
+
511
+ - **Operation:** `UpdateRow` — Update a single row.
512
+ - **Auth:** Anonymous — **Permission:** None
513
+ - **Special headers:** `formTemplateWorkspaceId` (req), `formTemplateId` (req), `formInstanceId` (opt) — all `[FromHeader]`, `string (uuid)`.
514
+ - **Request body** (`application/json`): `DataStoreUpdateRowRequestDto`
515
+ - **Responses:**
516
+ - `200 OK` → result value
517
+ - error → standardized error response
518
+
519
+ #### `DELETE api/Form/dataStore/{dataStoreId}/rows`
520
+
521
+ - **Operation:** `DeleteRows` — Delete one or more rows.
522
+ - **Auth:** Anonymous — **Permission:** None
523
+ - **Special headers:** `formTemplateWorkspaceId` (req), `formTemplateId` (req), `formInstanceId` (opt) — all `[FromHeader]`, `string (uuid)`.
524
+ - **Request body** (`application/json`): `DataStoreRowsPrimaryKeysDto`
525
+ - **Responses:**
526
+ - `200 OK` → result value
527
+ - error → standardized error response
528
+
529
+ ---
530
+
531
+ ### DocumentTemplateController — `api/DocumentTemplate`
532
+
533
+ Controller route `api/[controller]` → **`api/DocumentTemplate`**. Controller auth entity: `DocumentDesigner`. Manages **document templates**.
534
+
535
+ #### `GET api/DocumentTemplate/{id}`
536
+
537
+ - **Operation:** `GetTemplate` — Get a full document template (with body) by id.
538
+ - **Auth:** Bearer JWT — **Permission:** `DocumentDesigner:Read`
539
+ - **Path params:** `{id}` — `string (uuid)`, required — document template id.
540
+ - **Responses:**
541
+ - `200 OK` → `DocumentTemplateDto`
542
+ - `400 Bad Request` → array of `ApiErrorResponse` (not found)
543
+
544
+ #### `GET api/DocumentTemplate`
545
+
546
+ - **Operation:** `GetTemplates` — Paginated list of document templates (without body), optionally filtered by name.
547
+ - **Auth:** Bearer JWT — **Permission:** `DocumentDesigner:Read`
548
+ - **Query params:**
549
+ - `pageNumber` — `number`, required — 1-based page index.
550
+ - `pageItemCount` — `number`, required — page size.
551
+ - `searchName` — `string`, optional, default `null` — name filter; ignored if trimmed length < 3.
552
+ - **Responses:**
553
+ - `200 OK` → `PageRequestResult<BaseDocumentTemplateDto>`
554
+ - `400 Bad Request` → array of `ApiErrorResponse`
555
+
556
+ #### `POST api/DocumentTemplate`
557
+
558
+ - **Operation:** `SaveTemplate` — Create a document template.
559
+ - **Auth:** Bearer JWT — **Permission:** `DocumentDesigner:Create` (summary "DocumentDesigner.Write")
560
+ - **Request body** (`application/json`): `DocumentTemplateDto`
561
+ - **Responses:**
562
+ - `200 OK` → empty
563
+ - `400 Bad Request` → array of `ApiErrorResponse`
564
+
565
+ #### `PUT api/DocumentTemplate`
566
+
567
+ - **Operation:** `UpdateTemplate` — Update a document template.
568
+ - **Auth:** Bearer JWT — **Permission:** `DocumentDesigner:Update`
569
+ - **Request body** (`application/json`): `DocumentTemplateDto`
570
+ - **Responses:**
571
+ - `200 OK` → empty
572
+ - `400 Bad Request` → array of `ApiErrorResponse`
573
+
574
+ #### `DELETE api/DocumentTemplate/{id}`
575
+
576
+ - **Operation:** `RemoveTemplate` — Delete a document template.
577
+ - **Auth:** Bearer JWT — **Permission:** `DocumentDesigner:Delete`
578
+ - **Path params:** `{id}` — `string (uuid)`, required — document template id.
579
+ - **Responses:**
580
+ - `200 OK` → empty
581
+ - `400 Bad Request` → array of `ApiErrorResponse`
582
+
583
+ ---
584
+
585
+ ### ProcessInstanceDocumentsController — `api/DocumentTemplate` (restricted, instance scope)
586
+
587
+ Controller route is explicitly **`api/DocumentTemplate`**. Controller auth entity: `ProcessInstance`. Swagger groups this under the `DocumentTemplate` tag. Exposes a body-free ("restricted") view of a document template for use within a process instance.
588
+
589
+ #### `GET api/DocumentTemplate/{id}/restricted`
590
+
591
+ - **Operation:** `GetTemplate` — Get a single document template **without its body** (variables/metadata only).
592
+ - **Auth:** Bearer JWT — **Permission:** `ProcessInstance:Read`
593
+ - **Path params:** `{id}` — `string (uuid)`, required — document template id.
594
+ - **Responses:**
595
+ - `200 OK` → `RestrictedDocumentTemplateDto`
596
+ - `400 Bad Request` → array of `ApiErrorResponse`
597
+
598
+ ---
599
+
600
+ ### ProcessTemplateDocumentsController — `api/DocumentTemplate` (restricted, list)
601
+
602
+ Controller route is explicitly **`api/DocumentTemplate`**. Controller auth entity: `ProcessDesigner`. Swagger groups this under the `DocumentTemplate` tag. Exposes a body-free list of document templates for the process designer.
603
+
604
+ #### `GET api/DocumentTemplate/restricted`
605
+
606
+ - **Operation:** `GetTemplates` — Paginated list of document templates **without bodies**.
607
+ - **Auth:** Bearer JWT — **Permission:** `ProcessDesigner:Read`
608
+ - **Query params:**
609
+ - `pageNumber` — `number`, required — 1-based page index.
610
+ - `pageItemCount` — `number`, required — page size.
611
+ - **Responses:**
612
+ - `200 OK` → array of `RestrictedDocumentTemplateDto` (paginated result)
613
+ - `400 Bad Request` → array of `ApiErrorResponse`
614
+
615
+ ---
616
+
617
+ ## Notes on anonymous access
618
+
619
+ The following endpoints are `[AllowAnonymous]` (no JWT required). They form the **public form runtime** — a shared form's front-end uses them to render the form, submit it, attach/download files, launch the backing flow, read results, and interact with form-backed data stores. Anonymous endpoints are scoped by an explicit workspace id (route segment `{workspaceId}` or header `formTemplateWorkspaceId`) and frequently add a randomized response delay (`TimeDelay.RandomWait`) as a timing-attack countermeasure.
620
+
621
+ - `POST api/Form` (`SaveForm`) — submit/save a form instance.
622
+ - `GET api/FormTemplate/{workspaceId}/{id}` (`GetAnonymousForm`) — fetch a shared form template (returns `401` if it requires auth).
623
+ - `GET api/FormProcess/{formTemplateId}/{processTemplateId}` (`GetProcessTemplate`).
624
+ - `POST api/FormProcess/{formTemplateId}/{processTemplateId}/publish` (`PublishFlow`).
625
+ - `POST api/FormProcess/{formTemplateId}/{processTemplateId}/launch` (`LaunchFlowInstance`).
626
+ - `GET api/FormProcess/{formTemplateId}/{processTemplateId}/{processInstanceId}/variables` (`GetFlowInstanceVariables`).
627
+ - `POST api/Form/upload` (`UploadFormFile`).
628
+ - `POST api/FormProcess/{formTemplateId}/{flowInstanceId}/upload` (`Upload`).
629
+ - `GET api/FormProcess/download` (`Download`).
630
+ - `GET|POST|PUT|DELETE api/Form/dataStore/{dataStoreId}/rows` (all four `FormDataStore` endpoints).
631
+
632
+ All other endpoints in this domain require a Bearer JWT.
633
+
634
+ ---
635
+
636
+ ## Shared DTOs
637
+
638
+ ### `GetFormDto` (response — form instance)
639
+
640
+ | wire field | type | req/opt | description |
641
+ |---|---|---|---|
642
+ | `Id` | `string (uuid)` | required | form instance id |
643
+ | `Pid` | `string (uuid)` | required | parent id (process/template) |
644
+ | `WorkspaceId` | `string (uuid)` | required | owning workspace |
645
+ | `ChainId` | `string (uuid)` | optional | chain id, if part of a chain |
646
+ | `Name` | `string` | optional | form name |
647
+ | `StartedOn` | `string (date-time, ISO-8601)` | required | when the form was started |
648
+ | `SubmissionDate` | `string (date-time, ISO-8601)` | required | when the form was submitted |
649
+ | `Stage` | `FormStage` (enum) | required | form stage |
650
+ | `Submitters` | array of `FormSubmitterDto` | optional | who submitted and when |
651
+ | `Assignees` | array of `FormAssigneeDto` | optional | assignees/approvers |
652
+ | `NextStep` | `FormNextStepDto` | optional | next step descriptor |
653
+ | `FormFiles` | array of `FormFileDto` | optional | attached files |
654
+ | `Data` | `object` | optional | FE-defined form data (stored as JSON) |
655
+ | `ChainData` | `object` | optional | FE-defined per-instance chain data |
656
+ | `ChainDataList` | array of `FormChainDataModel` | optional | aggregated chain data across the chain |
657
+
658
+ ### `SetFormDto` (request — create/update form instance)
659
+
660
+ | wire field | type | req/opt | description |
661
+ |---|---|---|---|
662
+ | `Id` | `string (uuid)` | optional | form instance id (set on update) |
663
+ | `Pid` | `string (uuid)` | optional | parent id |
664
+ | `WorkspaceId` | `string (uuid)` | optional | owning workspace |
665
+ | `ChainStage` | `FormChain` (enum) | optional, default `None (1)` | chain role of this form |
666
+ | `ChainId` | `string (uuid)` | optional, default `null` | chain id |
667
+ | `Name` | `string` | optional | form name |
668
+ | `NextStep` | `FormNextStepDto` | optional | next step descriptor |
669
+ | `FormFiles` | array of `FormFileDto` | optional | attached files |
670
+ | `OverrideAssignees` | array of `FormAssigneeDto` | optional | assignee overrides |
671
+ | `Data` | `object` | optional | FE-defined form data (stored as JSON) |
672
+ | `ChainData` | `object` | optional | FE-defined per-instance chain data |
673
+
674
+ ### `FormTemplateDto` (request & response — form template)
675
+
676
+ Inherits `OwnershipAuditDto` (audit fields below).
677
+
678
+ | wire field | type | req/opt | description |
679
+ |---|---|---|---|
680
+ | `Id` | `string (uuid)` | optional | template id (set on update) |
681
+ | `Name` | `string` | optional | template name |
682
+ | `IsPrivate` | `boolean` | required | whether the form requires authentication to view |
683
+ | `Type` | `FormType` (enum) | required, default `UserTask (0)` | form type |
684
+ | `Status` | `FormStatus` (enum) | required, default `DRAFT (0)` | publication status |
685
+ | `State` | `boolean` | required | enabled/disabled state |
686
+ | `Assignees` | array of `FormAssigneeDto` | optional | assignees/approvers |
687
+ | `Data` | `object` | optional | FE-defined layout/config (stored as JSON) |
688
+ | `CustomUrl` | `CustomUrlDto` | optional, default `null` | custom/shared URL config |
689
+ | `WorkspaceName` | `string` | optional | owning workspace name |
690
+ | *(+ `OwnershipAuditDto` fields)* | | | see below |
691
+
692
+ ### `BasicFormTemplateDto` (response — lightweight template)
693
+
694
+ | wire field | type | req/opt | description |
695
+ |---|---|---|---|
696
+ | `Id` | `string (uuid)` | optional | template id |
697
+ | `Name` | `string` | optional | template name |
698
+ | `IsPrivate` | `boolean` | required | requires auth to view |
699
+ | `Type` | `FormType` (enum) | required, default `UserTask (0)` | form type |
700
+ | `Status` | `FormStatus` (enum) | required, default `DRAFT (0)` | publication status |
701
+ | `State` | `boolean` | required | enabled/disabled state |
702
+
703
+ ### `FormApplicationDto` (request & response — form application)
704
+
705
+ Inherits `OwnershipAuditDto` (audit fields below).
706
+
707
+ | wire field | type | req/opt | description |
708
+ |---|---|---|---|
709
+ | `Id` | `string (uuid)` | optional | application id |
710
+ | `Pid` | `string (uuid)` | required | form template id this application belongs to |
711
+ | `Name` | `string` | optional | application name |
712
+ | `Description` | `string` | optional | description |
713
+ | `Image` | `FormApplicationImageDto` | optional | icon/image |
714
+ | `Type` | `FormApplicationType` (enum) | required | application type |
715
+ | `Enabled` | `boolean` | required | enabled flag |
716
+ | `IsProcesio` | `boolean` | required | whether it is a built-in PROCESIO application |
717
+ | `UrlSlug` | `string` | optional | URL slug |
718
+ | `WorkspaceName` | `string` | optional | owning workspace name |
719
+ | *(+ `OwnershipAuditDto` fields)* | | | see below |
720
+
721
+ ### `FormApplicationImageDto`
722
+
723
+ | wire field | type | req/opt | description |
724
+ |---|---|---|---|
725
+ | `Url` | `string` | optional | image URL |
726
+ | `Name` | `string` | optional | image name |
727
+ | `Value` | `string` | optional | image value (e.g. base64) |
728
+ | `Source` | `FormApplicationImageSource` (enum) | required | image source kind |
729
+
730
+ ### `FormNextStepDto`
731
+
732
+ | wire field | type | req/opt | description |
733
+ |---|---|---|---|
734
+ | `Id` | `string (uuid)` | optional | next step id |
735
+ | `OrderId` | `number` | required | step order |
736
+ | `Name` | `string` | optional | step name |
737
+
738
+ ### `FormFileDto`
739
+
740
+ | wire field | type | req/opt | description |
741
+ |---|---|---|---|
742
+ | `Id` | `string (uuid)` | required | file id |
743
+ | `StepId` | `string (uuid)` | required | step the file belongs to |
744
+ | `Name` | `string` | optional | file name |
745
+ | `Type` | `string` | optional | content type |
746
+ | `Size` | `number` | optional | file size in bytes |
747
+ | `Path` | `string` | optional | storage path |
748
+ | `Hash` | `string` | optional | content hash |
749
+
750
+ ### `FormAssigneeDto`
751
+
752
+ | wire field | type | req/opt | description |
753
+ |---|---|---|---|
754
+ | `StepId` | `string (uuid)` | required | step id |
755
+ | `OrderId` | `number` | required | order |
756
+ | `Type` | `FormAssigneeType` (enum) | required | assignee vs approver |
757
+ | `Users` | array of `FormUserDto` | optional (defaults to empty) | assigned users |
758
+
759
+ ### `FormUserDto`
760
+
761
+ | wire field | type | req/opt | description |
762
+ |---|---|---|---|
763
+ | `UserId` | `string (uuid)` | required | user id |
764
+ | `FirstName` | `string` | optional | first name |
765
+ | `LastName` | `string` | optional | last name |
766
+
767
+ ### `FormSubmitterDto`
768
+
769
+ | wire field | type | req/opt | description |
770
+ |---|---|---|---|
771
+ | `SubmissionDate` | `string (date-time, ISO-8601)` | required | submission timestamp |
772
+ | `User` | `FormUserDto` | optional | submitting user |
773
+
774
+ ### `FormChainDataModel`
775
+
776
+ | wire field | type | req/opt | description |
777
+ |---|---|---|---|
778
+ | `FormId` | `string (uuid)` | required | form instance id |
779
+ | `FormTemplateId` | `string (uuid)` | required | template id |
780
+ | `Data` | `object` | optional | FE-defined chain data |
781
+ | `CreatedOn` | `string (date-time, ISO-8601)` | required | created timestamp |
782
+ | `UpdatedOn` | `string (date-time, ISO-8601)` | required | updated timestamp |
783
+
784
+ ### `LaunchFlowPayload` (request — launch flow from a form)
785
+
786
+ | wire field | type | req/opt | description |
787
+ |---|---|---|---|
788
+ | `connectionId` | `string` | optional | client/connection id (e.g. SignalR connection for async result delivery) |
789
+ | `flowTemplateId` | `string (uuid)` | required | flow template to launch |
790
+
791
+ > Note: wire names are camelCase here (`System.Text.Json` `[JsonPropertyName]` on this DTO).
792
+
793
+ ### `DataStoreRowsDto` (request — add rows)
794
+
795
+ | wire field | type | req/opt | description |
796
+ |---|---|---|---|
797
+ | `Rows` | array of `object` (map: `string` → value) | required (defaults to empty) | rows to insert; keys are column display names |
798
+
799
+ ### `DataStoreUpdateRowRequestDto` (request — update one row)
800
+
801
+ | wire field | type | req/opt | description |
802
+ |---|---|---|---|
803
+ | `Keys` | `object` (map: `string` → value) | required (defaults to empty) | PK columns identifying the row (display-name keys) |
804
+ | `Values` | `object` (map: `string` → value) | required (defaults to empty) | columns to update (display-name keys) |
805
+
806
+ ### `DataStoreRowsPrimaryKeysDto` (request — delete rows)
807
+
808
+ | wire field | type | req/opt | description |
809
+ |---|---|---|---|
810
+ | `Keys` | array of `object` (map: `string` → value) | required (defaults to empty) | one map of PK columns per row to delete (display-name keys) |
811
+
812
+ ### `DocumentTemplateDto` (request & response — full document template)
813
+
814
+ Inherits `BaseDocumentTemplateDto` (which inherits `OwnershipAuditDto`). All names below are explicit `[JsonProperty]` wire names.
815
+
816
+ | wire field | type | req/opt | description |
817
+ |---|---|---|---|
818
+ | `id` | `string (uuid)` | required | template id (from base) |
819
+ | `name` | `string` | optional | template name (from base) |
820
+ | `description` | `string` | optional | description |
821
+ | `body` | `string` | optional | document body (HTML/rich text) |
822
+ | `placeholderDelimiterStart` | `string` | optional | placeholder start delimiter |
823
+ | `placeholderDelimiterStop` | `string` | optional | placeholder end delimiter |
824
+ | `documentPageSize` | `string` | optional | page size (e.g. "A4") |
825
+ | `documentPageOrientation` | `number` | required | page orientation code |
826
+ | `variables` | array of `DocumentVariableDto` | optional | template variables/placeholders |
827
+ | *(+ `OwnershipAuditDto` fields)* | | | see below |
828
+
829
+ ### `BaseDocumentTemplateDto` (response — document template list item)
830
+
831
+ Inherits `OwnershipAuditDto`.
832
+
833
+ | wire field | type | req/opt | description |
834
+ |---|---|---|---|
835
+ | `id` | `string (uuid)` | required | template id |
836
+ | `name` | `string` | optional | template name |
837
+ | *(+ `OwnershipAuditDto` fields)* | | | see below |
838
+
839
+ ### `RestrictedDocumentTemplateDto` (response — body-free template)
840
+
841
+ Inherits `BaseDocumentTemplateDto` → `OwnershipAuditDto`.
842
+
843
+ | wire field | type | req/opt | description |
844
+ |---|---|---|---|
845
+ | `id` | `string (uuid)` | required | template id |
846
+ | `name` | `string` | optional | template name |
847
+ | `variables` | array of `DocumentVariableDto` | optional | template variables (no body) |
848
+ | *(+ `OwnershipAuditDto` fields)* | | | see below |
849
+
850
+ ### `DocumentVariableDto`
851
+
852
+ All names are explicit `[JsonProperty]` wire names.
853
+
854
+ | wire field | type | req/opt | description |
855
+ |---|---|---|---|
856
+ | `id` | `string (uuid)` | required | variable id |
857
+ | `dataType` | `string (uuid)` | required | data-type id |
858
+ | `type` | `number` | required | variable type code |
859
+ | `name` | `string` | optional | variable name |
860
+ | `defaultValue` | `object` | optional | default value |
861
+ | `isList` | `boolean` | required | whether the variable is a list |
862
+ | `isInput` | `boolean` | required | input flag |
863
+ | `isOutput` | `boolean` | required | output flag |
864
+
865
+ ### `CustomUrlDto`
866
+
867
+ | wire field | type | req/opt | description |
868
+ |---|---|---|---|
869
+ | `Id` | `string (uuid)` | optional | custom URL id |
870
+ | `WorkspaceId` | `string (uuid)` | optional | owning workspace |
871
+ | `EntityId` | `string (uuid)` | optional | linked entity id |
872
+ | `EntityType` | `CustomUrlEntityType` (enum) | optional | linked entity kind |
873
+ | `Type` | `CustomUrlType` (enum) | optional | URL type |
874
+ | `Url` | `string` | optional | full URL |
875
+ | `TinyUrl` | `string` | optional | shortened URL |
876
+ | `CreatedOn` | `string (date-time, ISO-8601)` | optional | created timestamp |
877
+ | `UpdatedOn` | `string (date-time, ISO-8601)` | optional | updated timestamp |
878
+ | `CreatedById` | `string (uuid)` | optional | creator id |
879
+ | `UpdatedById` | `string (uuid)` | optional | updater id |
880
+
881
+ ### `OwnershipAuditDto` (audit fields, inherited by several DTOs)
882
+
883
+ All names are explicit `[JsonProperty]` wire names.
884
+
885
+ | wire field | type | req/opt | description |
886
+ |---|---|---|---|
887
+ | `firstName` | `string` | optional | (deprecated) creator first name |
888
+ | `lastName` | `string` | optional | (deprecated) creator last name |
889
+ | `workspaceId` | `string (uuid)` | optional | owning workspace |
890
+ | `createdBy` | `string` | optional | "FirstName LastName" of creator |
891
+ | `updatedBy` | `string` | optional | "FirstName LastName" of last updater |
892
+ | `createdById` | `string (uuid)` | optional | creator id |
893
+ | `updatedById` | `string (uuid)` | optional | updater id |
894
+ | `createdOn` | `string (date-time, ISO-8601)` | optional | created timestamp |
895
+ | `updatedOn` | `string (date-time, ISO-8601)` | optional | updated timestamp |
896
+
897
+ ### `PageRequestResult<T>` (generic paginated response)
898
+
899
+ All names are explicit `[JsonProperty]` wire names.
900
+
901
+ | wire field | type | req/opt | description |
902
+ |---|---|---|---|
903
+ | `totalItemCount` | `number` | required | total items across all pages |
904
+ | `pageNumber` | `number` | required | current page (1-based) |
905
+ | `pageItemCount` | `number` | required | items per page |
906
+ | `pageItems` | array of `T` | required | items on this page |
907
+
908
+ ### `ApiErrorResponse` (error item — used inside `400` responses as an array)
909
+
910
+ | wire field | type | req/opt | description |
911
+ |---|---|---|---|
912
+ | `StatusCode` | `number` | required | error status code |
913
+ | `Value` | `object` | optional | error value/message |
914
+ | `Target` | `object` | optional | error target/field |
915
+
916
+ ---
917
+
918
+ ## Enums
919
+
920
+ ### `FormStage`
921
+ | name | value |
922
+ |---|---|
923
+ | `NONE` | 0 |
924
+ | `PENDING` | 1 |
925
+ | `COMPLETED` | 2 |
926
+
927
+ ### `FormChain`
928
+ | name | value | meaning |
929
+ |---|---|---|
930
+ | `None` | 1 | form is not part of a chain |
931
+ | `Entry` | 2 | form is the start of a chain |
932
+ | `Step` | 3 | form is a step within a chain |
933
+
934
+ ### `FormType`
935
+ | name | value |
936
+ |---|---|
937
+ | `UserTask` | 0 |
938
+ | `General` | 1 |
939
+
940
+ ### `FormStatus`
941
+ | name | value |
942
+ |---|---|
943
+ | `DRAFT` | 0 |
944
+ | `PUBLISHED` | 1 |
945
+
946
+ ### `FormAssigneeType`
947
+ | name | value |
948
+ |---|---|
949
+ | `ASSIGNEE` | 1 |
950
+ | `APPROVER` | 2 |
951
+
952
+ ### `FormApplicationType`
953
+ | name | value |
954
+ |---|---|
955
+ | `ALL` | 1 |
956
+ | `DASHBOARD` | 2 |
957
+ | `MENU` | 3 |
958
+
959
+ ### `FormApplicationState`
960
+ | name | value |
961
+ |---|---|
962
+ | `ALL` | 0 |
963
+ | `DISABLED` | 1 |
964
+ | `ENABLED` | 2 |
965
+
966
+ ### `FormApplicationImageSource`
967
+ | name | value |
968
+ |---|---|
969
+ | `ALL` | 1 |
970
+ | `BASE64` | 2 |
971
+ | `URL` | 3 |
972
+
973
+ ### `CustomUrlType`
974
+ | name | value |
975
+ |---|---|
976
+ | `Master` | 1 |
977
+ | `Workspace` | 2 |
978
+ | `Entity` | 3 |
979
+
980
+ ### `CustomUrlEntityType`
981
+ | name | value |
982
+ |---|---|
983
+ | `None` | 0 |
984
+ | `Form` | 1 |
985
+ | `Webhook` | 2 |