organizations.yaml 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. OrganizationTree:
  2. get:
  3. operationId: getOrganizationTree
  4. summary: 查询组织树
  5. description: 响应按请求者生效管理范围裁剪(契约1.33)——锚点管理员仅返回管理范围子树内机构(森林形式,根从锚点机构起,范围外机构与其祖先链不出现,keyword/status 过滤在裁剪后的集合内进行);全局管理员不受限,返回全部机构。只读放开(契约1.45):不要求ADMIN类别,任意登录用户可调;普通用户(USER)恒返回本人所在部门为根的子树(沿ENABLED机构边,无部门空树),与GET /api/v1/users收敛口径一致。
  6. parameters:
  7. - $ref: '../components/parameters.yaml#/XRequestId'
  8. - name: keyword
  9. in: query
  10. schema:
  11. type: string
  12. - name: status
  13. in: query
  14. description: 按状态过滤;不传时返回全部机构(含停用,契约1.29),停用节点仍保留其祖先链以便展示树形层级。
  15. schema:
  16. $ref: '../components/schemas.yaml#/EnabledStatus'
  17. responses:
  18. '200':
  19. description: 组织树
  20. content:
  21. application/json:
  22. schema:
  23. $ref: '../components/schemas.yaml#/OrganizationTreeResponse'
  24. '400':
  25. $ref: '../components/responses.yaml#/InvalidArgument'
  26. '401':
  27. $ref: '../components/responses.yaml#/AuthenticationError'
  28. '403':
  29. $ref: '../components/responses.yaml#/Forbidden'
  30. '500':
  31. $ref: '../components/responses.yaml#/InternalError'
  32. Organizations:
  33. post:
  34. operationId: createOrganization
  35. summary: 创建机构
  36. parameters:
  37. - $ref: '../components/parameters.yaml#/XRequestId'
  38. requestBody:
  39. required: true
  40. content:
  41. application/json:
  42. schema:
  43. $ref: '../components/schemas.yaml#/CreateOrganizationRequest'
  44. responses:
  45. '201':
  46. description: 创建成功
  47. content:
  48. application/json:
  49. schema:
  50. $ref: '../components/schemas.yaml#/OrganizationResponse'
  51. '400':
  52. $ref: '../components/responses.yaml#/InvalidArgument'
  53. '401':
  54. $ref: '../components/responses.yaml#/AuthenticationError'
  55. '403':
  56. $ref: '../components/responses.yaml#/Forbidden'
  57. '409':
  58. $ref: '../components/responses.yaml#/Conflict'
  59. '500':
  60. $ref: '../components/responses.yaml#/InternalError'
  61. OrganizationsReorder:
  62. put:
  63. operationId: reorderOrganizations
  64. summary: 管理员拖动重排同级机构(契约1.27)
  65. description: parentId为null表示顶层机构排序,否则为该父机构直接子级排序;orderedIds为拖动后的目标顺序,被提交机构按原槽位次序互换(未提交机构相对次序不变),同级按步长10重编号sort_no。
  66. parameters:
  67. - $ref: '../components/parameters.yaml#/XRequestId'
  68. requestBody:
  69. required: true
  70. content:
  71. application/json:
  72. schema:
  73. $ref: '../components/schemas.yaml#/ReorderOrganizationsRequest'
  74. responses:
  75. '200':
  76. description: 重排结果
  77. content:
  78. application/json:
  79. schema:
  80. $ref: '../components/schemas.yaml#/ReorderResultResponse'
  81. '400':
  82. $ref: '../components/responses.yaml#/InvalidArgument'
  83. '401':
  84. $ref: '../components/responses.yaml#/AuthenticationError'
  85. '403':
  86. $ref: '../components/responses.yaml#/Forbidden'
  87. '404':
  88. $ref: '../components/responses.yaml#/NotFound'
  89. '409':
  90. $ref: '../components/responses.yaml#/Conflict'
  91. '500':
  92. $ref: '../components/responses.yaml#/InternalError'
  93. Organization:
  94. parameters:
  95. - name: id
  96. in: path
  97. required: true
  98. schema:
  99. $ref: '../components/schemas.yaml#/StringId'
  100. put:
  101. operationId: updateOrganization
  102. summary: 编辑机构
  103. requestBody:
  104. required: true
  105. content:
  106. application/json:
  107. schema:
  108. $ref: '../components/schemas.yaml#/UpdateOrganizationRequest'
  109. responses:
  110. '200':
  111. description: 编辑成功
  112. content:
  113. application/json:
  114. schema:
  115. $ref: '../components/schemas.yaml#/OrganizationResponse'
  116. '400':
  117. $ref: '../components/responses.yaml#/InvalidArgument'
  118. '401':
  119. $ref: '../components/responses.yaml#/AuthenticationError'
  120. '403':
  121. $ref: '../components/responses.yaml#/Forbidden'
  122. '404':
  123. $ref: '../components/responses.yaml#/NotFound'
  124. '409':
  125. $ref: '../components/responses.yaml#/Conflict'
  126. '500':
  127. $ref: '../components/responses.yaml#/InternalError'
  128. delete:
  129. operationId: deleteOrganization
  130. summary: 逻辑删除机构
  131. parameters:
  132. - name: rowVersion
  133. in: query
  134. required: true
  135. schema: {type: integer, minimum: 0}
  136. responses:
  137. '200':
  138. description: 删除成功
  139. content:
  140. application/json:
  141. schema:
  142. $ref: '../components/schemas.yaml#/DeleteOrganizationResponse'
  143. '400':
  144. $ref: '../components/responses.yaml#/InvalidArgument'
  145. '401':
  146. $ref: '../components/responses.yaml#/AuthenticationError'
  147. '403':
  148. $ref: '../components/responses.yaml#/Forbidden'
  149. '404':
  150. $ref: '../components/responses.yaml#/NotFound'
  151. '409':
  152. $ref: '../components/responses.yaml#/Conflict'
  153. '500':
  154. $ref: '../components/responses.yaml#/InternalError'
  155. OrganizationIpAssignments:
  156. parameters:
  157. - name: id
  158. in: path
  159. required: true
  160. schema:
  161. $ref: '../components/schemas.yaml#/StringId'
  162. get:
  163. operationId: listOrganizationIpAssignments
  164. summary: 查询部门可登录IP条目ID列表(空列表表示不限制)
  165. parameters:
  166. - $ref: '../components/parameters.yaml#/XRequestId'
  167. responses:
  168. '200':
  169. description: IP条目ID列表
  170. content:
  171. application/json:
  172. schema:
  173. $ref: '../components/schemas.yaml#/OrgIpAssignmentListResponse'
  174. '401':
  175. $ref: '../components/responses.yaml#/AuthenticationError'
  176. '403':
  177. $ref: '../components/responses.yaml#/Forbidden'
  178. '404':
  179. $ref: '../components/responses.yaml#/NotFound'
  180. '500':
  181. $ref: '../components/responses.yaml#/InternalError'
  182. put:
  183. operationId: updateOrganizationIpAssignments
  184. summary: 整存部门可登录IP列表(空数组=清空=不限制)
  185. parameters:
  186. - $ref: '../components/parameters.yaml#/XRequestId'
  187. requestBody:
  188. required: true
  189. content:
  190. application/json:
  191. schema:
  192. $ref: '../components/schemas.yaml#/UpdateOrgIpAssignmentsRequest'
  193. responses:
  194. '200':
  195. description: 保存成功
  196. content:
  197. application/json:
  198. schema:
  199. $ref: '../components/schemas.yaml#/OrgIpAssignmentsResponse'
  200. '400':
  201. $ref: '../components/responses.yaml#/InvalidArgument'
  202. '401':
  203. $ref: '../components/responses.yaml#/AuthenticationError'
  204. '403':
  205. $ref: '../components/responses.yaml#/Forbidden'
  206. '404':
  207. $ref: '../components/responses.yaml#/NotFound'
  208. '409':
  209. $ref: '../components/responses.yaml#/Conflict'
  210. '500':
  211. $ref: '../components/responses.yaml#/InternalError'
  212. # 契约1.55 高级检索·提供单位选项:机构树第 N 级启用机构清单
  213. # (N=DMS_SEARCH_ORG_FILTER_LEVEL 缺省 2),不做契约1.45的部门子树裁剪。
  214. # 契约1.66 响应新增 childOrganizations(第 N+1 级启用机构),下拉分两行选择。
  215. OrganizationFilterOptions:
  216. get:
  217. operationId: getOrganizationFilterOptions
  218. summary: 高级检索·提供单位机构选项(契约1.55,1.66 两行)
  219. description: 返回机构树第 orgFilterLevel 级启用机构清单及第 N+1 级子机构清单(均按 sort_no 升序、null 最后、同值按 id),供全局检索「提供单位」下拉分两行选择(契约1.66:第一行 N 级机构、第二行 N+1 级机构);任意登录用户可调。级别由 DMS_SEARCH_ORG_FILTER_LEVEL 配置(缺省2:二级机构)。不做契约1.45的部门子树裁剪——检索维度面向全机构,选中后由列表接口按该机构及其下级子树过滤。
  220. security:
  221. - BearerAuth: []
  222. parameters:
  223. - $ref: '../components/parameters.yaml#/XRequestId'
  224. responses:
  225. '200':
  226. description: 提供单位机构选项
  227. content:
  228. application/json:
  229. schema:
  230. type: object
  231. additionalProperties: false
  232. required: [orgFilterLevel, organizations, childOrganizations]
  233. properties:
  234. orgFilterLevel: {type: integer, description: 提供单位下拉第一行展示的机构级别(1=一级机构,2=二级机构)}
  235. organizations:
  236. type: array
  237. description: 第一行:第 N 级启用机构(契约1.55)
  238. items:
  239. type: object
  240. additionalProperties: false
  241. required: [id, orgName]
  242. properties:
  243. id: {type: string}
  244. orgName: {type: string}
  245. childOrganizations:
  246. type: array
  247. description: 第二行:第 N+1 级启用机构(契约1.66 提供单位两行筛选)
  248. items:
  249. type: object
  250. additionalProperties: false
  251. required: [id, orgName]
  252. properties:
  253. id: {type: string}
  254. orgName: {type: string}
  255. '401': {$ref: '../components/responses.yaml#/AuthenticationError'}
  256. '500': {$ref: '../components/responses.yaml#/InternalError'}