@openork/cli 0.1.1 → 0.2.1

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 (178) hide show
  1. package/commands/doctor.d.ts +12 -0
  2. package/commands/doctor.d.ts.map +1 -0
  3. package/commands/doctor.js +110 -0
  4. package/commands/doctor.js.map +1 -0
  5. package/{dist/commands → commands}/gateway/start.d.ts.map +1 -1
  6. package/{dist/commands → commands}/gateway/start.js +14 -0
  7. package/commands/gateway/start.js.map +1 -0
  8. package/{dist/commands → commands}/setup.d.ts.map +1 -1
  9. package/{dist/commands → commands}/setup.js +19 -0
  10. package/commands/setup.js.map +1 -0
  11. package/externals.json +13 -0
  12. package/lib/doctor.d.ts +28 -0
  13. package/lib/doctor.d.ts.map +1 -0
  14. package/lib/doctor.js +227 -0
  15. package/lib/doctor.js.map +1 -0
  16. package/{dist/openapi.yml → openapi.yml} +770 -0
  17. package/package.json +14 -32
  18. package/prisma/migrations/20260401135027_add_auth_rbac_multitenancy/migration.sql +211 -0
  19. package/{dist/prisma → prisma}/schema.prisma +101 -0
  20. package/server.js +81901 -0
  21. package/server.js.map +1 -0
  22. package/{dist/web/assets/activity-feed-D_eonDKG.js → web/assets/activity-feed-CNgi7Qb_.js} +1 -1
  23. package/web/assets/agent-edit-CgbnHiT5.js +98 -0
  24. package/web/assets/agent-sessions-Bpay1_ZH.js +1 -0
  25. package/web/assets/agent-use-BaBxQ2fx.js +1 -0
  26. package/web/assets/agents-Dwbd6TQx.js +1 -0
  27. package/web/assets/api-DNWoqIPN.js +1 -0
  28. package/web/assets/arrow-down-upU5tcpi.js +1 -0
  29. package/web/assets/arrow-left-BiNeYcK0.js +1 -0
  30. package/web/assets/auth-client-ys1jC854.js +1 -0
  31. package/web/assets/chat-BP5H9CWl.js +4 -0
  32. package/{dist/web/assets/chat-input-BepRPV_L.js → web/assets/chat-input-CKAtAtgG.js} +2 -2
  33. package/{dist/web/assets/chat-message-CbcDeDcb.js → web/assets/chat-message-CW-HnO3f.js} +3 -3
  34. package/web/assets/chat-new-BQp9Bn7Q.js +1 -0
  35. package/web/assets/chat-sessions-D3bS5vba.js +1 -0
  36. package/web/assets/chats-DJolHH4e.js +1 -0
  37. package/{dist/web/assets/circle-alert-W8QX9LOG.js → web/assets/circle-alert-D040vPU_.js} +1 -1
  38. package/web/assets/circle-check-CW3adL8A.js +1 -0
  39. package/{dist/web/assets/circle-x-D_8Tcgt1.js → web/assets/circle-x-34c-1fVL.js} +1 -1
  40. package/web/assets/code-BFUT4gGT.js +1 -0
  41. package/{dist/web/assets/code-editor-x9L6nkh4.js → web/assets/code-editor-I6vK5q_W.js} +1 -1
  42. package/web/assets/commands-DBI4Bb2N.js +8 -0
  43. package/{dist/web/assets/copy-C87mjn_Y.js → web/assets/copy-DI5qjA1p.js} +1 -1
  44. package/web/assets/credentials-D8VN8A5M.js +1 -0
  45. package/{dist/web/assets/crown-BJEsQkh4.js → web/assets/crown-DWB5bSnq.js} +1 -1
  46. package/web/assets/dashboard-Cc6KWs62.js +1 -0
  47. package/{dist/web/assets/database-BohjTljV.js → web/assets/database-5jczNGML.js} +1 -1
  48. package/web/assets/debug-DewdHeoW.js +1 -0
  49. package/{dist/web/assets/download-B2UOiYAS.js → web/assets/download-CwO6xusv.js} +1 -1
  50. package/{dist/web/assets/eye-DN-Km5vf.js → web/assets/eye-BQGasWwb.js} +1 -1
  51. package/{dist/web/assets/file-plus-B8qWemgt.js → web/assets/file-plus-kHgvf9P8.js} +1 -1
  52. package/web/assets/file-tree-CTe61XCg.js +1 -0
  53. package/{dist/web/assets/folder-plus-DsmP6Mur.js → web/assets/folder-plus-mZAz-QpJ.js} +1 -1
  54. package/{dist/web/assets/globe-fwFSeXZn.js → web/assets/globe-C0WHVFW_.js} +1 -1
  55. package/{dist/web/assets/grip-vertical-Djo-yR-o.js → web/assets/grip-vertical-CdhrWSnV.js} +1 -1
  56. package/{dist/web/assets/history-CyBBboEp.js → web/assets/history-w7qYglj5.js} +1 -1
  57. package/web/assets/index-9X_UIor3.css +2 -0
  58. package/web/assets/index-DWNLSHpo.js +4 -0
  59. package/web/assets/key-DJEQ_jUi.js +1 -0
  60. package/{dist/web/assets/layers-ephyCrDm.js → web/assets/layers-KZu6CpGE.js} +1 -1
  61. package/{dist/web/assets/layout-grid-DCVGg8ZA.js → web/assets/layout-grid-U17jhSjz.js} +1 -1
  62. package/web/assets/login-DoSA7KtI.js +1 -0
  63. package/web/assets/mcp-setup-Cyj1YAiY.js +17 -0
  64. package/web/assets/memory-DWZU2Tfl.js +1 -0
  65. package/web/assets/new-chat-BRS3DM8Z.js +1 -0
  66. package/web/assets/play-BzkxV_O-.js +1 -0
  67. package/{dist/web/assets/refresh-cw-RFYUf5GB.js → web/assets/refresh-cw-D3_GZ86i.js} +1 -1
  68. package/web/assets/register-BS5OkCgS.js +1 -0
  69. package/web/assets/rotate-ccw-CkJIdGxi.js +1 -0
  70. package/{dist/web/assets/save-Dewm93H6.js → web/assets/save-BXEZF80P.js} +1 -1
  71. package/web/assets/search-BmZSwFnA.js +1 -0
  72. package/{dist/web/assets/send-FWvygYFQ.js → web/assets/send-CNiXC6KO.js} +1 -1
  73. package/web/assets/server-C5bKQLDi.js +1 -0
  74. package/web/assets/settings-CBAhSOZM.js +1 -0
  75. package/web/assets/shield-CMMTdOiM.js +1 -0
  76. package/{dist/web/assets/shield-check-Dt7sXtBF.js → web/assets/shield-check-BmphmMlD.js} +1 -1
  77. package/{dist/web/assets/shuffle-DjvBJ7XV.js → web/assets/shuffle-Dv_-PFl5.js} +1 -1
  78. package/web/assets/src-CaF63bXY.js +24 -0
  79. package/web/assets/sse-url-qohTy4Sw.js +1 -0
  80. package/web/assets/team-edit-BW1bePKn.js +1 -0
  81. package/web/assets/team-sessions-GspGc7zN.js +1 -0
  82. package/web/assets/team-use-BVC7nt9K.js +3 -0
  83. package/web/assets/terminal-CjSFIwMK.js +1 -0
  84. package/{dist/web/assets/timer-C9X20mTO.js → web/assets/timer-3siC9tpd.js} +1 -1
  85. package/{dist/web/assets/useMutation-BlOHt3MR.js → web/assets/useMutation-DA8-TvTt.js} +1 -1
  86. package/{dist/web/assets/utils-DHTPP40O.js → web/assets/utils-D1nRmcA6.js} +1 -1
  87. package/web/assets/workflow-edit-DkmsARCv.js +4 -0
  88. package/web/assets/workflow-runs-DcJPL7Bo.js +1 -0
  89. package/web/assets/workflows-Dnx0dwJn.js +1 -0
  90. package/{dist/web/assets/wrench-DZBtSPP8.js → web/assets/wrench-u8B_fDwT.js} +1 -1
  91. package/{dist/web/assets/zap-CbT5plGA.js → web/assets/zap-hOn7wkXe.js} +1 -1
  92. package/{dist/web → web}/index.html +9 -7
  93. package/README.md +0 -33
  94. package/dist/commands/gateway/start.js.map +0 -1
  95. package/dist/commands/setup.js.map +0 -1
  96. package/dist/server.js +0 -38234
  97. package/dist/server.js.map +0 -1
  98. package/dist/web/assets/agent-edit-CblZItU5.js +0 -98
  99. package/dist/web/assets/agent-sessions-COpCcffa.js +0 -1
  100. package/dist/web/assets/agent-use-F4pOt3KJ.js +0 -1
  101. package/dist/web/assets/agents-Av7w2wHE.js +0 -1
  102. package/dist/web/assets/arrow-down-XHN5PD1k.js +0 -1
  103. package/dist/web/assets/arrow-left-wtNmm6Le.js +0 -1
  104. package/dist/web/assets/chat-CQvfLy7Y.js +0 -4
  105. package/dist/web/assets/chat-new-BOtDuYij.js +0 -1
  106. package/dist/web/assets/chat-sessions-CaCaK_PC.js +0 -1
  107. package/dist/web/assets/chats-64IReeGV.js +0 -1
  108. package/dist/web/assets/circle-check-DLl9fl65.js +0 -1
  109. package/dist/web/assets/code-Brz4KHlI.js +0 -1
  110. package/dist/web/assets/commands-DT9K8bae.js +0 -8
  111. package/dist/web/assets/credentials-DC-HOVxW.js +0 -1
  112. package/dist/web/assets/dashboard-OfnNUjFX.js +0 -1
  113. package/dist/web/assets/debug-Et9rgBM8.js +0 -1
  114. package/dist/web/assets/file-tree-DkLQ1z0I.js +0 -1
  115. package/dist/web/assets/index-YgjFlLLv.css +0 -2
  116. package/dist/web/assets/index-dc8HGqTp.js +0 -2
  117. package/dist/web/assets/mcp-setup-BfMdYdsI.js +0 -17
  118. package/dist/web/assets/memory-DAQ474-p.js +0 -1
  119. package/dist/web/assets/new-chat-DtMw6FMg.js +0 -1
  120. package/dist/web/assets/play-DXJMtO-K.js +0 -1
  121. package/dist/web/assets/search-Ww0msJQz.js +0 -1
  122. package/dist/web/assets/settings-Auyn4Z5T.js +0 -1
  123. package/dist/web/assets/src-DUhGoAQb.js +0 -24
  124. package/dist/web/assets/team-edit-DO-RX3lC.js +0 -1
  125. package/dist/web/assets/team-sessions-DSw8MTtZ.js +0 -1
  126. package/dist/web/assets/team-use-BfNvsFcO.js +0 -3
  127. package/dist/web/assets/terminal-CIapYonS.js +0 -1
  128. package/dist/web/assets/workflow-edit-D0FNyl64.js +0 -4
  129. package/dist/web/assets/workflow-runs-CPVvaVzN.js +0 -1
  130. package/dist/web/assets/workflows-C9jurJiE.js +0 -1
  131. /package/{dist/commands → commands}/gateway/start.d.ts +0 -0
  132. /package/{dist/commands → commands}/gateway/stop.d.ts +0 -0
  133. /package/{dist/commands → commands}/gateway/stop.d.ts.map +0 -0
  134. /package/{dist/commands → commands}/gateway/stop.js +0 -0
  135. /package/{dist/commands → commands}/gateway/stop.js.map +0 -0
  136. /package/{dist/commands → commands}/setup.d.ts +0 -0
  137. /package/{dist/commands → commands}/setup.spec.d.ts +0 -0
  138. /package/{dist/commands → commands}/setup.spec.d.ts.map +0 -0
  139. /package/{dist/commands → commands}/setup.spec.js +0 -0
  140. /package/{dist/commands → commands}/setup.spec.js.map +0 -0
  141. /package/{dist/commands → commands}/uninstall.d.ts +0 -0
  142. /package/{dist/commands → commands}/uninstall.d.ts.map +0 -0
  143. /package/{dist/commands → commands}/uninstall.js +0 -0
  144. /package/{dist/commands → commands}/uninstall.js.map +0 -0
  145. /package/{dist/index.d.ts → index.d.ts} +0 -0
  146. /package/{dist/index.d.ts.map → index.d.ts.map} +0 -0
  147. /package/{dist/index.js → index.js} +0 -0
  148. /package/{dist/index.js.map → index.js.map} +0 -0
  149. /package/{dist/lib → lib}/gateway.d.ts +0 -0
  150. /package/{dist/lib → lib}/gateway.d.ts.map +0 -0
  151. /package/{dist/lib → lib}/gateway.js +0 -0
  152. /package/{dist/lib → lib}/gateway.js.map +0 -0
  153. /package/{dist/lib → lib}/shell-profile.d.ts +0 -0
  154. /package/{dist/lib → lib}/shell-profile.d.ts.map +0 -0
  155. /package/{dist/lib → lib}/shell-profile.js +0 -0
  156. /package/{dist/lib → lib}/shell-profile.js.map +0 -0
  157. /package/{dist/migrations → migrations}/0001-add-memory-enabled.js +0 -0
  158. /package/{dist/migrations → migrations}/lib/helpers.js +0 -0
  159. /package/{dist/migrations → migrations}/lib/template.js +0 -0
  160. /package/{dist/prisma → prisma}/migrations/20260318152538_add_trigger_type_and_source_workflow/migration.sql +0 -0
  161. /package/{dist/prisma → prisma}/migrations/20260318154232_drop_skill_and_emit_from_action/migration.sql +0 -0
  162. /package/{dist/prisma → prisma}/migrations/20260318160029_action_types_cli_bash_node_http/migration.sql +0 -0
  163. /package/{dist/prisma → prisma}/migrations/20260401085053_schema_sync/migration.sql +0 -0
  164. /package/{dist/prisma → prisma}/migrations/migration_lock.toml +0 -0
  165. /package/{dist/web/assets/api-docs-BQzn4-6U.js → web/assets/api-docs-DgRFxVfh.js} +0 -0
  166. /package/{dist/web/assets/bi-gM8sIAZV.js → web/assets/bi-Da3wz7XD.js} +0 -0
  167. /package/{dist/web/assets/cron-COUPKvGu.js → web/assets/cron-3VyztcE9.js} +0 -0
  168. /package/{dist/web → web}/assets/geist-cyrillic-wght-normal-CHSlOQsW.woff2 +0 -0
  169. /package/{dist/web → web}/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2 +0 -0
  170. /package/{dist/web → web}/assets/geist-latin-wght-normal-Dm3htQBi.woff2 +0 -0
  171. /package/{dist/web → web}/assets/rolldown-runtime-Dw2cE7zH.js +0 -0
  172. /package/{dist/web → web}/assets/useQuery-DvovkaPT.js +0 -0
  173. /package/{dist/web/assets/vendor-editor-BORFA-rZ.js → web/assets/vendor-editor-Cx3Ogh9u.js} +0 -0
  174. /package/{dist/web → web}/assets/vendor-react-BJ8SIkmN.js +0 -0
  175. /package/{dist/web → web}/assets/vendor-ui-CHpVij2M.css +0 -0
  176. /package/{dist/web/assets/vendor-ui-Dpw9mBc-.js → web/assets/vendor-ui-DnL9d3od.js} +0 -0
  177. /package/{dist/web → web}/docs.html +0 -0
  178. /package/{dist/web → web}/favicon.svg +0 -0
@@ -40,6 +40,10 @@ tags:
40
40
  - name: Documentation
41
41
  description: In-app documentation for agents, teams, workflows, and MCP tools —
42
42
  read these to understand how to use the platform
43
+ - name: Users
44
+ description: User management (admin)
45
+ - name: Roles
46
+ description: Role and permission management (admin)
43
47
  components:
44
48
  schemas:
45
49
  TreeNode:
@@ -3587,6 +3591,107 @@ paths:
3587
3591
  - error
3588
3592
  required:
3589
3593
  - agents
3594
+ //settings/gateway:
3595
+ get:
3596
+ tags:
3597
+ - Settings
3598
+ summary: Get gateway configuration
3599
+ responses:
3600
+ "200":
3601
+ description: Current gateway config
3602
+ content:
3603
+ application/json:
3604
+ schema:
3605
+ type: object
3606
+ properties:
3607
+ port:
3608
+ type: number
3609
+ trustedOrigins:
3610
+ type: array
3611
+ items:
3612
+ type: string
3613
+ token:
3614
+ type: string
3615
+ required:
3616
+ - port
3617
+ - trustedOrigins
3618
+ - token
3619
+ put:
3620
+ tags:
3621
+ - Settings
3622
+ summary: Update gateway configuration
3623
+ requestBody:
3624
+ content:
3625
+ application/json:
3626
+ schema:
3627
+ type: object
3628
+ properties:
3629
+ trustedOrigins:
3630
+ type: array
3631
+ items:
3632
+ type: string
3633
+ token:
3634
+ type: string
3635
+ responses:
3636
+ "200":
3637
+ description: Updated gateway config
3638
+ content:
3639
+ application/json:
3640
+ schema:
3641
+ type: object
3642
+ properties:
3643
+ port:
3644
+ type: number
3645
+ trustedOrigins:
3646
+ type: array
3647
+ items:
3648
+ type: string
3649
+ token:
3650
+ type: string
3651
+ required:
3652
+ - port
3653
+ - trustedOrigins
3654
+ - token
3655
+ //settings/gateway/status:
3656
+ get:
3657
+ tags:
3658
+ - Settings
3659
+ summary: Get gateway status
3660
+ responses:
3661
+ "200":
3662
+ description: Gateway status
3663
+ content:
3664
+ application/json:
3665
+ schema:
3666
+ type: object
3667
+ properties:
3668
+ connected:
3669
+ type: boolean
3670
+ uptime:
3671
+ type: number
3672
+ version:
3673
+ type: string
3674
+ required:
3675
+ - connected
3676
+ - uptime
3677
+ - version
3678
+ //settings/gateway/restart:
3679
+ post:
3680
+ tags:
3681
+ - Settings
3682
+ summary: Restart gateway
3683
+ responses:
3684
+ "200":
3685
+ description: Restart initiated
3686
+ content:
3687
+ application/json:
3688
+ schema:
3689
+ type: object
3690
+ properties:
3691
+ message:
3692
+ type: string
3693
+ required:
3694
+ - message
3590
3695
  //debug/watchers:
3591
3696
  get:
3592
3697
  tags:
@@ -5646,3 +5751,668 @@ paths:
5646
5751
  type: string
5647
5752
  required:
5648
5753
  - error
5754
+ //users:
5755
+ get:
5756
+ tags:
5757
+ - Users
5758
+ summary: List all users
5759
+ responses:
5760
+ "200":
5761
+ description: Paginated list of users
5762
+ content:
5763
+ application/json:
5764
+ schema:
5765
+ type: object
5766
+ properties:
5767
+ users:
5768
+ type: array
5769
+ items:
5770
+ type: object
5771
+ properties:
5772
+ id:
5773
+ type: string
5774
+ name:
5775
+ type: string
5776
+ email:
5777
+ type: string
5778
+ image:
5779
+ type: string
5780
+ nullable: true
5781
+ roleId:
5782
+ type: string
5783
+ roleName:
5784
+ type: string
5785
+ createdAt:
5786
+ type: string
5787
+ required:
5788
+ - id
5789
+ - name
5790
+ - email
5791
+ - image
5792
+ - roleId
5793
+ - roleName
5794
+ - createdAt
5795
+ total:
5796
+ type: number
5797
+ required:
5798
+ - users
5799
+ - total
5800
+ //users/{id}:
5801
+ get:
5802
+ tags:
5803
+ - Users
5804
+ summary: Get user by ID
5805
+ parameters:
5806
+ - schema:
5807
+ type: string
5808
+ required: true
5809
+ name: id
5810
+ in: path
5811
+ responses:
5812
+ "200":
5813
+ description: User details
5814
+ content:
5815
+ application/json:
5816
+ schema:
5817
+ type: object
5818
+ properties:
5819
+ id:
5820
+ type: string
5821
+ name:
5822
+ type: string
5823
+ email:
5824
+ type: string
5825
+ image:
5826
+ type: string
5827
+ nullable: true
5828
+ roleId:
5829
+ type: string
5830
+ roleName:
5831
+ type: string
5832
+ createdAt:
5833
+ type: string
5834
+ required:
5835
+ - id
5836
+ - name
5837
+ - email
5838
+ - image
5839
+ - roleId
5840
+ - roleName
5841
+ - createdAt
5842
+ "404":
5843
+ description: User not found
5844
+ content:
5845
+ application/json:
5846
+ schema:
5847
+ type: object
5848
+ properties:
5849
+ error:
5850
+ type: string
5851
+ required:
5852
+ - error
5853
+ put:
5854
+ tags:
5855
+ - Users
5856
+ summary: Update user
5857
+ parameters:
5858
+ - schema:
5859
+ type: string
5860
+ required: true
5861
+ name: id
5862
+ in: path
5863
+ requestBody:
5864
+ content:
5865
+ application/json:
5866
+ schema:
5867
+ type: object
5868
+ properties:
5869
+ name:
5870
+ type: string
5871
+ email:
5872
+ type: string
5873
+ format: email
5874
+ roleId:
5875
+ type: string
5876
+ responses:
5877
+ "200":
5878
+ description: Updated user
5879
+ content:
5880
+ application/json:
5881
+ schema:
5882
+ type: object
5883
+ properties:
5884
+ id:
5885
+ type: string
5886
+ name:
5887
+ type: string
5888
+ email:
5889
+ type: string
5890
+ image:
5891
+ type: string
5892
+ nullable: true
5893
+ roleId:
5894
+ type: string
5895
+ roleName:
5896
+ type: string
5897
+ createdAt:
5898
+ type: string
5899
+ required:
5900
+ - id
5901
+ - name
5902
+ - email
5903
+ - image
5904
+ - roleId
5905
+ - roleName
5906
+ - createdAt
5907
+ "403":
5908
+ description: Cannot modify owner
5909
+ content:
5910
+ application/json:
5911
+ schema:
5912
+ type: object
5913
+ properties:
5914
+ error:
5915
+ type: string
5916
+ required:
5917
+ - error
5918
+ "404":
5919
+ description: User not found
5920
+ content:
5921
+ application/json:
5922
+ schema:
5923
+ type: object
5924
+ properties:
5925
+ error:
5926
+ type: string
5927
+ required:
5928
+ - error
5929
+ delete:
5930
+ tags:
5931
+ - Users
5932
+ summary: Delete user
5933
+ parameters:
5934
+ - schema:
5935
+ type: string
5936
+ required: true
5937
+ name: id
5938
+ in: path
5939
+ responses:
5940
+ "200":
5941
+ description: User deleted
5942
+ content:
5943
+ application/json:
5944
+ schema:
5945
+ type: object
5946
+ properties:
5947
+ success:
5948
+ type: boolean
5949
+ required:
5950
+ - success
5951
+ "403":
5952
+ description: Cannot delete owner
5953
+ content:
5954
+ application/json:
5955
+ schema:
5956
+ type: object
5957
+ properties:
5958
+ error:
5959
+ type: string
5960
+ required:
5961
+ - error
5962
+ "404":
5963
+ description: User not found
5964
+ content:
5965
+ application/json:
5966
+ schema:
5967
+ type: object
5968
+ properties:
5969
+ error:
5970
+ type: string
5971
+ required:
5972
+ - error
5973
+ //users/invite:
5974
+ post:
5975
+ tags:
5976
+ - Users
5977
+ summary: Invite a new user
5978
+ requestBody:
5979
+ content:
5980
+ application/json:
5981
+ schema:
5982
+ type: object
5983
+ properties:
5984
+ email:
5985
+ type: string
5986
+ format: email
5987
+ name:
5988
+ type: string
5989
+ roleId:
5990
+ type: string
5991
+ password:
5992
+ type: string
5993
+ minLength: 8
5994
+ required:
5995
+ - email
5996
+ - name
5997
+ - roleId
5998
+ - password
5999
+ responses:
6000
+ "201":
6001
+ description: User created
6002
+ content:
6003
+ application/json:
6004
+ schema:
6005
+ type: object
6006
+ properties:
6007
+ id:
6008
+ type: string
6009
+ name:
6010
+ type: string
6011
+ email:
6012
+ type: string
6013
+ image:
6014
+ type: string
6015
+ nullable: true
6016
+ roleId:
6017
+ type: string
6018
+ roleName:
6019
+ type: string
6020
+ createdAt:
6021
+ type: string
6022
+ required:
6023
+ - id
6024
+ - name
6025
+ - email
6026
+ - image
6027
+ - roleId
6028
+ - roleName
6029
+ - createdAt
6030
+ "409":
6031
+ description: Email already in use
6032
+ content:
6033
+ application/json:
6034
+ schema:
6035
+ type: object
6036
+ properties:
6037
+ error:
6038
+ type: string
6039
+ required:
6040
+ - error
6041
+ //roles:
6042
+ get:
6043
+ tags:
6044
+ - Roles
6045
+ summary: List all roles with permissions
6046
+ responses:
6047
+ "200":
6048
+ description: All roles
6049
+ content:
6050
+ application/json:
6051
+ schema:
6052
+ type: object
6053
+ properties:
6054
+ roles:
6055
+ type: array
6056
+ items:
6057
+ type: object
6058
+ properties:
6059
+ id:
6060
+ type: string
6061
+ name:
6062
+ type: string
6063
+ description:
6064
+ type: string
6065
+ nullable: true
6066
+ isSystem:
6067
+ type: boolean
6068
+ permissions:
6069
+ type: array
6070
+ items:
6071
+ type: object
6072
+ properties:
6073
+ id:
6074
+ type: string
6075
+ entity:
6076
+ type: string
6077
+ action:
6078
+ type: string
6079
+ scope:
6080
+ type: string
6081
+ required:
6082
+ - id
6083
+ - entity
6084
+ - action
6085
+ - scope
6086
+ userCount:
6087
+ type: number
6088
+ createdAt:
6089
+ type: string
6090
+ required:
6091
+ - id
6092
+ - name
6093
+ - description
6094
+ - isSystem
6095
+ - permissions
6096
+ - userCount
6097
+ - createdAt
6098
+ required:
6099
+ - roles
6100
+ post:
6101
+ tags:
6102
+ - Roles
6103
+ summary: Create a custom role
6104
+ requestBody:
6105
+ content:
6106
+ application/json:
6107
+ schema:
6108
+ type: object
6109
+ properties:
6110
+ name:
6111
+ type: string
6112
+ minLength: 1
6113
+ description:
6114
+ type: string
6115
+ permissions:
6116
+ type: array
6117
+ items:
6118
+ type: object
6119
+ properties:
6120
+ entity:
6121
+ type: string
6122
+ action:
6123
+ type: string
6124
+ scope:
6125
+ type: string
6126
+ default: all
6127
+ required:
6128
+ - entity
6129
+ - action
6130
+ required:
6131
+ - name
6132
+ - permissions
6133
+ responses:
6134
+ "201":
6135
+ description: Role created
6136
+ content:
6137
+ application/json:
6138
+ schema:
6139
+ type: object
6140
+ properties:
6141
+ id:
6142
+ type: string
6143
+ name:
6144
+ type: string
6145
+ description:
6146
+ type: string
6147
+ nullable: true
6148
+ isSystem:
6149
+ type: boolean
6150
+ permissions:
6151
+ type: array
6152
+ items:
6153
+ type: object
6154
+ properties:
6155
+ id:
6156
+ type: string
6157
+ entity:
6158
+ type: string
6159
+ action:
6160
+ type: string
6161
+ scope:
6162
+ type: string
6163
+ required:
6164
+ - id
6165
+ - entity
6166
+ - action
6167
+ - scope
6168
+ userCount:
6169
+ type: number
6170
+ createdAt:
6171
+ type: string
6172
+ required:
6173
+ - id
6174
+ - name
6175
+ - description
6176
+ - isSystem
6177
+ - permissions
6178
+ - userCount
6179
+ - createdAt
6180
+ "409":
6181
+ description: Role name already exists
6182
+ content:
6183
+ application/json:
6184
+ schema:
6185
+ type: object
6186
+ properties:
6187
+ error:
6188
+ type: string
6189
+ required:
6190
+ - error
6191
+ //roles/{id}:
6192
+ get:
6193
+ tags:
6194
+ - Roles
6195
+ summary: Get role by ID
6196
+ parameters:
6197
+ - schema:
6198
+ type: string
6199
+ required: true
6200
+ name: id
6201
+ in: path
6202
+ responses:
6203
+ "200":
6204
+ description: Role details
6205
+ content:
6206
+ application/json:
6207
+ schema:
6208
+ type: object
6209
+ properties:
6210
+ id:
6211
+ type: string
6212
+ name:
6213
+ type: string
6214
+ description:
6215
+ type: string
6216
+ nullable: true
6217
+ isSystem:
6218
+ type: boolean
6219
+ permissions:
6220
+ type: array
6221
+ items:
6222
+ type: object
6223
+ properties:
6224
+ id:
6225
+ type: string
6226
+ entity:
6227
+ type: string
6228
+ action:
6229
+ type: string
6230
+ scope:
6231
+ type: string
6232
+ required:
6233
+ - id
6234
+ - entity
6235
+ - action
6236
+ - scope
6237
+ userCount:
6238
+ type: number
6239
+ createdAt:
6240
+ type: string
6241
+ required:
6242
+ - id
6243
+ - name
6244
+ - description
6245
+ - isSystem
6246
+ - permissions
6247
+ - userCount
6248
+ - createdAt
6249
+ "404":
6250
+ description: Role not found
6251
+ content:
6252
+ application/json:
6253
+ schema:
6254
+ type: object
6255
+ properties:
6256
+ error:
6257
+ type: string
6258
+ required:
6259
+ - error
6260
+ put:
6261
+ tags:
6262
+ - Roles
6263
+ summary: Update a custom role
6264
+ parameters:
6265
+ - schema:
6266
+ type: string
6267
+ required: true
6268
+ name: id
6269
+ in: path
6270
+ requestBody:
6271
+ content:
6272
+ application/json:
6273
+ schema:
6274
+ type: object
6275
+ properties:
6276
+ name:
6277
+ type: string
6278
+ description:
6279
+ type: string
6280
+ permissions:
6281
+ type: array
6282
+ items:
6283
+ type: object
6284
+ properties:
6285
+ entity:
6286
+ type: string
6287
+ action:
6288
+ type: string
6289
+ scope:
6290
+ type: string
6291
+ default: all
6292
+ required:
6293
+ - entity
6294
+ - action
6295
+ responses:
6296
+ "200":
6297
+ description: Updated role
6298
+ content:
6299
+ application/json:
6300
+ schema:
6301
+ type: object
6302
+ properties:
6303
+ id:
6304
+ type: string
6305
+ name:
6306
+ type: string
6307
+ description:
6308
+ type: string
6309
+ nullable: true
6310
+ isSystem:
6311
+ type: boolean
6312
+ permissions:
6313
+ type: array
6314
+ items:
6315
+ type: object
6316
+ properties:
6317
+ id:
6318
+ type: string
6319
+ entity:
6320
+ type: string
6321
+ action:
6322
+ type: string
6323
+ scope:
6324
+ type: string
6325
+ required:
6326
+ - id
6327
+ - entity
6328
+ - action
6329
+ - scope
6330
+ userCount:
6331
+ type: number
6332
+ createdAt:
6333
+ type: string
6334
+ required:
6335
+ - id
6336
+ - name
6337
+ - description
6338
+ - isSystem
6339
+ - permissions
6340
+ - userCount
6341
+ - createdAt
6342
+ "403":
6343
+ description: Cannot modify system role
6344
+ content:
6345
+ application/json:
6346
+ schema:
6347
+ type: object
6348
+ properties:
6349
+ error:
6350
+ type: string
6351
+ required:
6352
+ - error
6353
+ "404":
6354
+ description: Role not found
6355
+ content:
6356
+ application/json:
6357
+ schema:
6358
+ type: object
6359
+ properties:
6360
+ error:
6361
+ type: string
6362
+ required:
6363
+ - error
6364
+ delete:
6365
+ tags:
6366
+ - Roles
6367
+ summary: Delete a custom role
6368
+ parameters:
6369
+ - schema:
6370
+ type: string
6371
+ required: true
6372
+ name: id
6373
+ in: path
6374
+ responses:
6375
+ "200":
6376
+ description: Role deleted
6377
+ content:
6378
+ application/json:
6379
+ schema:
6380
+ type: object
6381
+ properties:
6382
+ success:
6383
+ type: boolean
6384
+ required:
6385
+ - success
6386
+ "403":
6387
+ description: Cannot delete system role
6388
+ content:
6389
+ application/json:
6390
+ schema:
6391
+ type: object
6392
+ properties:
6393
+ error:
6394
+ type: string
6395
+ required:
6396
+ - error
6397
+ "404":
6398
+ description: Role not found
6399
+ content:
6400
+ application/json:
6401
+ schema:
6402
+ type: object
6403
+ properties:
6404
+ error:
6405
+ type: string
6406
+ required:
6407
+ - error
6408
+ "409":
6409
+ description: Role still has users assigned
6410
+ content:
6411
+ application/json:
6412
+ schema:
6413
+ type: object
6414
+ properties:
6415
+ error:
6416
+ type: string
6417
+ required:
6418
+ - error