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,519 @@
1
+ # Webhooks, Notifications, API Keys & Transport 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/Webhooks/WebhooksController.cs`
6
+ > - `BE/Web-Api/WebApi/Application/Controllers/Webhooks/WebhookLaunchController.cs`
7
+ > - `BE/Web-Api/WebApi/Application/Controllers/Webhooks/VerifoneWebhooksController.cs`
8
+ > - `BE/Web-Api/WebApi/Application/Controllers/Webhooks/ProcesioAdmin/WebhookEventsController.cs`
9
+ > - `BE/Web-Api/WebApi/Application/Controllers/NotificationsController.cs`
10
+ > - `BE/Web-Api/WebApi/Application/Controllers/ApiKeyController.cs`
11
+ > - `BE/Web-Api/WebApi/Application/Controllers/TransportController.cs`
12
+
13
+ This domain covers four loosely related capabilities of the PROCESIO platform:
14
+
15
+ - **Webhooks** — CRUD for webhook definitions plus a tooling endpoint set used by the flow designer to listen for and generate data models from sample payloads. A webhook ties an inbound HTTP request to a process flow.
16
+ - **Inbound webhook trigger** (`WebhookLaunchController`) — the public, **anonymous** entry point external systems call to fire a webhook and launch the associated process. Accepts every common HTTP verb and any common body content type. This is the primary public integration surface of the platform.
17
+ - **Verifone / 2Checkout callbacks** (`VerifoneWebhooksController`) — anonymous payment-provider IPN (Instant Payment Notification) callbacks that route into the same webhook machinery.
18
+ - **Notifications** — in-app notification inbox: list the current user's notifications and mark them read.
19
+ - **API Keys** — manage long-lived API keys that let machine clients authenticate to the whole gateway with `key` + `value` headers instead of a JWT.
20
+ - **Transport** — export PROCESIO platform entities (flows, data types, credentials, documents, forms, data stores, webhooks) to a `.procesio` archive and import them back.
21
+
22
+ ---
23
+
24
+ ## Endpoints
25
+
26
+ ### WebhooksController — `api/Webhooks` (webhook CRUD & designer tooling)
27
+
28
+ Controller route: `[Route("api/[controller]")]` → `api/Webhooks`. Controller-level `[AuthorizationEntity(Webhook)]`. All actions return `application/json`. Every action declares `[Consumes("application/json", "multipart/form-data")]`.
29
+
30
+ ---
31
+
32
+ #### `GET api/Webhooks`
33
+
34
+ - **Operation:** `GetWebhooks` — paginated list of webhooks in the current workspace, optionally filtered by name.
35
+ - **Auth:** Bearer JWT (or API key) — **Permission:** `Webhook:Read` (`"Permission required: Webhook.Read"`)
36
+ - **Query params:**
37
+ - `pageNumber` — `number`, optional, default `1` — 1-based page index.
38
+ - `pageItemCount` — `number`, optional, default `0` — items per page; `0` means "all items".
39
+ - `searchName` — `string`, optional, default `null` — name filter; ignored (treated as `null`) if the trimmed value is shorter than 3 characters.
40
+ - **Responses:**
41
+ - `200 OK` → paginated list of `WebhookDto` (JSON).
42
+ - `400 Bad Request` → error payload (`USER_IS_NOT_AUTHORIZED`) when the manager returns `null`.
43
+
44
+ ---
45
+
46
+ #### `GET api/Webhooks/{webhookId}`
47
+
48
+ - **Operation:** `GetWebhook` — fetch a single webhook by id.
49
+ - **Auth:** Bearer JWT (or API key) — **Permission:** `Webhook:Read` (`"Permission required: Webhook.Read"`)
50
+ - **Path params:** `{webhookId}` — `string (uuid)`, required.
51
+ - **Responses:**
52
+ - `200 OK` → `WebhookDto`
53
+ - `400 Bad Request` → webhook error payload.
54
+
55
+ ---
56
+
57
+ #### `POST api/Webhooks`
58
+
59
+ - **Operation:** `CreateWebhook` — create a new webhook definition.
60
+ - **Auth:** Bearer JWT (or API key) — **Permission:** `Webhook:Create` (`"Permission required: Webhook.Write"`)
61
+ - **Request body** (`application/json` or `multipart/form-data`): `WebhookDto`
62
+ - **Responses:**
63
+ - `200 OK` → created `WebhookDto` (manager `Value`).
64
+ - `400 Bad Request` → webhook error payload.
65
+
66
+ ---
67
+
68
+ #### `PUT api/Webhooks`
69
+
70
+ - **Operation:** `UpdateWebhook` — update an existing webhook definition.
71
+ - **Auth:** Bearer JWT (or API key) — **Permission:** `Webhook:Update` (`"Permission required: Webhook.Update"`)
72
+ - **Request body** (`application/json` or `multipart/form-data`): `WebhookDto` (the `id` field identifies the target).
73
+ - **Responses:**
74
+ - `200 OK` → updated `WebhookDto`.
75
+ - `400 Bad Request` → webhook error payload.
76
+
77
+ ---
78
+
79
+ #### `DELETE api/Webhooks/{webhookId}`
80
+
81
+ - **Operation:** `DeleteWebhook` — delete a webhook by id.
82
+ - **Auth:** Bearer JWT (or API key) — **Permission:** `Webhook:Delete` (`"Permission required: Webhook.Delete"`)
83
+ - **Path params:** `{webhookId}` — `string (uuid)`, required.
84
+ - **Responses:**
85
+ - `200 OK` → empty.
86
+ - `400 Bad Request` → webhook error payload.
87
+
88
+ ---
89
+
90
+ #### `GET api/Webhooks/datamodels/{webhookId}`
91
+
92
+ - **Operation:** `GetDataModelsByWebhook` — return the data model(s) associated with a webhook (the shape of its payload).
93
+ - **Auth:** Bearer JWT (or API key) — **Permission:** `Webhook:Read` (`"Permission required: Webhook.Read"`)
94
+ - **Path params:** `{webhookId}` — `string (uuid)`, required.
95
+ - **Responses:**
96
+ - `200 OK` → data model(s) (JSON; shaped like `DataModelDto`).
97
+ - `400 Bad Request` → webhook error payload.
98
+
99
+ ---
100
+
101
+ #### `POST api/Webhooks/generate-data`
102
+
103
+ - **Operation:** `GenerateDataModel` — generate a data model from a raw payload definition (used by the designer when configuring a webhook).
104
+ - **Auth:** Bearer JWT (or API key) — **Permission:** `Webhook:Create` (`"Permission required: Webhook.Write"`)
105
+ - **Request body** (`application/json` or `multipart/form-data`): `WebhookDataModelDto`
106
+ - **Responses:**
107
+ - `200 OK` → generated data model (JSON).
108
+ - `400 Bad Request` → webhook error payload.
109
+
110
+ ---
111
+
112
+ #### `DELETE api/Webhooks/{webhookId}/undo`
113
+
114
+ - **Operation:** `UndoTemporaryWebhook` — discard the temporary/draft webhook created while editing without saving.
115
+ - **Auth:** Bearer JWT (or API key) — **Permission:** `Webhook:Update` (`"Permission required: Webhook.Update"`)
116
+ - **Path params:** `{webhookId}` — `string (uuid)`, required.
117
+ - **Responses:**
118
+ - `200 OK` → empty.
119
+ - `400 Bad Request` → webhook error payload.
120
+ - **Notes:** Deletes the temporary webhook record linked to `webhookId`; used when a designer edit session is abandoned.
121
+
122
+ ---
123
+
124
+ #### `GET api/Webhooks/{webhookId}/used`
125
+
126
+ - **Operation:** `IsUsed` — check whether a webhook is referenced inside any flow.
127
+ - **Auth:** Bearer JWT (or API key) — **Permission:** `Webhook:Read` (`"Permission required: Webhook.Read"`)
128
+ - **Path params:** `{webhookId}` — `string (uuid)`, required.
129
+ - **Responses:**
130
+ - `200 OK` → boolean-like value (the manager's `Value`; `true` if the webhook is used in a flow).
131
+ - `400 Bad Request` → webhook error payload.
132
+
133
+ ---
134
+
135
+ #### `POST api/Webhooks/listen`
136
+
137
+ - **Operation:** `Listen` — start/stop a "listen" session so the designer can capture a sample inbound request and build a data model from it (or perform handshake configuration).
138
+ - **Auth:** Bearer JWT (or API key) — **Permission:** `Webhook:Update` (`"Permission required: Webhook.Update"`)
139
+ - **Request body** (`application/json` or `multipart/form-data`): `WebhookListenDto`
140
+ - **Responses:**
141
+ - `200 OK` → empty.
142
+ - `400 Bad Request` → webhook error payload.
143
+ - **Notes:** Real-time designer tooling. `ConnectionId` ties the session to a SignalR/websocket connection so captured payloads can be pushed back to the client.
144
+
145
+ ---
146
+
147
+ ### WebhookLaunchController — `api/Webhooks/launch/{id}` (ANONYMOUS inbound trigger)
148
+
149
+ Controller route: `[Route("api/Webhooks")]`. Controller-level `[AuthorizationEntity(Webhook)]`, but the single action is `[AllowAnonymous]`.
150
+
151
+ > **This is the key public integration point.** External systems call this URL to fire a configured webhook, which launches the associated PROCESIO process flow. No JWT or API key is required.
152
+
153
+ ---
154
+
155
+ #### `GET|POST|PUT|PATCH|DELETE api/Webhooks/launch/{id}`
156
+
157
+ - **Operation:** `LaunchWebhook` — fire the webhook identified by `{id}`, capture the inbound request (headers, query string, body), and launch the linked process flow.
158
+ - **Auth:** **Anonymous** (`[AllowAnonymous]`) — **Permission:** `None` (`"Permission required: None"`)
159
+ - **HTTP verbs:** the same action is registered for **GET, POST, PUT, PATCH, and DELETE** (five `[HttpX("launch/{id:guid}")]` attributes on one method). All five behave identically.
160
+ - **Path params:** `{id}` — `string (uuid)`, required — the webhook id to trigger.
161
+ - **Query params:**
162
+ - `payload` — `string`, optional, default `null` — when supplied, it is parsed as JSON and used as **both** the webhook body (`Body = JToken.Parse(payload)`) **and** the param value, *overriding* any request body. Lets a caller pass the payload entirely in the query string (handy for `GET`/`DELETE` that have no body). Must be valid JSON or the request fails with `400`.
163
+ - `respondOk` — `boolean`, optional, default `null` — controls the synchronous HTTP response (see Notes). When omitted, the response is whatever the downstream webhook service returns; `true` returns an empty `200 OK`; `false` returns a styled HTML "Request sent" confirmation page.
164
+ - **Request body** (any content type when `payload` is not supplied): the raw body is parsed according to `Content-Type`:
165
+ - `application/json` → parsed as JSON.
166
+ - `application/x-ndjson` → parsed as a JSON array (newline-delimited JSON).
167
+ - `application/xml` → converted from XML to JSON.
168
+ - `application/x-www-form-urlencoded` → form fields converted to a JSON object.
169
+ - `multipart/form-data` → text fields + uploaded files; files are stored and merged into the payload. Returns `400` if a text key and a file share the same key.
170
+ - `text/plain` → wrapped in a JSON object.
171
+ - no `Content-Type` (null) → empty JSON object `{}`.
172
+ - any other content type → `415 Unsupported Media Type`.
173
+ - **Responses:**
174
+ - `200 OK` → depends on `respondOk`:
175
+ - `respondOk` omitted → the `IActionResult` returned by the downstream webhook service (may include a custom response body configured on the webhook).
176
+ - `respondOk=true` → empty `200 OK`.
177
+ - `respondOk=false` → `200 OK` with `Content-Type: text/html` rendering a PROCESIO-branded "Request sent" page.
178
+ - `400 Bad Request` → `INTERNAL_ERROR` on any processing exception (e.g. invalid JSON in `payload`), or a multipart key-collision message.
179
+ - `415 Unsupported Media Type` → unrecognized `Content-Type`.
180
+ - **Notes:**
181
+ - The full inbound request is captured: request **headers** and **query string** are serialized into the webhook payload (`Header`, `Param`) alongside the parsed **body**, so the launched flow can read all three.
182
+ - Each launch creates a new webhook event id (`Guid`) server-side and redirects the payload to the internal webhook service, which triggers the process flow asynchronously.
183
+ - Idempotency: none — every call triggers a new process instance.
184
+
185
+ ---
186
+
187
+ ### VerifoneWebhooksController — `api/Webhooks/launch/{id}/verifone` (payment provider callbacks)
188
+
189
+ Controller route: `[Route("api/Webhooks")]`. Controller-level `[AuthorizationEntity(Webhook)]`. Both actions are `[AllowAnonymous]` and `[ApiExplorerSettings(IgnoreApi = true)]` (hidden from Swagger but reachable). Used for Verifone / 2Checkout IPN callbacks.
190
+
191
+ ---
192
+
193
+ #### `POST api/Webhooks/launch/{id}/verifone`
194
+
195
+ - **Operation:** `LaunchFormData` — handle a Verifone/2Checkout IPN callback delivered as URL-encoded form data and route it through the IPN service.
196
+ - **Auth:** **Anonymous** (`[AllowAnonymous]`) — **Permission:** `None`
197
+ - **Hidden from Swagger:** yes
198
+ - **Path params:** `{id}` — `string (uuid)`, required — the webhook id.
199
+ - **Request body** (`application/x-www-form-urlencoded`): raw form collection (`IFormCollection`) — the provider's IPN fields. No fixed DTO; fields are provider-defined.
200
+ - **Responses:**
201
+ - `200 OK` → empty when the IPN service returns no content.
202
+ - `200 OK` (`text/plain`) → the IPN service's response string when non-empty (e.g. an acknowledgement token expected by the provider).
203
+ - `400 Bad Request` → `"Internal server error!"` on any exception.
204
+ - **Notes:** Wraps all processing in a try/catch and never surfaces internal errors verbatim.
205
+
206
+ ---
207
+
208
+ #### `GET api/Webhooks/launch/{id}/verifone`
209
+
210
+ - **Operation:** `LaunchGetFormData` — handle a Verifone/2Checkout callback delivered via GET with the payload in the query string.
211
+ - **Auth:** **Anonymous** (`[AllowAnonymous]`) — **Permission:** `None`
212
+ - **Hidden from Swagger:** yes
213
+ - **Path params:** `{id}` — `string (uuid)`, required.
214
+ - **Query params:** `payload` — `string`, required — JSON string; parsed (`JToken.Parse`) into the webhook body. (No body content is read; `Param` is set to `"[]"` and `Header` to `"{}"`.)
215
+ - **Responses:**
216
+ - `200 OK` → empty.
217
+ - **Notes:** Generates a new webhook event id and redirects the payload directly to the internal webhook service. Declares `[Consumes("application/json", "multipart/form-data")]` despite reading only the query string.
218
+
219
+ ---
220
+
221
+ ### WebhookEventsController — `api/WebhookEvents` (ProcesioAdmin, hidden)
222
+
223
+ Controller route: `[Route("api/[controller]")]` → `api/WebhookEvents`. Controller-level `[AuthorizationEntity(ProcesioAdmin)]`, `[ApiExplorerSettings(IgnoreApi = true)]`, `[Consumes("application/json")]`. Both actions require ProcesioAdmin rights and are hidden from Swagger but reachable. Tagged `ProcesioAdmin`.
224
+
225
+ > Note: this controller is **not** under an `internal/` route and is **not** `[SecureInternalController]`, so it is technically part of the public gateway surface, but it is an admin-only operational endpoint. Documented for completeness.
226
+
227
+ ---
228
+
229
+ #### `GET api/WebhookEvents`
230
+
231
+ - **Operation:** `GetRunningWebhookEvents` — list webhook events that are currently running (in progress), filtered by workspace / user / webhook.
232
+ - **Auth:** Bearer JWT (or API key) — **Permission:** `ProcesioAdmin:Read`
233
+ - **Hidden from Swagger:** yes
234
+ - **Special headers** (all `[FromHeader]`, all optional):
235
+ - `targetWorkspace` — `string (uuid)` — filter by workspace.
236
+ - `userId` — `string (uuid)` — filter by user.
237
+ - `webhookId` — `string (uuid)` — filter by webhook.
238
+ - **Query params:**
239
+ - `pageNumber` — `number`, optional, default `1`.
240
+ - `pageItemCount` — `number`, optional, default `0` (all items).
241
+ - **Responses:**
242
+ - `200 OK` → paginated list of running webhook events (JSON).
243
+
244
+ ---
245
+
246
+ #### `GET api/WebhookEvents/count`
247
+
248
+ - **Operation:** `CountRunningWebhookEvents` — count webhook events currently running, filtered by workspace / user / webhook.
249
+ - **Auth:** Bearer JWT (or API key) — **Permission:** `ProcesioAdmin:Read`
250
+ - **Hidden from Swagger:** yes
251
+ - **Special headers** (all `[FromHeader]`, all optional): `targetWorkspace`, `userId`, `webhookId` — same as above.
252
+ - **Responses:**
253
+ - `200 OK` → number of running events (JSON).
254
+
255
+ ---
256
+
257
+ ### NotificationsController — `api/Notifications` (in-app notification inbox)
258
+
259
+ Controller route: `[Route("api/[controller]")]` → `api/Notifications`. Controller-level `[AuthorizationEntity(None)]`, `[Consumes("application/json")]`, `[Produces("application/json")]`. Proxies to the Notifications service.
260
+
261
+ ---
262
+
263
+ #### `GET api/Notifications`
264
+
265
+ - **Operation:** `GetUserNotifications` — return all in-app notifications for the current user.
266
+ - **Auth:** Bearer JWT (or API key) — **Permission:** `None` (`"Permission required: None"`) — authenticated only.
267
+ - **Responses:**
268
+ - `200 OK` → the Notifications service response (user notifications list).
269
+ - `400 Bad Request` → context error payload.
270
+
271
+ ---
272
+
273
+ #### `PATCH api/Notifications`
274
+
275
+ - **Operation:** `AcknowledgeUserNotifications` — mark one notification, or all unread notifications, as read.
276
+ - **Auth:** Bearer JWT (or API key) — **Permission:** `None` (`"Permission required: None"`)
277
+ - **Request body** (`application/json`): `AcknowledgeUserNotificationDto`
278
+ - **Responses:**
279
+ - `200 OK` → the Notifications service response.
280
+ - `400 Bad Request` → context error payload.
281
+ - **Notes:** If `id` is null and `markAllUnread` is `true`, all the user's notifications are marked read; otherwise only the notification with the given `id` is marked read.
282
+
283
+ ---
284
+
285
+ ### ApiKeyController — `api/ApiKey` (API key management)
286
+
287
+ Controller route: `[Route("api/[controller]")]` → `api/ApiKey`. Controller-level `[AuthorizationEntity(ApiKey)]`, `[Consumes("application/json")]`, `[Produces("application/json")]`.
288
+
289
+ > **Important:** every action rejects callers that authenticated *with an API key* (`AuthenticationType == ApiKey`) and returns an unauthorized response. **API keys can be used everywhere else on the gateway, but they cannot be used to manage API keys** — you must use a JWT (a real user session) to create/list/revoke keys. See "## How API key authentication works" below.
290
+
291
+ ---
292
+
293
+ #### `GET api/ApiKey`
294
+
295
+ - **Operation:** `GetApiKeys` — list the current user's API keys in the current workspace.
296
+ - **Auth:** Bearer JWT — **Permission:** `ApiKey:Read` (`"Permission required: ApiKey.Read"`)
297
+ - **Responses:**
298
+ - `200 OK` → array of `ApiKeyDto` (the `value` field is **not** populated here — only `id`, `name`, `lastAccessed`).
299
+ - `401/403 Unauthorized` → if the request authenticated via API key.
300
+
301
+ ---
302
+
303
+ #### `POST api/ApiKey`
304
+
305
+ - **Operation:** `CreateApiKey` — generate a new API key for the current user/workspace.
306
+ - **Auth:** Bearer JWT — **Permission:** `ApiKey:Create` (`"Permission required: ApiKey.Write"`)
307
+ - **Responses:**
308
+ - `200 OK` → `ApiKeyDto` — **this is the only response that returns the plaintext `value`** (the secret). The server stores only a hash, so the value cannot be retrieved again.
309
+ - `400 Bad Request` → error payload `MAX_NR_API_KEYS` if the user already has 25 keys (the per-user/workspace limit).
310
+ - `401/403 Unauthorized` → if the request authenticated via API key.
311
+ - **Notes:** Key name is a random 16-char string; value is a random 64-char string. Maximum 25 keys per user/workspace.
312
+
313
+ ---
314
+
315
+ #### `DELETE api/ApiKey`
316
+
317
+ - **Operation:** `RevokeAll` — revoke (delete) all of the current user's API keys in the current workspace.
318
+ - **Auth:** Bearer JWT — **Permission:** `ApiKey:Delete` (`"Permission required: ApiKey.Delete"`)
319
+ - **Responses:**
320
+ - `200 OK` → empty.
321
+ - `400 Bad Request` → `"No apikey found to delete"` when there are none.
322
+ - `401/403 Unauthorized` → if the request authenticated via API key.
323
+
324
+ ---
325
+
326
+ #### `DELETE api/ApiKey/{id}`
327
+
328
+ - **Operation:** `RevokeKey` — revoke (delete) a single API key by id.
329
+ - **Auth:** Bearer JWT — **Permission:** `ApiKey:Delete` (`"Permission required: ApiKey.Delete"`)
330
+ - **Path params:** `{id}` — `string (uuid)`, required — the API key id.
331
+ - **Responses:**
332
+ - `200 OK` → empty.
333
+ - `400 Bad Request` → `"Invalid key id."` when the key does not exist.
334
+ - `401/403 Unauthorized` → if the request authenticated via API key.
335
+
336
+ ---
337
+
338
+ ### TransportController — `api/Transport` (export / import of platform entities)
339
+
340
+ Controller route: `[Route("api/[controller]")]` → `api/Transport`. Controller-level `[AuthorizationEntity(Workspace)]`. (No controller-level `[Produces]`/`[Consumes]`.)
341
+
342
+ ---
343
+
344
+ #### `POST api/Transport/import`
345
+
346
+ - **Operation:** `ImportProcesioData` — import platform entities from an uploaded `.procesio` archive.
347
+ - **Auth:** Bearer JWT (or API key) — **Permission:** `Workspace:Admin` (`"Permission required: Workspace.Admin"`)
348
+ - **Special headers** (all `[FromHeader]`, `boolean`, required — value types):
349
+ - `overrideData` — overwrite existing entities instead of creating copies.
350
+ - `importDataTypes` — include data types/models.
351
+ - `importFlows` — include flows.
352
+ - `importCredentials` — include credentials.
353
+ - `importDocuments` — include document templates.
354
+ - `importForms` — include forms.
355
+ - `importDataStores` — include data stores.
356
+ - **Request body** (`multipart/form-data`): `importedData` — `file`, required — the `.procesio` archive (`IFormFile`).
357
+ - **Responses:**
358
+ - `200 OK` → empty on success.
359
+ - `403 Forbidden` → body `MIGRATE` constant on any error.
360
+ - **Notes:** The webhook-import flag passed to the manager is hard-coded `false` (webhooks are not imported by this endpoint). Import work is delegated to `IDataTransportManager.Import`.
361
+
362
+ ---
363
+
364
+ #### `GET api/Transport/export`
365
+
366
+ - **Operation:** `ExportProcesioData` — export selected platform entities to a downloadable `.procesio` archive. (Comment in source: "No longer used by FE".)
367
+ - **Auth:** Bearer JWT (or API key) — **Permission:** `Workspace:Admin` (`"Permission required: Workspace.Admin"`)
368
+ - **Special headers** (all `[FromHeader]`, `boolean`, required — value types):
369
+ - `exportDataTypes`, `exportFlows`, `exportCredentials`, `exportWebhooks`, `exportDocuments`, `exportForms`, `exportDataStores` — include each entity category.
370
+ - `exportSensitiveData` — include sensitive data (e.g. credential secrets).
371
+ - **Responses:**
372
+ - `200 OK` → binary file (`application/octet-stream`), filename `ExportedData-<UTC timestamp>.procesio`.
373
+ - `403 Forbidden` → body `MIGRATE` constant on any error.
374
+
375
+ ---
376
+
377
+ #### `POST api/Transport/export-entities`
378
+
379
+ - **Operation:** `ExportProcesioData` (overload) — export specific entities selected by id lists to a downloadable `.procesio` archive.
380
+ - **Auth:** Bearer JWT (or API key) — **Permission:** `Workspace:Admin` (`"Permission required: Workspace.Admin"`)
381
+ - **Request body** (`application/json`): `ExportEntitiesDto`
382
+ - **Responses:**
383
+ - `200 OK` → binary file (`application/octet-stream`), filename `ExportedEntities-<UTC timestamp>.procesio`.
384
+ - `403 Forbidden` → body `MIGRATE` constant on any error.
385
+
386
+ ---
387
+
388
+ ## How API key authentication works (alternative to JWT)
389
+
390
+ API keys let a machine client authenticate to the Web-Api gateway **without a JWT**. They are the alternative credential for nearly every endpoint in this service.
391
+
392
+ - The gateway selects the auth mode from the `auth_type` request header (parsed into `WebApiAuthTypes`: `Token=0`, `ApiKey=1`, `Anonymous=2`). To use an API key, set `auth_type: 1` (`ApiKey`).
393
+ - The key itself is sent in **two headers**:
394
+ - `key` — the API key **name** (the random 16-char identifier returned as `name` from `POST api/ApiKey`).
395
+ - `value` — the API key **secret** (the random 64-char string returned as `value` from `POST api/ApiKey`, shown only once at creation).
396
+ - Server-side validation (`UserProfile.InitApiKey` + `Authentication` middleware): the gateway looks up the key by `key`(name) within the workspace, verifies it is active, and validates `value` against the stored hash (`Hash.ValidateHash`). On success it loads the owning user's profile and authorization, then updates the key's `lastAccessed` timestamp. Any mismatch → `403 Forbidden`.
397
+ - Workspace scoping: keys are bound to the workspace they were created in. Send the workspace id the same way a JWT request would (`workspaceId` header).
398
+ - **Restriction:** API-key-authenticated requests cannot manage API keys — all `ApiKeyController` actions reject `AuthenticationType == ApiKey`. Use a JWT to create/list/revoke keys.
399
+ - Limit: max **25** keys per user/workspace.
400
+
401
+ For the inbound webhook trigger (`api/Webhooks/launch/{id}`) and the Verifone callbacks, no credential is needed at all — those are `[AllowAnonymous]` and rely on the unguessable webhook `{id}` (uuid) for access control.
402
+
403
+ ---
404
+
405
+ ## Shared DTOs
406
+
407
+ ### `WebhookDto` (extends `BaseWebhookDto`)
408
+ Webhook definition. Inherits all `BaseWebhookDto` fields plus:
409
+
410
+ | Wire field | Type | Req? | Notes |
411
+ |---|---|---|---|
412
+ | `Id` | `string (uuid)` | optional | from `BaseWebhookDto`; nullable. |
413
+ | `Name` | `string` | optional | from `BaseWebhookDto`; webhook name. |
414
+ | `PayloadIsList` | `boolean` | required | from `BaseWebhookDto`; payload root is an array. |
415
+ | `HasHeader` | `boolean` | required | from `BaseWebhookDto`; capture/expose request headers. |
416
+ | `HasQuery` | `boolean` | required | from `BaseWebhookDto`; capture/expose query string. |
417
+ | `DataModelId` | `string (uuid)` | required | id of the data model describing the payload. |
418
+ | `Type` | `string\|number (enum WebhookType: AUTO=0, MANUAL=1)` | required | how the webhook fires. |
419
+ | `Definition` | `string` | optional | raw payload/data-model definition. |
420
+ | `IsEdited` | `boolean` | optional | nullable; draft/edit flag. |
421
+ | `DataModel` | `object (DataModelDto)` | optional | the resolved data model. |
422
+ | `CustomResponseConfig` | `object (WebhookCustomResponseDto)` | optional | configures the synchronous HTTP response returned to the caller. |
423
+ | `CreatedOn` | `string (date-time, ISO-8601)` | optional | server-set. |
424
+ | `UpdatedOn` | `string (date-time, ISO-8601)` | optional | server-set. |
425
+
426
+ ### `BaseWebhookDto`
427
+ Base type for webhook DTOs. Fields: `Id` (`string (uuid)`, optional/nullable), `Name` (`string`, optional), `PayloadIsList` (`boolean`, required), `HasHeader` (`boolean`, required), `HasQuery` (`boolean`, required). (Listed inline in `WebhookDto` above.)
428
+
429
+ ### `WebhookCustomResponseDto`
430
+ Configures the custom response returned synchronously by the inbound trigger.
431
+
432
+ | Wire field | Type | Req? | Notes |
433
+ |---|---|---|---|
434
+ | `ConfigType` | `string\|number (enum WebhookResponseType: StaticJson=1, Javascript=2, JsonPath=3)` | required | how the response body is produced. |
435
+ | `Config` | `string` | optional | the static JSON, JS snippet, or JSON path, depending on `ConfigType`. |
436
+
437
+ ### `WebhookDataModelDto`
438
+ Request body for `POST api/Webhooks/generate-data`.
439
+
440
+ | Wire field | Type | Req? | Notes |
441
+ |---|---|---|---|
442
+ | `Definition` | `string` | optional | raw payload definition used to infer a data model. |
443
+
444
+ ### `WebhookListenDto`
445
+ Request body for `POST api/Webhooks/listen`.
446
+
447
+ | Wire field | Type | Req? | Notes |
448
+ |---|---|---|---|
449
+ | `ConnectionId` | `string` | optional | client connection (SignalR) id to push captured payload back to. |
450
+ | `Listen` | `boolean` | required | start (`true`) or stop (`false`) listening. |
451
+ | `ListenType` | `string\|number (enum WebhookListenType: DataModel=1, Handshake=2)` | required | purpose of the listen session. |
452
+ | `WebhookId` | `string (uuid)` | optional | nullable; the webhook being configured. |
453
+ | `WebhookName` | `string` | optional | name shown during configuration. |
454
+ | `HasQuery` | `boolean` | required | capture query string. |
455
+ | `HasHeader` | `boolean` | required | capture request headers. |
456
+ | `HandshakeConfig` | `object (HandshakeConfigDto)` | optional | handshake response configuration (when `ListenType=Handshake`). |
457
+
458
+ ### `HandshakeConfigDto`
459
+ Handshake response configuration used in `WebhookListenDto`.
460
+
461
+ | Wire field | Type | Req? | Notes |
462
+ |---|---|---|---|
463
+ | `ConfigType` | `string\|number (enum WebhookResponseType: StaticJson=1, Javascript=2, JsonPath=3)` | required | how the handshake response body is produced. |
464
+ | `Status` | `number` | required | HTTP status code to return for the handshake. |
465
+ | `Config` | `string` | optional | the static JSON / JS / JSON path. |
466
+
467
+ ### `AcknowledgeUserNotificationDto`
468
+ Request body for `PATCH api/Notifications`.
469
+
470
+ | Wire field | Type | Req? | Notes |
471
+ |---|---|---|---|
472
+ | `id` | `string (uuid)` | optional | nullable; the notification to mark read. |
473
+ | `markAllUnread` | `boolean` | required | when `true` and `id` is null, mark all unread notifications as read. |
474
+
475
+ ### `ApiKeyDto`
476
+ Response from `GET api/ApiKey` (array) and `POST api/ApiKey` (single).
477
+
478
+ | Wire field | Type | Req? | Notes |
479
+ |---|---|---|---|
480
+ | `id` | `string (uuid)` | required | API key id (used to revoke via `DELETE api/ApiKey/{id}`). |
481
+ | `name` | `string` | optional | API key name — sent as the `key` header when authenticating. |
482
+ | `lastAccessed` | `string (date-time, ISO-8601)` | optional | nullable; last time the key was used. |
483
+ | `value` | `string` | optional | the plaintext secret — populated **only** on `POST api/ApiKey` (creation). Sent as the `value` header when authenticating. |
484
+
485
+ ### `ExportEntitiesDto`
486
+ Request body for `POST api/Transport/export-entities`. Each id list selects the entities of that type to export.
487
+
488
+ | Wire field | Type | Req? | Notes |
489
+ |---|---|---|---|
490
+ | `dataModelIds` | `array of string (uuid)` | optional | data types/models to export. |
491
+ | `flowIds` | `array of string (uuid)` | optional | flows to export. |
492
+ | `credentialIds` | `array of string (uuid)` | optional | credentials to export. |
493
+ | `webhookIds` | `array of string (uuid)` | optional | webhooks to export. |
494
+ | `documentIds` | `array of string (uuid)` | optional | document templates to export. |
495
+ | `formIds` | `array of string (uuid)` | optional | forms to export. |
496
+ | `dataStoreIds` | `array of string (uuid)` | optional | data stores to export. |
497
+ | `exportSensitiveData` | `boolean` | required | include sensitive data (e.g. credential secrets). |
498
+
499
+ ### `DataModelDto` (cross-domain — defined fully in the Data Types domain)
500
+ Returned by `GET api/Webhooks/datamodels/{webhookId}` and nested in `WebhookDto.DataModel`. Describes the shape of a webhook payload. Key fields (extends `BaseDataTypeDto`):
501
+
502
+ | Wire field | Type | Req? | Notes |
503
+ |---|---|---|---|
504
+ | `Id` | `string (uuid)` | required | |
505
+ | `Name` | `string` | optional | |
506
+ | `DisplayName` | `string` | optional | |
507
+ | `IsDataModel` | `boolean` | required | |
508
+ | `IsPrimaryType` | `boolean` | required | |
509
+ | `IsProcesio` | `boolean` | required | |
510
+ | `IsPublic` | `boolean` | required | |
511
+ | `CsharpCorrespondent` | `string\|number (enum PrimaryDataType)` | required | underlying primitive type. |
512
+ | `Type` | `string\|number (enum DataModelTypeParam, default Normal)` | required | |
513
+ | `Attributes` | `array of DataAttributeDto` | optional | the model's fields. |
514
+ | `ParentIds` | `array of string (uuid)` | optional | parent data type ids. |
515
+
516
+ `DataAttributeDto` (recursive — a field of a data model) carries: `Id` (`uuid?`), `DataTypeId` (`uuid`), `ParentDataTypeId` (`uuid`), `Name`, `DisplayName`, `DataTypeName`, `IsDataModel`, `IsPrimaryType`, `IsProcesio`, `IsPublic`, `CsharpCorrespondent` (enum `PrimaryDataType`), `Type` (enum `DataModelTypeParam`), `IsList` (`boolean`), `jsonProperty` (`string`, JSON-mapped from `JsonPropertyName`), `updatedOn` (`date-time`), and nested `Attributes` (`array of DataAttributeDto`). The `PrimaryDataType` and `DataModelTypeParam` enums and `OwnershipAuditDto` base are defined in the Data Types domain doc.
517
+
518
+ ### `WebhookPayloadModel` (internal payload envelope — not a request body)
519
+ The server constructs this from the inbound trigger request; not directly posted by clients. Fields: `Body` (JSON token — the parsed request body), `Header` (`string` — serialized request headers), `Param` (`string` — serialized query string, or the `payload` query value when supplied). Listed here because the Verifone GET callback and the launch flow build it explicitly.