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,731 @@
1
+ # Authentication, Users, Workspaces, Permissions & Preferences 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/AuthenticationProxy/AuthenticationController.cs`
6
+ > - `BE/Web-Api/WebApi/Application/Controllers/AuthenticationProxy/UsersController.cs`
7
+ > - `BE/Web-Api/WebApi/Application/Controllers/AuthenticationProxy/UserPermissionsController.cs`
8
+ > - `BE/Web-Api/WebApi/Application/Controllers/AuthenticationProxy/UserPreferencesController.cs`
9
+ > - `BE/Web-Api/WebApi/Application/Controllers/AuthenticationProxy/WorkspaceController.cs`
10
+ > - `BE/Web-Api/WebApi/Application/Controllers/AuthenticationProxy/WorkspaceMasterController.cs`
11
+ > - `BE/Web-Api/WebApi/Application/Controllers/AuthenticationProxy/ProcesioAdmin/UsersController.cs`
12
+ > - `BE/Web-Api/WebApi/Application/Controllers/AuthenticationProxy/ProcesioAdmin/WorkspaceController.cs`
13
+ > - `BE/Web-Api/WebApi/Application/Controllers/AuthenticationProxy/ProcesioAdmin/UserPropertyController.cs`
14
+ > - `BE/Web-Api/WebApi/Application/Controllers/UsersController.cs`
15
+
16
+ This domain covers everything related to identity and tenancy in PROCESIO: logging in (password, OAuth2 SSO via external identity providers, OTP/2FA), refreshing and revoking tokens, self-service account management (sign-up, profile, password reset, OTP setup), reading the catalog of permission entities/roles/user-types and assigning them, per-user UI preferences, workspace membership and invitations, master-workspace / sub-workspace hierarchy management, and platform-admin (`ProcesioAdmin`) surfaces for managing all workspaces, user properties, referral codes and OTP resets.
17
+
18
+ Most of these controllers are thin proxies in front of the internal authentication/identity service (hence the `AuthenticationProxy` folder). All routes are served under the Web-Api gateway base URL; versioning is via the optional `x-version` header (default `1.19`). Unless noted as **Anonymous**, every endpoint requires a Bearer JWT.
19
+
20
+ **Permission model recap:** `Permission = {AuthorizationEntity}:{AuthorizationActionType}`. `Permission: None` means an authenticated caller is required but no specific entity permission is checked. The controller-level `[AuthorizationEntity(...)]` supplies the entity; the method-level `[AuthorizationAction(...)]` supplies the action.
21
+
22
+ **Cookie vs body token handling (Authentication endpoints):** the login / refresh / logout endpoints support two modes. If the request uses cookies (PROCESIO UI), tokens are set/read via HTTP-only cookies and the JSON body contains only a status message. Otherwise (backward-compatible/API clients) the full token DTO is returned in the body. This is detailed per-endpoint below.
23
+
24
+ ---
25
+
26
+ ## Endpoints
27
+
28
+ ### AuthenticationController — `[Route("api/Authentication")]`
29
+
30
+ Controller entity: `AuthorizationEntityType.None`. Body content type is `application/json` by default, but the token-issuing actions override it to `application/x-www-form-urlencoded`.
31
+
32
+ #### `POST api/Authentication`
33
+
34
+ - **Operation:** `Authenticate` — authenticate a user with username + password (and optional OTP code), returning an access/refresh token.
35
+ - **Auth:** Anonymous — **Permission:** None
36
+ - **Request body** (`application/x-www-form-urlencoded`): `AuthenticateUserDto`
37
+ - `username` — `string`, required — the user's username/email.
38
+ - `password` — `string`, required — the user's password.
39
+ - `code` — `string`, optional — OTP/2FA code (required only when OTP is enabled for the account/workspace).
40
+ - **Responses:**
41
+ - `200 OK` → `AuthenticationTokenResponseDto` (body mode) **or** `{ "message": "Authentication successful" }` (cookie mode; tokens set as cookies).
42
+ - `400 Bad Request` → `{ "error": "...", "error_description": "..." }` (cookie mode, on auth error).
43
+ - **Notes:** Behaviour depends on whether the request carries auth cookies. In cookie mode tokens are written to HTTP-only cookies and only a status message is returned; in body mode the full token DTO is returned.
44
+
45
+ #### `GET api/Authentication`
46
+
47
+ - **Operation:** `AuthenticationForm` — return the hosted authentication form/configuration for a given redirect URI (used by the login UI).
48
+ - **Auth:** Anonymous — **Permission:** None
49
+ - **Hidden from Swagger:** yes
50
+ - **Query params:** `redirect_uri` — `string`, required — URI to redirect back to after authentication.
51
+ - **Responses:**
52
+ - `200 OK` → form/config payload (opaque object returned from the auth service).
53
+
54
+ #### `GET api/Authentication/oauth2/callback/{identityProvider}`
55
+
56
+ - **Operation:** `AuthenticateByBroker` — OAuth2 SSO callback endpoint; completes single sign-on via an external identity provider and issues PROCESIO tokens.
57
+ - **Auth:** Anonymous — **Permission:** None
58
+ - **Hidden from Swagger:** yes
59
+ - **Path params:** `{identityProvider}` — `string|number (enum IdentityProvider)`, required — the external IdP that performed the login. See `IdentityProvider` in Shared DTOs.
60
+ - **Special headers:** `referral` `[FromHeader]` — `string` — referral code carried through the SSO flow. `inviteToken` `[FromHeader]` — `string` — workspace invitation token carried through the SSO flow.
61
+ - **Responses:**
62
+ - `200 OK` → `AuthenticationTokenResponseDto` (body mode) **or** `{ "message": "Authentication successful" }` (cookie mode), with the same `400` error shape as `POST api/Authentication`.
63
+ - **Notes:** All inbound OAuth2 query-string parameters (e.g. `code`, `state`) are forwarded to the auth service as-is. This is the redirect target configured at the external IdP.
64
+
65
+ #### `GET api/Authentication/otp/callback`
66
+
67
+ - **Operation:** `AuthenticateOTPCallback` — complete authentication after the user registers/confirms an OTP (2FA) factor.
68
+ - **Auth:** Anonymous — **Permission:** None
69
+ - **Hidden from Swagger:** yes
70
+ - **Query params:** all query-string parameters are forwarded as an opaque payload to the auth service (the OTP enrollment callback parameters).
71
+ - **Responses:**
72
+ - `200 OK` → `AuthenticationTokenResponseDto` (body mode) **or** `{ "message": "Authentication successful" }` (cookie mode), same `400` error shape as `POST api/Authentication`.
73
+
74
+ #### `GET api/Authentication/authorize/{identityProvider}`
75
+
76
+ - **Operation:** `GetAuthorization` — build the external IdP authorization URL the client should redirect the user to in order to start SSO.
77
+ - **Auth:** Anonymous — **Permission:** None
78
+ - **Hidden from Swagger:** yes
79
+ - **Path params:** `{identityProvider}` — `string|number (enum IdentityProvider)`, required — the IdP to authorize against.
80
+ - **Query params:** `redirect_uri` — `string`, optional — URI the IdP should redirect back to after authorization.
81
+ - **Responses:**
82
+ - `200 OK` → authorization URL / config payload (opaque).
83
+
84
+ #### `POST api/Authentication/refreshToken`
85
+
86
+ - **Operation:** `RefreshToken` — exchange a refresh token for a new access/refresh token pair.
87
+ - **Auth:** Anonymous — **Permission:** None
88
+ - **Request body** (`application/x-www-form-urlencoded`): `RefreshTokenRequestDto`
89
+ - `client_id` — `string`, optional, default `procesio-ui` — realm client id.
90
+ - `refresh_token` — `string`, required (in body mode) — the refresh token to exchange.
91
+ - **Responses:**
92
+ - `200 OK` → `AuthenticationTokenResponseDto` (body mode) **or** `{ "message": "Token refreshed successfully" }` (cookie mode; new tokens set as cookies).
93
+ - `400 Bad Request` → `{ "error": "invalid_request", "error_description": "Refresh token is missing" }` when no refresh token is supplied in body or cookie.
94
+ - **Notes:** In cookie mode the refresh token is read from the `COOKIE_REFRESH_TOKEN` cookie (ignoring the body) and `client_id` is forced to `procesio-ui`. Old auth cookies are cleared before new ones are set.
95
+
96
+ #### `POST api/Authentication/logOut`
97
+
98
+ - **Operation:** `Logout` — end the current session associated with the supplied (or cookie) refresh token.
99
+ - **Auth:** Anonymous — **Permission:** None
100
+ - **Request body** (`application/x-www-form-urlencoded`): `RefreshTokenRequestDto` (see above).
101
+ - **Responses:**
102
+ - `204 No Content`
103
+ - **Notes:** In cookie mode the refresh token is taken from the `COOKIE_REFRESH_TOKEN` cookie. Auth cookies are deleted from the response.
104
+
105
+ #### `DELETE api/Authentication/logOut`
106
+
107
+ - **Operation:** `DeleteAllSessions` — terminate **all** active sessions for the user identified by the supplied access token.
108
+ - **Auth:** Anonymous — **Permission:** None
109
+ - **Request body** (`application/x-www-form-urlencoded`): single form field
110
+ - `token` — `string`, optional — the access token whose user's sessions should all be closed. If omitted, the access token is read from the `COOKIE_ACCESS_TOKEN` cookie.
111
+ - **Responses:**
112
+ - `204 No Content`
113
+ - **Notes:** Deletes auth cookies from the response. Same route (`logOut`) as the POST above, distinguished by HTTP verb (`DELETE`).
114
+
115
+ ---
116
+
117
+ ### UsersController (AuthenticationProxy) — `[Route("api/Users")]`
118
+
119
+ Controller entity: `AuthorizationEntityType.None`. Self-service user account management. Body content type `application/json`. Several endpoints add a randomized 100–300 ms delay to mitigate timing attacks (noted where present).
120
+
121
+ #### `GET api/Users/me`
122
+
123
+ - **Operation:** `GetCurrentUser` — return the currently authenticated user's profile/claims.
124
+ - **Auth:** Bearer JWT — **Permission:** None
125
+ - **Responses:**
126
+ - `200 OK` → current-user object (derived from the JWT claims; opaque shape).
127
+
128
+ #### `POST api/Users/otp/setup`
129
+
130
+ - **Operation:** `OtpSetup` — enable or disable OTP (2FA) for the current user.
131
+ - **Auth:** Bearer JWT — **Permission:** None
132
+ - **Special headers:** `enable` `[FromHeader]` — `boolean`, required — `true` to enable OTP, `false` to disable.
133
+ - **Responses:**
134
+ - `200 OK` → proxied result (typically OTP enrollment data such as a secret/QR payload).
135
+
136
+ #### `POST api/Users`
137
+
138
+ - **Operation:** `CreateUser` — register/sign up a new user account.
139
+ - **Auth:** Anonymous — **Permission:** None
140
+ - **Request body** (`application/json`): `UserDto`
141
+ - **Responses:**
142
+ - `200 OK` → proxied creation result.
143
+ - **Notes:** Adds a randomized 100–300 ms response delay (anti-timing-attack).
144
+
145
+ #### `PUT api/Users/details`
146
+
147
+ - **Operation:** `UpdateUserDetails` — update the current user's first/last name.
148
+ - **Auth:** Bearer JWT — **Permission:** None
149
+ - **Request body** (`application/json`): `UpdateUserDetailsDto`
150
+ - **Responses:**
151
+ - `200 OK` → empty.
152
+ - **Notes:** Adds a randomized 100–300 ms response delay.
153
+
154
+ #### `POST api/Users/withActivation`
155
+
156
+ - **Operation:** `CreateUserWithActivationResponse` — create a user and return the activation token in the response (legacy flow, originally for AppSumo accounts).
157
+ - **Auth:** Anonymous — **Permission:** None
158
+ - **Hidden from Swagger:** yes
159
+ - **Request body** (`application/json`): `UserDto`
160
+ - **Responses:**
161
+ - `200 OK` → activation token / proxied result.
162
+ - **Notes:** Adds a randomized 100–300 ms response delay.
163
+
164
+ #### `POST api/Users/resendToken`
165
+
166
+ - **Operation:** `RefreshCreateUserToken` — resend the account-activation token for a pending registration.
167
+ - **Auth:** Anonymous — **Permission:** None
168
+ - **Request body** (`application/json`): `UserDto`
169
+ - **Responses:**
170
+ - `200 OK` → proxied result.
171
+
172
+ #### `POST api/Users/password/change`
173
+
174
+ - **Operation:** `ChangePassword` — change the password for an authenticated user given the old + new password.
175
+ - **Auth:** Anonymous — **Permission:** None
176
+ - **Request body** (`application/json`): `UserPasswordDto`
177
+ - **Responses:**
178
+ - `200 OK` → proxied result.
179
+ - **Notes:** Although the route is `[AllowAnonymous]`, the DTO carries a client id + token (`IdentifyRequestDto`) identifying the user.
180
+
181
+ #### `POST api/Users/password/forgot`
182
+
183
+ - **Operation:** `ForgotPassword` — trigger the forgot-password email flow for an email address.
184
+ - **Auth:** Anonymous — **Permission:** None
185
+ - **Request body** (`application/json`): `SimpleEmailDto`
186
+ - **Responses:**
187
+ - `200 OK` → empty.
188
+ - **Notes:** Fire-and-forget — the proxy call is not awaited for its result. Adds a randomized 100–300 ms delay. Always returns `200` regardless of whether the email exists (anti-enumeration).
189
+
190
+ #### `POST api/Users/password/update`
191
+
192
+ - **Operation:** `UpdatePassword` — set a new password using a reset token (final step of the forgot-password flow).
193
+ - **Auth:** Anonymous — **Permission:** None
194
+ - **Request body** (`application/json`): `UpdatePasswordDto`
195
+ - **Responses:**
196
+ - `200 OK` → proxied result.
197
+
198
+ ---
199
+
200
+ ### UserPermissionsController — `[Route("api/UserPermissions")]`
201
+
202
+ Controller entity: `AuthorizationEntityType.Workspace`. Read the permission catalog (user types, roles, entities) and read/assign user permissions within a workspace. Body content type `application/json`.
203
+
204
+ #### `GET api/UserPermissions/userTypes`
205
+
206
+ - **Operation:** `GetUserTypes` — list the available user types.
207
+ - **Auth:** Bearer JWT — **Permission:** None
208
+ - **Responses:**
209
+ - `200 OK` → list of user types (opaque catalog objects).
210
+
211
+ #### `GET api/UserPermissions/roles`
212
+
213
+ - **Operation:** `GetUserRoles` — list the available roles.
214
+ - **Auth:** Bearer JWT — **Permission:** None
215
+ - **Responses:**
216
+ - `200 OK` → list of roles.
217
+
218
+ #### `GET api/UserPermissions/entities`
219
+
220
+ - **Operation:** `GetEntities` — list the authorization entities (the resources permissions can be granted on).
221
+ - **Auth:** Bearer JWT — **Permission:** None
222
+ - **Responses:**
223
+ - `200 OK` → list of entities.
224
+
225
+ #### `PUT api/UserPermissions/{userId}`
226
+
227
+ - **Operation:** `UpdateUserPermissions` — set the user type + role assignments for a target user.
228
+ - **Auth:** Bearer JWT — **Permission:** `Workspace:Admin` (Swagger: "Permission required: Workspace.Admin")
229
+ - **Path params:** `{userId}` — `string (uuid)`, required — the user to update.
230
+ - **Query params:** `targetWorkspace` — `string (uuid)`, optional — operate on a specific workspace instead of the caller's current one.
231
+ - **Request body** (`application/json`): `UserPermissionsDto`
232
+ - **Responses:**
233
+ - `200 OK` → empty.
234
+
235
+ #### `GET api/UserPermissions/{userId}`
236
+
237
+ - **Operation:** `GetTargetUserPermissions` — get the permissions of a specific (target) user.
238
+ - **Auth:** Bearer JWT — **Permission:** `Workspace:Admin` (Swagger: "Permission required: Workspace.Admin")
239
+ - **Path params:** `{userId}` — `string (uuid)`, required — the user whose permissions to read.
240
+ - **Responses:**
241
+ - `200 OK` → the user's permissions (`BaseUserPermissionsDto`-shaped, plus catalog metadata from the auth service).
242
+
243
+ #### `GET api/UserPermissions`
244
+
245
+ - **Operation:** `GetUserPermissions` — get the current authenticated user's own permissions.
246
+ - **Auth:** Bearer JWT — **Permission:** None
247
+ - **Responses:**
248
+ - `200 OK` → the caller's permissions.
249
+
250
+ #### `GET api/UserPermissions/workspace/{workspaceId}/default`
251
+
252
+ - **Operation:** `GetWorkspaceDefaultConfig` — get the default permission configuration for a workspace.
253
+ - **Auth:** Bearer JWT — **Permission:** `Workspace:Admin` (Swagger: "Permission required: Workspace.Admin")
254
+ - **Path params:** `{workspaceId}` — `string (uuid)`, required — the workspace whose default config to read.
255
+ - **Responses:**
256
+ - `200 OK` → default workspace permission config (`UPDefaultWorkspaceDto`-shaped).
257
+
258
+ ---
259
+
260
+ ### UserPreferencesController — `[Route("api/UserPreferences")]`
261
+
262
+ Controller entity: `AuthorizationEntityType.None`. Stores an arbitrary JSON blob of per-user UI preferences. Body content type `application/json`.
263
+
264
+ #### `GET api/UserPreferences`
265
+
266
+ - **Operation:** `GetPreferences` — get the current user's stored preferences.
267
+ - **Auth:** Bearer JWT — **Permission:** None
268
+ - **Responses:**
269
+ - `200 OK` → arbitrary JSON (the previously stored preferences blob).
270
+
271
+ #### `POST api/UserPreferences`
272
+
273
+ - **Operation:** `AddEditPreferences` — create or replace the current user's preferences.
274
+ - **Auth:** Bearer JWT — **Permission:** None
275
+ - **Request body** (`application/json`): arbitrary JSON (`JToken`) — any valid JSON value/object; no fixed schema.
276
+ - **Responses:**
277
+ - `200 OK` → `"Preferences saved."` (string).
278
+
279
+ #### `DELETE api/UserPreferences`
280
+
281
+ - **Operation:** `DeletePreferences` — delete the current user's preferences.
282
+ - **Auth:** Bearer JWT — **Permission:** None
283
+ - **Responses:**
284
+ - `200 OK` → `"Preferences removed."` (string).
285
+
286
+ ---
287
+
288
+ ### WorkspaceController (AuthenticationProxy) — `[Route("api/Workspace")]`
289
+
290
+ Controller entity: `AuthorizationEntityType.Workspace`. Workspace membership: list the caller's workspaces, list/invite/revoke members. Body content type `application/json`.
291
+
292
+ > Note: this is the workspace-member controller. Sub-workspace hierarchy lives in `WorkspaceMasterController` (also `api/Workspace`, distinguished by route shape) and platform-admin workspace ops live in `ProcesioAdmin/WorkspaceController` (`api/Workspace/all`, `api/Workspace/master`, `api/Workspace/any/...`).
293
+
294
+ #### `GET api/Workspaces`
295
+
296
+ - **Operation:** `GetUserWorkspaces` — list the workspaces the current user belongs to.
297
+ - **Auth:** Bearer JWT — **Permission:** None
298
+ - **Responses:**
299
+ - `200 OK` → list of the caller's workspaces.
300
+ - **Notes:** Note the route override: this action is served at `api/Workspaces` (plural, via `[Route("~/api/Workspaces")]`), **not** `api/Workspace`.
301
+
302
+ #### `GET api/Workspace/users`
303
+
304
+ - **Operation:** `GetWorkspaceUsers` — list (paginated) the users in a workspace.
305
+ - **Auth:** Bearer JWT — **Permission:** `Workspace:Create` (Swagger: "Permission required: Workspace.Write")
306
+ - **Query params:**
307
+ - `pageNumber` — `number`, required — page index.
308
+ - `pageItemCount` — `number`, required — page size.
309
+ - `targetWorkspace` — `string (uuid)`, optional — list users of a specific workspace instead of the caller's current one.
310
+ - **Responses:**
311
+ - `200 OK` → paginated list of workspace users.
312
+
313
+ #### `POST api/Workspace/invite`
314
+
315
+ - **Operation:** `InviteUser` — invite a user (by email) to the workspace.
316
+ - **Auth:** Bearer JWT — **Permission:** `Workspace:Create` (Swagger: "Permission required: Workspace.Write")
317
+ - **Query params:** `targetWorkspace` — `string (uuid)`, optional — invite into a specific workspace.
318
+ - **Request body** (`application/json`): `SimpleEmailDto`
319
+ - **Responses:**
320
+ - `200 OK` → `"The invitation was sent."` (string).
321
+ - **Notes:** Fire-and-forget (invite send is not awaited). Adds a randomized 100–300 ms delay (anti-timing/enumeration).
322
+
323
+ #### `DELETE api/Workspace/invite/{id}`
324
+
325
+ - **Operation:** `RevokeInvitation` — revoke a pending invitation / remove a workspace membership.
326
+ - **Auth:** Bearer JWT — **Permission:** `Workspace:Update` (Swagger: "Permission required: Workspace.Update")
327
+ - **Path params:** `{id}` — `string (uuid)`, required — the invitation/membership id to revoke.
328
+ - **Query params:** `targetWorkspace` — `string (uuid)`, optional — operate on a specific workspace.
329
+ - **Responses:**
330
+ - `200 OK` → proxied result.
331
+
332
+ ---
333
+
334
+ ### WorkspaceMasterController — `[Route("api/Workspace")]`
335
+
336
+ Controller entity: `AuthorizationEntityType.MasterWorkspace`. Manage the master-workspace → sub-workspace hierarchy, ownership transfer, OTP enforcement, and default workspace options. Body content type `application/json`.
337
+
338
+ #### `GET api/Workspace/{parentId}/subworkspaces`
339
+
340
+ - **Operation:** `GetSubWorkspaces` — list (paginated) the sub-workspaces under a master workspace.
341
+ - **Auth:** Bearer JWT — **Permission:** `MasterWorkspace:Read` (Swagger: "Permission required: MasterWorkspace.Read")
342
+ - **Path params:** `{parentId}` — `string (uuid)`, required — the master (parent) workspace id.
343
+ - **Query params:** `pageNumber` — `number`, required; `pageItemCount` — `number`, required.
344
+ - **Responses:**
345
+ - `200 OK` → paginated list of sub-workspaces.
346
+
347
+ #### `GET api/Workspace/{parentId}/subworkspaces/{id}`
348
+
349
+ - **Operation:** `GetSubWorkspace` — get a single sub-workspace.
350
+ - **Auth:** Bearer JWT — **Permission:** `MasterWorkspace:Read` (Swagger: "Permission required: MasterWorkspace.Read")
351
+ - **Path params:** `{parentId}` — `string (uuid)`, required — master workspace id. `{id}` — `string (uuid)`, required — sub-workspace id.
352
+ - **Responses:**
353
+ - `200 OK` → the sub-workspace object.
354
+
355
+ #### `POST api/Workspace`
356
+
357
+ - **Operation:** `CreateSubWorkspace` — create a new sub-workspace under a master workspace.
358
+ - **Auth:** Bearer JWT — **Permission:** `MasterWorkspace:Create` (Swagger: "Permission required: MasterWorkspace.Write")
359
+ - **Request body** (`application/json`): `CreateWorkspaceDto`
360
+ - **Responses:**
361
+ - `200 OK` → created workspace info.
362
+
363
+ #### `PUT api/Workspace`
364
+
365
+ - **Operation:** `UpdateSubWorkspace` — update a sub-workspace (name, limits, license type, default config, settings).
366
+ - **Auth:** Bearer JWT — **Permission:** `MasterWorkspace:Update` (Swagger: "Permission required: MasterWorkspace.Update")
367
+ - **Request body** (`application/json`): `UpdateWorkspaceDto`
368
+ - **Responses:**
369
+ - `200 OK` → updated workspace info.
370
+
371
+ #### `DELETE api/Workspace/{workspaceToDelete}`
372
+
373
+ - **Operation:** `DeleteSubWorkspace` — delete a sub-workspace.
374
+ - **Auth:** Bearer JWT — **Permission:** `MasterWorkspace:Delete` (Swagger: "Permission required: MasterWorkspace.Delete")
375
+ - **Path params:** `{workspaceToDelete}` — `string (uuid)`, required — sub-workspace id to delete.
376
+ - **Responses:**
377
+ - `200 OK` → empty.
378
+
379
+ #### `POST api/Workspace/transfer-ownership/{coOwnerId}`
380
+
381
+ - **Operation:** `TransferOwnership` — transfer master-workspace ownership to a co-owner.
382
+ - **Auth:** Bearer JWT — **Permission:** `MasterWorkspace:Update` (Swagger: "Permission required: MasterWorkspace.Update")
383
+ - **Path params:** `{coOwnerId}` — `string (uuid)`, required — the user id of the new owner (an existing co-owner).
384
+ - **Responses:**
385
+ - `200 OK` → empty.
386
+
387
+ #### `GET api/Workspace/{parentId}/otp`
388
+
389
+ - **Operation:** `GetMasterWorkspaceOtpField` — check whether OTP (2FA) is enforced on a master workspace.
390
+ - **Auth:** Bearer JWT — **Permission:** `MasterWorkspace:Read` (Swagger: "Permission required: MasterWorkspace.Read")
391
+ - **Path params:** `{parentId}` — `string (uuid)`, required — master workspace id.
392
+ - **Responses:**
393
+ - `200 OK` → `{ "OtpEnabled": boolean }`.
394
+
395
+ #### `PUT api/Workspace/{parentId}/otp`
396
+
397
+ - **Operation:** `UpdateMasterWorkspaceOtpField` — enable/disable OTP enforcement on a master workspace.
398
+ - **Auth:** Bearer JWT — **Permission:** `MasterWorkspace:Update` (Swagger: "Permission required: MasterWorkspace.Update")
399
+ - **Path params:** `{parentId}` — `string (uuid)`, required — master workspace id.
400
+ - **Query params:** `otpEnabled` — `boolean`, required — `true` to enforce OTP, `false` to disable.
401
+ - **Responses:**
402
+ - `200 OK` → `"Enabling otp in progress."` (string).
403
+ - **Notes:** Operation is asynchronous (the response indicates progress, not completion).
404
+
405
+ #### `GET api/Workspace/settings/default`
406
+
407
+ - **Operation:** `GetDefaultWorkspaceOptions` — get the catalog of default workspace option settings.
408
+ - **Auth:** Bearer JWT — **Permission:** `MasterWorkspace:Read` (Swagger: "Permission required: MasterWorkspace.Read")
409
+ - **Responses:**
410
+ - `200 OK` → list of default workspace option settings.
411
+
412
+ ---
413
+
414
+ ### UsersController (ProcesioAdmin) — `[Route("api/Users")]`
415
+
416
+ Controller entity: `AuthorizationEntityType.ProcesioAdmin`. Platform-admin user operations. Entire controller is `[ApiExplorerSettings(IgnoreApi = true)]` (hidden from Swagger). Body content type `application/json`.
417
+
418
+ > Disambiguation: same `[Route("api/Users")]` as the self-service `UsersController`, but these sub-routes (`referral-code`, `otp`) and the `ProcesioAdmin` entity distinguish it. Full paths are `api/Users/referral-code` and `api/Users/otp`.
419
+
420
+ #### `POST api/Users/referral-code`
421
+
422
+ - **Operation:** `GenerateReferralCode` — create/assign a referral code with an expiration date for a user.
423
+ - **Auth:** Bearer JWT — **Permission:** `ProcesioAdmin:Create`
424
+ - **Hidden from Swagger:** yes
425
+ - **Query params:**
426
+ - `referralCode` — `string`, required — the referral code value.
427
+ - `expirationDate` — `string (date-time, ISO-8601)`, required — when the code expires.
428
+ - **Special headers:** `userEmail` `[FromHeader]` — `string`, required — the user the referral code is for.
429
+ - **Responses:**
430
+ - `200 OK` → proxied result.
431
+
432
+ #### `DELETE api/Users/otp`
433
+
434
+ - **Operation:** `OtpDelete` — remove/reset OTP (2FA) for a user (admin recovery).
435
+ - **Auth:** Bearer JWT — **Permission:** `ProcesioAdmin:Delete`
436
+ - **Hidden from Swagger:** yes
437
+ - **Special headers:** `userId` `[FromHeader]` — `string (uuid)`, required — the user whose OTP to remove.
438
+ - **Responses:**
439
+ - `200 OK` → proxied result.
440
+
441
+ ---
442
+
443
+ ### WorkspaceController (ProcesioAdmin) — `[Route("api/Workspace")]`
444
+
445
+ Controller entity: `AuthorizationEntityType.ProcesioAdmin`. Platform-admin workspace operations. Entire controller is `[ApiExplorerSettings(IgnoreApi = true)]` (hidden from Swagger). Body content type `application/json`.
446
+
447
+ > Disambiguation: shares `[Route("api/Workspace")]` with the member and master workspace controllers; distinguished by the `all` / `master` / `any/{id}` sub-routes and the `ProcesioAdmin` entity.
448
+
449
+ #### `GET api/Workspace/all`
450
+
451
+ - **Operation:** `GetAllWorkspaces` — list every workspace on the platform.
452
+ - **Auth:** Bearer JWT — **Permission:** `ProcesioAdmin:Admin`
453
+ - **Hidden from Swagger:** yes
454
+ - **Responses:**
455
+ - `200 OK` → list of all workspaces.
456
+
457
+ #### `POST api/Workspace/master`
458
+
459
+ - **Operation:** `CreateMasterWorkspace` — create a new master workspace owned by a given user.
460
+ - **Auth:** Bearer JWT — **Permission:** `ProcesioAdmin:Create`
461
+ - **Hidden from Swagger:** yes
462
+ - **Query params:** `newMasterWorkspace` — `string`, required — the new master workspace name.
463
+ - **Special headers:** `userEmail` `[FromHeader]` — `string`, required — the owner's email.
464
+ - **Responses:**
465
+ - `200 OK` → created master workspace info.
466
+
467
+ #### `DELETE api/Workspace/any/{workspaceToDelete}`
468
+
469
+ - **Operation:** `DeleteWorkspace` — delete any workspace, including master workspaces (admin-only capability).
470
+ - **Auth:** Bearer JWT — **Permission:** `ProcesioAdmin:Delete`
471
+ - **Hidden from Swagger:** yes
472
+ - **Path params:** `{workspaceToDelete}` — `string (uuid)`, required — workspace id to delete.
473
+ - **Responses:**
474
+ - `200 OK` → empty.
475
+
476
+ ---
477
+
478
+ ### UserPropertyController (ProcesioAdmin) — `[Route("api/UserProperty")]`
479
+
480
+ Controller entity: `AuthorizationEntityType.ProcesioAdmin`. Platform-admin CRUD over user properties (e.g. referral metadata). Entire controller is `[ApiExplorerSettings(IgnoreApi = true)]` (hidden from Swagger). Body content type `application/json`.
481
+
482
+ #### `GET api/UserProperty/all`
483
+
484
+ - **Operation:** `GetAllUserProperties` — list all user properties.
485
+ - **Auth:** Bearer JWT — **Permission:** `ProcesioAdmin:Read`
486
+ - **Hidden from Swagger:** yes
487
+ - **Responses:**
488
+ - `200 OK` → array of `UserPropertyDto`.
489
+
490
+ #### `GET api/UserProperty/{id}`
491
+
492
+ - **Operation:** `GetUserProperty` — get a single user property by id.
493
+ - **Auth:** Bearer JWT — **Permission:** `ProcesioAdmin:Read`
494
+ - **Hidden from Swagger:** yes
495
+ - **Path params:** `{id}` — `string (uuid)`, required — user property id.
496
+ - **Responses:**
497
+ - `200 OK` → `UserPropertyDto`.
498
+
499
+ #### `GET api/UserProperty/user/{userId}`
500
+
501
+ - **Operation:** `GetUserProperties` — list all properties belonging to a given user.
502
+ - **Auth:** Bearer JWT — **Permission:** `ProcesioAdmin:Read`
503
+ - **Hidden from Swagger:** yes
504
+ - **Path params:** `{userId}` — `string (uuid)`, required — the user id.
505
+ - **Responses:**
506
+ - `200 OK` → array of `UserPropertyDto`.
507
+
508
+ #### `POST api/UserProperty`
509
+
510
+ - **Operation:** `CreateUserProperty` — create a user property.
511
+ - **Auth:** Bearer JWT — **Permission:** `ProcesioAdmin:Create`
512
+ - **Hidden from Swagger:** yes
513
+ - **Request body** (`application/json`): `UserPropertyDto`
514
+ - **Responses:**
515
+ - `200 OK` → empty.
516
+
517
+ #### `PUT api/UserProperty`
518
+
519
+ - **Operation:** `UpdateUserProperty` — update a user property.
520
+ - **Auth:** Bearer JWT — **Permission:** `ProcesioAdmin:Update`
521
+ - **Hidden from Swagger:** yes
522
+ - **Request body** (`application/json`): `UserPropertyDto`
523
+ - **Responses:**
524
+ - `200 OK` → empty.
525
+
526
+ #### `DELETE api/UserProperty/{id}`
527
+
528
+ - **Operation:** `RemoveUserProperty` — delete a user property by id.
529
+ - **Auth:** Bearer JWT — **Permission:** `ProcesioAdmin:Delete`
530
+ - **Hidden from Swagger:** yes
531
+ - **Path params:** `{id}` — `string (uuid)`, required — user property id.
532
+ - **Responses:**
533
+ - `200 OK` → empty.
534
+
535
+ ---
536
+
537
+ ### UsersController (root) — `[Route("api/Users")]`
538
+
539
+ Located directly under `Controllers/` (file `Application/Controllers/UsersController.cs`). Controller entity: `AuthorizationEntityType.None`. Single self-service action that triggers the "refer a friend" process. Body content type `application/json`.
540
+
541
+ > Disambiguation: this is a third class named `UsersController`. It shares `[Route("api/Users")]` but exposes only the `refer-friend` sub-route, so the full path `api/Users/refer-friend` is unique.
542
+
543
+ #### `POST api/Users/refer-friend`
544
+
545
+ - **Operation:** `RunReferFriend` — trigger the referral ("refer a friend") flow/process with a caller-supplied payload.
546
+ - **Auth:** Bearer JWT — **Permission:** None
547
+ - **Request body** (`application/json`): `RunFlowPayload`
548
+ - `Payload` — `object` (arbitrary), optional — the flow input payload forwarded to the referral process.
549
+ - `ConnectionId` — `string`, optional — SignalR/connection id (used for async progress; not used by this action).
550
+ - **Responses:**
551
+ - `200 OK` → empty (on success).
552
+ - `400 Bad Request` → composed flow-error object (when the referral process returns errors), or `"invalid instance"` (string) when the process result is not a `FlowResponseDto`.
553
+ - **Notes:** Only the `Payload` property is forwarded to the referral process trigger.
554
+
555
+ ---
556
+
557
+ ## Shared DTOs
558
+
559
+ ### `AuthenticateUserDto`
560
+ Form-encoded login credentials. (`[ModelBinder(Name=...)]` wire names.)
561
+
562
+ | Wire field | Type | Required | Description |
563
+ |---|---|---|---|
564
+ | `username` | `string` | required | Username / email. |
565
+ | `password` | `string` | required | Password. |
566
+ | `code` | `string` | optional | OTP/2FA code (when OTP is enabled). |
567
+
568
+ ### `RefreshTokenRequestDto`
569
+ Form-encoded refresh/logout request. (`[ModelBinder(Name=...)]` wire names.)
570
+
571
+ | Wire field | Type | Required | Description |
572
+ |---|---|---|---|
573
+ | `client_id` | `string` | optional (default `procesio-ui`) | Realm client id. |
574
+ | `refresh_token` | `string` | required | Refresh token to exchange/revoke. |
575
+
576
+ ### `AuthenticationTokenResponseDto`
577
+ Token response (body mode). (`[JsonProperty]` wire names.)
578
+
579
+ | Wire field | Type | Required | Description |
580
+ |---|---|---|---|
581
+ | `access_token` | `string` | required | JWT access token. |
582
+ | `expires_in` | `number` | required | Access token lifetime (seconds). |
583
+ | `refresh_expires_in` | `number` | required | Refresh token lifetime (seconds). |
584
+ | `refresh_token` | `string` | required | Refresh token. |
585
+ | `token_type` | `string` | required | Token type (e.g. `Bearer`). |
586
+ | `session_state` | `string` | optional | IdP session state. |
587
+ | `scope` | `string` | optional | Granted scopes. |
588
+ | `error` | `string` | optional | Error code (present on failure). |
589
+ | `error_description` | `string` | optional | Human-readable error detail. |
590
+
591
+ ### `UserDto`
592
+ User registration / account payload. (`[JsonProperty]` wire names.)
593
+
594
+ | Wire field | Type | Required | Description |
595
+ |---|---|---|---|
596
+ | `firstName` | `string` | optional | First name. |
597
+ | `lastName` | `string` | optional | Last name. |
598
+ | `email` | `string` | optional | Email address. |
599
+ | `userName` | `string` | optional | Username. |
600
+ | `inviteToken` | `string` | optional | Workspace invitation token (sign-up via invite). |
601
+ | `referral` | `string` | optional | Referral code. |
602
+ | `extraData` | `object (UserExtraDataDto)` | optional | Extra account data. |
603
+
604
+ ### `UserExtraDataDto`
605
+ | Wire field | Type | Required | Description |
606
+ |---|---|---|---|
607
+ | `hours` | `number` | optional | Allotted hours (nullable `int?`). |
608
+
609
+ ### `UpdateUserDetailsDto`
610
+ | Wire field | Type | Required | Description |
611
+ |---|---|---|---|
612
+ | `firstName` | `string` | optional | First name. |
613
+ | `lastName` | `string` | optional | Last name. |
614
+
615
+ ### `IdentifyRequestDto` (base of `UserPasswordDto`)
616
+ | Wire field | Type | Required | Description |
617
+ |---|---|---|---|
618
+ | `clientId` | `string` | optional | Realm client id. |
619
+ | `token` | `string` | optional | Authentication token identifying the user. |
620
+
621
+ ### `UserPasswordDto` (extends `IdentifyRequestDto`)
622
+ Inherits `clientId`, `token` plus:
623
+
624
+ | Wire field | Type | Required | Description |
625
+ |---|---|---|---|
626
+ | `oldPassword` | `string` | optional | Current password. |
627
+ | `newPassword` | `string` | optional | New password. |
628
+
629
+ ### `UpdatePasswordDto`
630
+ | Wire field | Type | Required | Description |
631
+ |---|---|---|---|
632
+ | `token` | `string` | optional | Password-reset token. |
633
+ | `password` | `string` | optional | New password. |
634
+
635
+ ### `SimpleEmailDto`
636
+ | Wire field | Type | Required | Description |
637
+ |---|---|---|---|
638
+ | `email` | `string` | optional | Email address. |
639
+
640
+ ### `BaseUserPermissionsDto`
641
+ No `[JsonProperty]` attributes → Newtonsoft default (PascalCase wire names as written).
642
+
643
+ | Wire field | Type | Required | Description |
644
+ |---|---|---|---|
645
+ | `UserTypeId` | `string (uuid)` | required | User type id. |
646
+ | `Roles` | `object` — map of `string (uuid)` → `array of string (uuid)` | optional | Per-entity role assignments: keyed by entity/workspace id, value is the list of role ids. |
647
+
648
+ ### `UserPermissionsDto`
649
+ Empty subclass of `BaseUserPermissionsDto` — same fields (`UserTypeId`, `Roles`).
650
+
651
+ ### `UPDefaultWorkspaceDto`
652
+ Empty subclass of `BaseUserPermissionsDto` — same fields (`UserTypeId`, `Roles`).
653
+
654
+ ### `SimpleWorkspaceDto` (base of `UpdateWorkspaceDto`)
655
+ | Wire field | Type | Required | Description |
656
+ |---|---|---|---|
657
+ | `workspace` | `string` | optional | Workspace name. |
658
+ | `id` | `string (uuid)` | optional | Workspace id (nullable `Guid?`). |
659
+ | `parentId` | `string (uuid)` | optional | Parent (master) workspace id (nullable `Guid?`). |
660
+
661
+ ### `CreateWorkspaceDto`
662
+ | Wire field | Type | Required | Description |
663
+ |---|---|---|---|
664
+ | `workspaceName` | `string` | optional | New workspace name. |
665
+ | `userEmail` | `string` | optional | Owner email. |
666
+ | `parentId` | `string (uuid)` | optional | Parent (master) workspace id (nullable `Guid?`). |
667
+ | `canExceedPaidTime` | `boolean` | required | Whether the workspace may exceed paid execution time. |
668
+ | `defaultWorkspaceConfiguration` | `object (UPDefaultWorkspaceDto)` | optional | Default permission configuration. |
669
+ | `settings` | `array of WorkspaceOptionsSettingDto` | optional | Workspace option settings. |
670
+
671
+ ### `UpdateWorkspaceDto` (extends `SimpleWorkspaceDto`)
672
+ Inherits `workspace`, `id`, `parentId` plus:
673
+
674
+ | Wire field | Type | Required | Description |
675
+ |---|---|---|---|
676
+ | `canExceedPaidTime` | `boolean` | required | Whether the workspace may exceed paid execution time. |
677
+ | `maxThreads` | `number` | required | Max concurrent execution threads. |
678
+ | `licenseType` | `string|number (enum LicenseType)` | required | License type. See `LicenseType`. |
679
+ | `defaultWorkspaceConfiguration` | `object (UPDefaultWorkspaceDto)` | optional | Default permission configuration. |
680
+ | `settings` | `array of WorkspaceOptionsSettingDto` | optional | Workspace option settings. |
681
+
682
+ ### `WorkspaceOptionsSettingDto`
683
+ No `[JsonProperty]` attributes → Newtonsoft default (PascalCase wire names).
684
+
685
+ | Wire field | Type | Required | Description |
686
+ |---|---|---|---|
687
+ | `WorkspaceOptionId` | `string (uuid)` | required | The workspace option being set. |
688
+ | `Value` | `JToken` (arbitrary JSON) | required | The option value (any JSON; `required` modifier in source). |
689
+
690
+ ### `UserPropertyDto`
691
+ No `[JsonProperty]` attributes → Newtonsoft default (PascalCase wire names).
692
+
693
+ | Wire field | Type | Required | Description |
694
+ |---|---|---|---|
695
+ | `Gid` | `string (uuid)` | required | User property id. |
696
+ | `UserId` | `string (uuid)` | required | Owning user id. |
697
+ | `Type` | `string|number (enum UserPropertyType)` | required | Property type. See `UserPropertyType`. |
698
+ | `Value` | `string` | optional | Property value. |
699
+ | `Data` | `string` | optional | Extra info (e.g. expiration date). |
700
+
701
+ ### `RunFlowPayload`
702
+ No `[JsonProperty]` attributes → Newtonsoft default (PascalCase wire names).
703
+
704
+ | Wire field | Type | Required | Description |
705
+ |---|---|---|---|
706
+ | `Payload` | `object` (arbitrary) | optional | Flow input payload. |
707
+ | `ConnectionId` | `string` | optional | SignalR/connection id. |
708
+
709
+ ### Enums
710
+
711
+ #### `IdentityProvider` (external SSO providers)
712
+ | Name | Value |
713
+ |---|---|
714
+ | `none` | 0 |
715
+ | `azureAD` | 1 |
716
+ | `google` | 2 |
717
+ | `github` | 3 |
718
+
719
+ #### `LicenseType`
720
+ | Name | Value |
721
+ |---|---|
722
+ | `None` | 0 |
723
+ | `Time` | 1 |
724
+ | `Thread` | 2 |
725
+
726
+ #### `UserPropertyType`
727
+ | Name | Value |
728
+ |---|---|
729
+ | `NONE` | 0 |
730
+ | `REFERRAL` | 1 |
731
+ | `REFERRAL_USED` | 2 |