js7-client-python 2.0.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 (389) hide show
  1. js7/__init__.py +8 -0
  2. js7/api/joc/http/v_2_8_2/agent/cluster/confirm_node_loss.py +36 -0
  3. js7/api/joc/http/v_2_8_2/agent/cluster/switchover.py +36 -0
  4. js7/api/joc/http/v_2_8_2/agent/delete.py +36 -0
  5. js7/api/joc/http/v_2_8_2/agents/agents.py +36 -0
  6. js7/api/joc/http/v_2_8_2/agents/cluster/delete.py +36 -0
  7. js7/api/joc/http/v_2_8_2/agents/cluster/deploy.py +36 -0
  8. js7/api/joc/http/v_2_8_2/agents/cluster/revoke.py +36 -0
  9. js7/api/joc/http/v_2_8_2/agents/cluster/store.py +36 -0
  10. js7/api/joc/http/v_2_8_2/agents/export.py +36 -0
  11. js7/api/joc/http/v_2_8_2/agents/import.py +74 -0
  12. js7/api/joc/http/v_2_8_2/agents/inventory/cluster/deploy.py +36 -0
  13. js7/api/joc/http/v_2_8_2/agents/inventory/cluster/revoke.py +36 -0
  14. js7/api/joc/http/v_2_8_2/agents/inventory/cluster/store.py +36 -0
  15. js7/api/joc/http/v_2_8_2/agents/inventory/cluster/subagents/delete.py +36 -0
  16. js7/api/joc/http/v_2_8_2/agents/inventory/cluster/subagents/disable.py +36 -0
  17. js7/api/joc/http/v_2_8_2/agents/inventory/cluster/subagents/enable.py +36 -0
  18. js7/api/joc/http/v_2_8_2/agents/inventory/cluster/subagents/reset.py +36 -0
  19. js7/api/joc/http/v_2_8_2/agents/inventory/cluster/subagents/store.py +36 -0
  20. js7/api/joc/http/v_2_8_2/agents/inventory/deploy.py +36 -0
  21. js7/api/joc/http/v_2_8_2/agents/inventory/disable.py +36 -0
  22. js7/api/joc/http/v_2_8_2/agents/inventory/enable.py +36 -0
  23. js7/api/joc/http/v_2_8_2/agents/inventory/revoke.py +36 -0
  24. js7/api/joc/http/v_2_8_2/agents/inventory/store.py +36 -0
  25. js7/api/joc/http/v_2_8_2/agents/reset.py +36 -0
  26. js7/api/joc/http/v_2_8_2/authentication/auth.py +32 -0
  27. js7/api/joc/http/v_2_8_2/authentication/joc_cockpit_permissions.py +28 -0
  28. js7/api/joc/http/v_2_8_2/authentication/login.py +35 -0
  29. js7/api/joc/http/v_2_8_2/authentication/logout.py +28 -0
  30. js7/api/joc/http/v_2_8_2/configuration/configuration.py +36 -0
  31. js7/api/joc/http/v_2_8_2/configuration/save.py +36 -0
  32. js7/api/joc/http/v_2_8_2/controller/abort.py +36 -0
  33. js7/api/joc/http/v_2_8_2/controller/abort_and_restart.py +36 -0
  34. js7/api/joc/http/v_2_8_2/controller/cluster/appoint_nodes.py +36 -0
  35. js7/api/joc/http/v_2_8_2/controller/cluster/confirm_node_loss.py +36 -0
  36. js7/api/joc/http/v_2_8_2/controller/cluster/switchover.py +36 -0
  37. js7/api/joc/http/v_2_8_2/controller/components.py +36 -0
  38. js7/api/joc/http/v_2_8_2/controller/controller.py +36 -0
  39. js7/api/joc/http/v_2_8_2/controller/register.py +42 -0
  40. js7/api/joc/http/v_2_8_2/controller/restart.py +36 -0
  41. js7/api/joc/http/v_2_8_2/controller/terminate.py +36 -0
  42. js7/api/joc/http/v_2_8_2/controller/test.py +36 -0
  43. js7/api/joc/http/v_2_8_2/controller/unregister.py +36 -0
  44. js7/api/joc/http/v_2_8_2/daily_plan/orders/cancel.py +36 -0
  45. js7/api/joc/http/v_2_8_2/daily_plan/orders/copy.py +36 -0
  46. js7/api/joc/http/v_2_8_2/daily_plan/orders/delete.py +36 -0
  47. js7/api/joc/http/v_2_8_2/daily_plan/orders/generate.py +36 -0
  48. js7/api/joc/http/v_2_8_2/daily_plan/orders/modify.py +36 -0
  49. js7/api/joc/http/v_2_8_2/daily_plan/orders/orders.py +36 -0
  50. js7/api/joc/http/v_2_8_2/daily_plan/orders/submit.py +36 -0
  51. js7/api/joc/http/v_2_8_2/daily_plan/projections/calendar.py +36 -0
  52. js7/api/joc/http/v_2_8_2/daily_plan/projections/dates.py +36 -0
  53. js7/api/joc/http/v_2_8_2/daily_plan/projections/recreate.py +28 -0
  54. js7/api/joc/http/v_2_8_2/daily_plan/submissions/delete.py +36 -0
  55. js7/api/joc/http/v_2_8_2/iam/account/change_password.py +36 -0
  56. js7/api/joc/http/v_2_8_2/iam/account/permissions.py +36 -0
  57. js7/api/joc/http/v_2_8_2/iam/account/rename.py +36 -0
  58. js7/api/joc/http/v_2_8_2/iam/account/store.py +36 -0
  59. js7/api/joc/http/v_2_8_2/iam/accounts/accounts.py +36 -0
  60. js7/api/joc/http/v_2_8_2/iam/accounts/delete.py +36 -0
  61. js7/api/joc/http/v_2_8_2/iam/accounts/disable.py +36 -0
  62. js7/api/joc/http/v_2_8_2/iam/accounts/enable.py +36 -0
  63. js7/api/joc/http/v_2_8_2/iam/accounts/reset_password.py +36 -0
  64. js7/api/joc/http/v_2_8_2/iam/blocked_account/store.py +36 -0
  65. js7/api/joc/http/v_2_8_2/iam/blocked_accounts/blocked_accounts.py +36 -0
  66. js7/api/joc/http/v_2_8_2/iam/blocked_accounts/delete.py +36 -0
  67. js7/api/joc/http/v_2_8_2/iam/folder/folder.py +36 -0
  68. js7/api/joc/http/v_2_8_2/iam/folder/rename.py +36 -0
  69. js7/api/joc/http/v_2_8_2/iam/folders/delete.py +36 -0
  70. js7/api/joc/http/v_2_8_2/iam/folders/folders.py +36 -0
  71. js7/api/joc/http/v_2_8_2/iam/folders/store.py +36 -0
  72. js7/api/joc/http/v_2_8_2/iam/identity_service/delete.py +36 -0
  73. js7/api/joc/http/v_2_8_2/iam/identity_service/identity_service.py +36 -0
  74. js7/api/joc/http/v_2_8_2/iam/identity_service/rename.py +36 -0
  75. js7/api/joc/http/v_2_8_2/iam/identity_service/store.py +42 -0
  76. js7/api/joc/http/v_2_8_2/iam/identity_services/identity_services.py +36 -0
  77. js7/api/joc/http/v_2_8_2/iam/permission/permission.py +36 -0
  78. js7/api/joc/http/v_2_8_2/iam/permission/rename.py +36 -0
  79. js7/api/joc/http/v_2_8_2/iam/permissions/delete.py +36 -0
  80. js7/api/joc/http/v_2_8_2/iam/permissions/permissions.py +36 -0
  81. js7/api/joc/http/v_2_8_2/iam/permissions/store.py +36 -0
  82. js7/api/joc/http/v_2_8_2/iam/role/rename.py +36 -0
  83. js7/api/joc/http/v_2_8_2/iam/role/role.py +36 -0
  84. js7/api/joc/http/v_2_8_2/iam/role/store.py +36 -0
  85. js7/api/joc/http/v_2_8_2/iam/roles/delete.py +36 -0
  86. js7/api/joc/http/v_2_8_2/iam/roles/roles.py +36 -0
  87. js7/api/joc/http/v_2_8_2/inventory/changes/changes.py +36 -0
  88. js7/api/joc/http/v_2_8_2/inventory/dependencies.py +33 -0
  89. js7/api/joc/http/v_2_8_2/inventory/deployment/deploy.py +36 -0
  90. js7/api/joc/http/v_2_8_2/inventory/deployment/import_deploy.py +66 -0
  91. js7/api/joc/http/v_2_8_2/inventory/deployment/revoke.py +36 -0
  92. js7/api/joc/http/v_2_8_2/inventory/export/export.py +36 -0
  93. js7/api/joc/http/v_2_8_2/inventory/export/folder.py +36 -0
  94. js7/api/joc/http/v_2_8_2/inventory/import_objects.py +88 -0
  95. js7/api/joc/http/v_2_8_2/inventory/releasables/recall/folder.py +36 -0
  96. js7/api/joc/http/v_2_8_2/inventory/releasables/recall/recall.py +36 -0
  97. js7/api/joc/http/v_2_8_2/inventory/release.py +36 -0
  98. js7/api/joc/http/v_2_8_2/inventory/remove/folder.py +36 -0
  99. js7/api/joc/http/v_2_8_2/inventory/remove/remove.py +36 -0
  100. js7/api/joc/http/v_2_8_2/inventory/repository/delete.py +36 -0
  101. js7/api/joc/http/v_2_8_2/inventory/repository/git/add.py +36 -0
  102. js7/api/joc/http/v_2_8_2/inventory/repository/git/checkout.py +36 -0
  103. js7/api/joc/http/v_2_8_2/inventory/repository/git/clone.py +36 -0
  104. js7/api/joc/http/v_2_8_2/inventory/repository/git/commit.py +36 -0
  105. js7/api/joc/http/v_2_8_2/inventory/repository/git/credentials/add.py +36 -0
  106. js7/api/joc/http/v_2_8_2/inventory/repository/git/credentials/credentials.py +28 -0
  107. js7/api/joc/http/v_2_8_2/inventory/repository/git/credentials/remove.py +36 -0
  108. js7/api/joc/http/v_2_8_2/inventory/repository/git/pull.py +36 -0
  109. js7/api/joc/http/v_2_8_2/inventory/repository/git/push.py +36 -0
  110. js7/api/joc/http/v_2_8_2/inventory/repository/read.py +36 -0
  111. js7/api/joc/http/v_2_8_2/inventory/repository/store.py +36 -0
  112. js7/api/joc/http/v_2_8_2/inventory/repository/update.py +36 -0
  113. js7/api/joc/http/v_2_8_2/inventory/revalidate/folder.py +36 -0
  114. js7/api/joc/http/v_2_8_2/inventory/store.py +36 -0
  115. js7/api/joc/http/v_2_8_2/inventory/trash/delete/delete.py +36 -0
  116. js7/api/joc/http/v_2_8_2/inventory/trash/delete/folder.py +36 -0
  117. js7/api/joc/http/v_2_8_2/inventory/trash/restore.py +36 -0
  118. js7/api/joc/http/v_2_8_2/inventory/validate.py +42 -0
  119. js7/api/joc/http/v_2_8_2/joc/cluster/restart.py +36 -0
  120. js7/api/joc/http/v_2_8_2/joc/cluster/run.py +36 -0
  121. js7/api/joc/http/v_2_8_2/joc/cluster/switch_member.py +36 -0
  122. js7/api/joc/http/v_2_8_2/joc/license.py +28 -0
  123. js7/api/joc/http/v_2_8_2/joc/proxies/restart.py +36 -0
  124. js7/api/joc/http/v_2_8_2/joc/version.py +28 -0
  125. js7/api/joc/http/v_2_8_2/joc/versions.py +36 -0
  126. js7/api/joc/http/v_2_8_2/orders/add.py +33 -0
  127. js7/api/joc/http/v_2_8_2/orders/cancel.py +33 -0
  128. js7/api/joc/http/v_2_8_2/orders/confirm.py +36 -0
  129. js7/api/joc/http/v_2_8_2/orders/continue.py +36 -0
  130. js7/api/joc/http/v_2_8_2/orders/history.py +36 -0
  131. js7/api/joc/http/v_2_8_2/orders/orders.py +36 -0
  132. js7/api/joc/http/v_2_8_2/orders/remove_when_terminated.py +33 -0
  133. js7/api/joc/http/v_2_8_2/orders/resume.py +36 -0
  134. js7/api/joc/http/v_2_8_2/orders/suspend.py +36 -0
  135. js7/api/joc/http/v_2_8_2/settings/settings.py +28 -0
  136. js7/api/joc/http/v_2_8_2/settings/store.py +36 -0
  137. js7/api/joc/http/v_2_8_2/tasks/history.py +36 -0
  138. js7/api/joc/http/v_2_8_2/workflow/transition.py +36 -0
  139. js7/api/joc/http/v_2_8_2/workflow/workflow.py +36 -0
  140. js7/api/joc/http/v_2_8_2/workflows/resume.py +36 -0
  141. js7/api/joc/http/v_2_8_2/workflows/skip.py +36 -0
  142. js7/api/joc/http/v_2_8_2/workflows/stop.py +36 -0
  143. js7/api/joc/http/v_2_8_2/workflows/suspend.py +36 -0
  144. js7/api/joc/http/v_2_8_2/workflows/unskip.py +36 -0
  145. js7/api/joc/http/v_2_8_2/workflows/unstop.py +36 -0
  146. js7/api/joc/http/v_2_8_2/workflows/workflows.py +36 -0
  147. js7/api/joc/interface/dispatcher.py +76 -0
  148. js7/api/joc/interface/interface.py +8 -0
  149. js7/api/joc/interface/resolver.py +75 -0
  150. js7/client/action/agent/confirm_node_loss_agent_action.py +75 -0
  151. js7/client/action/agent/delete_subagent_action.py +77 -0
  152. js7/client/action/agent/delete_subagent_clusters_action.py +75 -0
  153. js7/client/action/agent/deploy_cluster_agents_action.py +75 -0
  154. js7/client/action/agent/deploy_standalone_agents_action.py +75 -0
  155. js7/client/action/agent/deploy_subagent_clusters_action.py +75 -0
  156. js7/client/action/agent/disable_standalone_agents_action.py +75 -0
  157. js7/client/action/agent/disable_subagents_action.py +75 -0
  158. js7/client/action/agent/enable_standalone_agents_action.py +75 -0
  159. js7/client/action/agent/enable_subagents_action.py +75 -0
  160. js7/client/action/agent/export_agents_action.py +101 -0
  161. js7/client/action/agent/get_agents_status_action.py +55 -0
  162. js7/client/action/agent/import_agents_action.py +139 -0
  163. js7/client/action/agent/remove_agent_action.py +79 -0
  164. js7/client/action/agent/reset_agents_action.py +79 -0
  165. js7/client/action/agent/reset_subagent_action.py +79 -0
  166. js7/client/action/agent/revoke_cluster_agents_action.py +75 -0
  167. js7/client/action/agent/revoke_standalone_agents_action.py +75 -0
  168. js7/client/action/agent/revoke_subagent_clusters_action.py +75 -0
  169. js7/client/action/agent/store_cluster_agents_action.py +99 -0
  170. js7/client/action/agent/store_standalone_agents_action.py +87 -0
  171. js7/client/action/agent/store_subagent_clusters_action.py +83 -0
  172. js7/client/action/agent/store_subagents_action.py +97 -0
  173. js7/client/action/agent/switchover_agent_action.py +75 -0
  174. js7/client/action/controller/appoint_nodes_controller_action.py +67 -0
  175. js7/client/action/controller/cancel_and_restart_controller_action.py +72 -0
  176. js7/client/action/controller/cancel_controller_action.py +71 -0
  177. js7/client/action/controller/confirm_cluster_node_loss_action.py +68 -0
  178. js7/client/action/controller/get_controller_components_action.py +41 -0
  179. js7/client/action/controller/get_controller_status_action.py +72 -0
  180. js7/client/action/controller/register_controller_action.py +93 -0
  181. js7/client/action/controller/restart_controller_action.py +72 -0
  182. js7/client/action/controller/switchover_controller_cluster_action.py +67 -0
  183. js7/client/action/controller/terminate_controller_action.py +72 -0
  184. js7/client/action/controller/test_controller_instance_action.py +65 -0
  185. js7/client/action/controller/unregister_controller_action.py +68 -0
  186. js7/client/action/daily_plan/cancel_orders_action.py +59 -0
  187. js7/client/action/daily_plan/copy_orders_action.py +108 -0
  188. js7/client/action/daily_plan/create_projections_action.py +24 -0
  189. js7/client/action/daily_plan/delete_orders_action.py +80 -0
  190. js7/client/action/daily_plan/delete_submissions_action.py +83 -0
  191. js7/client/action/daily_plan/generate_orders_action.py +121 -0
  192. js7/client/action/daily_plan/get_calendar_projections_action.py +59 -0
  193. js7/client/action/daily_plan/get_orders_action.py +70 -0
  194. js7/client/action/daily_plan/get_projection_dates_action.py +59 -0
  195. js7/client/action/daily_plan/modify_orders_action.py +130 -0
  196. js7/client/action/daily_plan/submit_orders_action.py +79 -0
  197. js7/client/action/helper/decrypt_action.py +82 -0
  198. js7/client/action/helper/encrypt_action.py +87 -0
  199. js7/client/action/iam/block_account_action.py +71 -0
  200. js7/client/action/iam/change_account_password_action.py +96 -0
  201. js7/client/action/iam/disable_accounts_action.py +75 -0
  202. js7/client/action/iam/enable_accounts_action.py +75 -0
  203. js7/client/action/iam/get_account_permissions_action.py +75 -0
  204. js7/client/action/iam/get_accounts_action.py +76 -0
  205. js7/client/action/iam/get_blocked_accounts_action.py +76 -0
  206. js7/client/action/iam/get_folder_permissions_action.py +112 -0
  207. js7/client/action/iam/get_identity_service_settings_action.py +70 -0
  208. js7/client/action/iam/get_identity_services_action.py +102 -0
  209. js7/client/action/iam/get_permissions_action.py +113 -0
  210. js7/client/action/iam/get_roles_action.py +57 -0
  211. js7/client/action/iam/remove_accounts_action.py +75 -0
  212. js7/client/action/iam/remove_folder_permissions_action.py +91 -0
  213. js7/client/action/iam/remove_identity_service_action.py +67 -0
  214. js7/client/action/iam/remove_permissions_action.py +88 -0
  215. js7/client/action/iam/remove_roles_action.py +75 -0
  216. js7/client/action/iam/rename_account_action.py +83 -0
  217. js7/client/action/iam/rename_folder_permissions_action.py +100 -0
  218. js7/client/action/iam/rename_identity_service_action.py +75 -0
  219. js7/client/action/iam/rename_permission_action.py +103 -0
  220. js7/client/action/iam/rename_role_action.py +83 -0
  221. js7/client/action/iam/reset_account_passwords_action.py +75 -0
  222. js7/client/action/iam/set_folder_permissions_action.py +96 -0
  223. js7/client/action/iam/set_permissions_action.py +91 -0
  224. js7/client/action/iam/store_account_action.py +69 -0
  225. js7/client/action/iam/store_identity_service_action.py +75 -0
  226. js7/client/action/iam/store_identity_service_settings_action.py +74 -0
  227. js7/client/action/iam/store_role_action.py +79 -0
  228. js7/client/action/iam/unblock_accounts_action.py +67 -0
  229. js7/client/action/inventory/deploy_configurations_action.py +138 -0
  230. js7/client/action/inventory/export_configurations_action.py +203 -0
  231. js7/client/action/inventory/export_folders_action.py +160 -0
  232. js7/client/action/inventory/get_change_dependencies_action.py +161 -0
  233. js7/client/action/inventory/get_changes_action.py +59 -0
  234. js7/client/action/inventory/get_git_credentials_action.py +29 -0
  235. js7/client/action/inventory/git_add_action.py +72 -0
  236. js7/client/action/inventory/git_checkout_action.py +88 -0
  237. js7/client/action/inventory/git_clone_action.py +84 -0
  238. js7/client/action/inventory/git_commit_action.py +80 -0
  239. js7/client/action/inventory/git_pull_action.py +72 -0
  240. js7/client/action/inventory/git_push_action.py +76 -0
  241. js7/client/action/inventory/import_configurations_action.py +153 -0
  242. js7/client/action/inventory/import_deploy_configurations_action.py +188 -0
  243. js7/client/action/inventory/read_from_local_repository_action.py +67 -0
  244. js7/client/action/inventory/recall_folder_action.py +89 -0
  245. js7/client/action/inventory/recall_released_configuration_action.py +75 -0
  246. js7/client/action/inventory/release_configuartions_action.py +89 -0
  247. js7/client/action/inventory/remove_configurations_action.py +77 -0
  248. js7/client/action/inventory/remove_configurations_from_trash_action.py +80 -0
  249. js7/client/action/inventory/remove_folder_action.py +67 -0
  250. js7/client/action/inventory/remove_folder_from_trash_action.py +69 -0
  251. js7/client/action/inventory/remove_git_credentials_action.py +53 -0
  252. js7/client/action/inventory/remove_repository_configuration_action.py +84 -0
  253. js7/client/action/inventory/restore_configuration_from_trash_action.py +84 -0
  254. js7/client/action/inventory/revalidate_folder_action.py +46 -0
  255. js7/client/action/inventory/revoke_configurations_action.py +86 -0
  256. js7/client/action/inventory/store_configuration_action.py +79 -0
  257. js7/client/action/inventory/store_git_credentials_action.py +99 -0
  258. js7/client/action/inventory/store_repository_configuration_action.py +124 -0
  259. js7/client/action/inventory/update_repository_configuration_action.py +85 -0
  260. js7/client/action/inventory/validate_configuration_action.py +58 -0
  261. js7/client/action/joc/get_components_versions_action.py +57 -0
  262. js7/client/action/joc/get_license_info_action.py +22 -0
  263. js7/client/action/joc/get_settings_action.py +19 -0
  264. js7/client/action/joc/get_version_action.py +17 -0
  265. js7/client/action/joc/restart_proxies_action.py +50 -0
  266. js7/client/action/joc/restart_service_action.py +74 -0
  267. js7/client/action/joc/run_service_action.py +74 -0
  268. js7/client/action/joc/store_settings_action.py +62 -0
  269. js7/client/action/joc/switch_over_action.py +89 -0
  270. js7/client/action/order/add_orders_action.py +115 -0
  271. js7/client/action/order/cancel_orders_action.py +93 -0
  272. js7/client/action/order/confirm_orders_action.py +86 -0
  273. js7/client/action/order/continue_orders_action.py +86 -0
  274. js7/client/action/order/get_order_history_action.py +84 -0
  275. js7/client/action/order/get_orders_action.py +83 -0
  276. js7/client/action/order/remove_terminated_orders_action.py +86 -0
  277. js7/client/action/order/resume_orders_action.py +102 -0
  278. js7/client/action/order/suspend_orders_action.py +97 -0
  279. js7/client/action/task/get_task_history_info_action.py +88 -0
  280. js7/client/action/workflow/get_workflow_versions_action.py +131 -0
  281. js7/client/action/workflow/resume_workflows_action.py +76 -0
  282. js7/client/action/workflow/set_workflow_version_as_current_action.py +86 -0
  283. js7/client/action/workflow/skip_job_instructions_action.py +83 -0
  284. js7/client/action/workflow/stop_job_instructions_action.py +83 -0
  285. js7/client/action/workflow/suspend_workflows_action.py +76 -0
  286. js7/client/action/workflow/unskip_job_instructions_action.py +83 -0
  287. js7/client/action/workflow/unstop_job_instructions_action.py +79 -0
  288. js7/client/auth/auth_provider.py +109 -0
  289. js7/client/auth/login.py +34 -0
  290. js7/client/auth/logout.py +22 -0
  291. js7/client/client.py +250 -0
  292. js7/client/context.py +40 -0
  293. js7/client/feature/agent/agent.py +26 -0
  294. js7/client/feature/agent/deploy.py +134 -0
  295. js7/client/feature/agent/manage.py +363 -0
  296. js7/client/feature/agent/operate.py +577 -0
  297. js7/client/feature/controller/controller.py +19 -0
  298. js7/client/feature/controller/manage.py +214 -0
  299. js7/client/feature/controller/operate.py +274 -0
  300. js7/client/feature/daily_plan/daily_plan.py +14 -0
  301. js7/client/feature/daily_plan/manage.py +179 -0
  302. js7/client/feature/daily_plan/operate.py +354 -0
  303. js7/client/feature/iam/iam.py +14 -0
  304. js7/client/feature/iam/manage.py +1311 -0
  305. js7/client/feature/inventory/inventory.py +13 -0
  306. js7/client/feature/inventory/manage.py +943 -0
  307. js7/client/feature/inventory/manage_repository.py +533 -0
  308. js7/client/feature/joc/joc.py +18 -0
  309. js7/client/feature/joc/manage.py +102 -0
  310. js7/client/feature/joc/operate.py +185 -0
  311. js7/client/feature/order/manage.py +79 -0
  312. js7/client/feature/order/operate.py +346 -0
  313. js7/client/feature/order/order.py +18 -0
  314. js7/client/feature/task/task.py +54 -0
  315. js7/client/feature/workflow/manage.py +54 -0
  316. js7/client/feature/workflow/operate.py +336 -0
  317. js7/client/feature/workflow/workflow.py +19 -0
  318. js7/java/lib/3rd-party/bcpg-jdk15to18-1.78.1.jar +0 -0
  319. js7/java/lib/3rd-party/bcpkix-jdk15to18-1.78.1.jar +0 -0
  320. js7/java/lib/3rd-party/bcprov-jdk15to18-1.78.1.jar +0 -0
  321. js7/java/lib/3rd-party/bcutil-jdk15to18-1.78.1.jar +0 -0
  322. js7/java/lib/3rd-party/commons-io-2.15.1.jar +0 -0
  323. js7/java/lib/3rd-party/commons-lang3-3.14.0.jar +0 -0
  324. js7/java/lib/3rd-party/jackson-core-2.14.2.jar +0 -0
  325. js7/java/lib/3rd-party/jackson-databind-2.14.2.jar +0 -0
  326. js7/java/lib/3rd-party/jackson-dataformat-xml-2.14.2.jar +0 -0
  327. js7/java/lib/3rd-party/jakarta.annotation-api-2.1.1.jar +0 -0
  328. js7/java/lib/3rd-party/javax.activation-api-1.2.0.jar +0 -0
  329. js7/java/lib/3rd-party/jaxb-api-2.4.0-b180830.0359.jar +0 -0
  330. js7/java/lib/3rd-party/org.apache.logging.log4j.log4j-api-2.23.1.jar +0 -0
  331. js7/java/lib/3rd-party/org.apache.logging.log4j.log4j-core-2.23.1.jar +0 -0
  332. js7/java/lib/3rd-party/org.apache.logging.log4j.log4j-slf4j2-impl-2.23.1.jar +0 -0
  333. js7/java/lib/3rd-party/org.slf4j.slf4j-api-2.0.13.jar +0 -0
  334. js7/java/lib/3rd-party/stax2-api-4.2.1.jar +0 -0
  335. js7/java/lib/3rd-party/woodstox-core-6.5.0.jar +0 -0
  336. js7/java/lib/sos/sos-commons-encryption-2.7.3.jar +0 -0
  337. js7/java/lib/sos/sos-commons-exception-2.7.3.jar +0 -0
  338. js7/java/lib/sos/sos-commons-sign-2.7.3.jar +0 -0
  339. js7/java/lib/sos/sos-webservices-json-2.7.3.jar +0 -0
  340. js7/model/__init__.py +132 -0
  341. js7/model/configuration/auth_configuration.py +24 -0
  342. js7/model/configuration/client_configuration.py +6 -0
  343. js7/model/configuration/http_configuration.py +10 -0
  344. js7/model/error/http/joc_exceptions.py +151 -0
  345. js7/model/private/api/endpoint.py +30 -0
  346. js7/model/private/http/joc/joc_v_2_8_2.py +3666 -0
  347. js7/model/public/client/common/__init__.py +27 -0
  348. js7/model/public/client/common/accounts.py +21 -0
  349. js7/model/public/client/common/audit_log.py +8 -0
  350. js7/model/public/client/common/changes.py +18 -0
  351. js7/model/public/client/common/configurations.py +53 -0
  352. js7/model/public/client/common/cycle.py +12 -0
  353. js7/model/public/client/common/git_credentials.py +12 -0
  354. js7/model/public/client/common/identity_service.py +14 -0
  355. js7/model/public/client/common/schedule_time.py +50 -0
  356. js7/model/public/client/common/store_agents.py +96 -0
  357. js7/model/public/client/enum/__init__.py +19 -0
  358. js7/model/public/client/enum/object_types.py +48 -0
  359. js7/model/public/client/enum/operation_type.py +11 -0
  360. js7/model/public/client/enum/order_priority.py +9 -0
  361. js7/model/public/client/filter/__init__.py +35 -0
  362. js7/model/public/client/filter/daily_plan_order_filters.py +255 -0
  363. js7/model/public/client/filter/element/__init__.py +3 -0
  364. js7/model/public/client/filter/element/folder.py +6 -0
  365. js7/model/public/client/filter/element/workflow_id.py +10 -0
  366. js7/model/public/client/filter/export_filter.py +52 -0
  367. js7/model/public/client/filter/export_folders_filter.py +34 -0
  368. js7/model/public/client/filter/get_order_filter.py +59 -0
  369. js7/model/public/client/filter/order_history_filter.py +113 -0
  370. js7/model/public/client/filter/resume_order_filter.py +45 -0
  371. js7/model/public/client/filter/suspend_order_filter.py +44 -0
  372. js7/model/public/client/filter/tasks_filter.py +50 -0
  373. js7/model/public/client/input/__init__.py +2 -0
  374. js7/model/public/client/input/add_order.py +50 -0
  375. js7/service/http_service.py +206 -0
  376. js7/util/bytes_converter/bytes_to_archive_bytes.py +52 -0
  377. js7/util/bytes_converter/bytes_to_file.py +12 -0
  378. js7/util/bytes_converter/files_to_bytes.py +52 -0
  379. js7/util/bytes_converter/read_bytes_archive_files_to_bytes.py +69 -0
  380. js7/util/bytes_converter/sign_to_bytes.py +106 -0
  381. js7/util/check_matching_version.py +20 -0
  382. js7/util/detect_archive_type.py +37 -0
  383. js7/util/str_converter/order_id_to_order_name.py +5 -0
  384. js7/validator/http/joc_http_status_validator.py +155 -0
  385. js7_client_python-2.0.1.0.dist-info/LICENSE +674 -0
  386. js7_client_python-2.0.1.0.dist-info/METADATA +763 -0
  387. js7_client_python-2.0.1.0.dist-info/RECORD +389 -0
  388. js7_client_python-2.0.1.0.dist-info/WHEEL +5 -0
  389. js7_client_python-2.0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,80 @@
1
+ from typing import Optional
2
+
3
+ from ...context import Context
4
+ from ....model.public.client.common.audit_log import AuditLog
5
+ from ....model.private.api.endpoint import EndpointCall
6
+ from ....model.public.client.filter.daily_plan_order_filters import DailyPlanDeleteOrdersFilter
7
+ from ....model.private.http.joc.joc_v_2_8_2 import (
8
+ Folder as Folder_V_2_8_2,
9
+ DailyPlanDeleteOrders as DailyPlanDeleteOrders_V_2_8_2,
10
+ AuditParams as AuditParams_V_2_8_2,
11
+ OK as OK_V_2_8_2
12
+ )
13
+
14
+ from ....util.check_matching_version import check_matching_version
15
+
16
+
17
+ def delete_orders_action(
18
+ *,
19
+ context: Context,
20
+ filter: DailyPlanDeleteOrdersFilter,
21
+ audit_log: Optional[AuditLog]
22
+ ) -> bool:
23
+
24
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
25
+ request_data = _build_v_2_8_2_request(
26
+ filter=filter,
27
+ audit_log=audit_log
28
+ )
29
+ else:
30
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
31
+
32
+ # Calls the dispatcher for the matching JOC version
33
+ result = context.joc_api.dispatch(endpoint_id="daily_plan/orders/delete", call=EndpointCall(
34
+ http_service=context.http_service,
35
+ access_token=context.auth_provider.login(),
36
+ payload=request_data,
37
+ options=None
38
+ ))
39
+
40
+ if isinstance(result, OK_V_2_8_2):
41
+ return bool(result.ok)
42
+
43
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
44
+
45
+ #---------------------#
46
+ # Build 2.8.2 request #
47
+ #---------------------#
48
+ def _build_v_2_8_2_request(
49
+ *,
50
+ filter: DailyPlanDeleteOrdersFilter,
51
+ audit_log: Optional[AuditLog],
52
+ ) -> DailyPlanDeleteOrders_V_2_8_2:
53
+
54
+ # Build: audit_log
55
+ res_audit_log = AuditParams_V_2_8_2(
56
+ ticket_link=audit_log.ticket_link,
57
+ comment=audit_log.comment,
58
+ time_spent=audit_log.time_spent
59
+ ) if audit_log else None
60
+
61
+ # Result
62
+ return DailyPlanDeleteOrders_V_2_8_2(
63
+ daily_plan_date_from=filter.date_from,
64
+ daily_plan_date_to=filter.date_to,
65
+ schedule_paths=filter.schedule_paths,
66
+ schedule_folders=[
67
+ Folder_V_2_8_2(folder=f.folder_path, recursive=f.recursive)
68
+ for f in filter.schedule_folders
69
+ ] if filter.schedule_folders else None,
70
+ workflow_paths=filter.workflow_paths,
71
+ workflow_folders=[
72
+ Folder_V_2_8_2(folder=f.folder_path, recursive=f.recursive)
73
+ for f in filter.workflow_folders
74
+ ] if filter.workflow_folders else None,
75
+ controller_ids=filter.controller_ids,
76
+ order_ids=filter.order_ids,
77
+ late=filter.late,
78
+ submission_history_ids=filter.submission_history_ids,
79
+ audit_log=res_audit_log
80
+ )
@@ -0,0 +1,83 @@
1
+ from datetime import date
2
+ from typing import Optional
3
+
4
+ from ...context import Context
5
+ from ....model.public.client.common.audit_log import AuditLog
6
+ from ....model.private.api.endpoint import EndpointCall
7
+ from ....model.private.http.joc.joc_v_2_8_2 import (
8
+ AuditParams as AuditParams_V_2_8_2,
9
+ OK as OK_V_2_8_2,
10
+ SubmissionsDeleteRequest as SubmissionsDeleteRequest_V_2_8_2,
11
+ SubmissionsDeleteRequestFilter as SubmissionsDeleteRequestFilter_V_2_8_2
12
+ )
13
+
14
+ from ....util.check_matching_version import check_matching_version
15
+
16
+
17
+ def delete_submissions_action(
18
+ *,
19
+ context: Context,
20
+ controller_id: str,
21
+ filter_date_for: Optional[date],
22
+ filter_date_from: Optional[date],
23
+ filter_date_to: Optional[date],
24
+ audit_log: Optional[AuditLog]
25
+ ) -> bool:
26
+
27
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
28
+ request_data = _build_v_2_8_2_request(
29
+ controller_id=controller_id,
30
+ filter_date_for=filter_date_for,
31
+ filter_date_from=filter_date_from,
32
+ filter_date_to=filter_date_to,
33
+ audit_log=audit_log
34
+ )
35
+ else:
36
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
37
+
38
+ # Calls the dispatcher for the matching JOC version
39
+ result = context.joc_api.dispatch(endpoint_id="daily_plan/submissions/delete", call=EndpointCall(
40
+ http_service=context.http_service,
41
+ access_token=context.auth_provider.login(),
42
+ payload=request_data,
43
+ options=None
44
+ ))
45
+
46
+ if isinstance(result, OK_V_2_8_2):
47
+ return bool(result.ok)
48
+
49
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
50
+
51
+ #---------------------#
52
+ # Build 2.8.2 request #
53
+ #---------------------#
54
+ def _build_v_2_8_2_request(
55
+ *,
56
+ controller_id: str,
57
+ filter_date_for: Optional[date],
58
+ filter_date_from: Optional[date],
59
+ filter_date_to: Optional[date],
60
+ audit_log: Optional[AuditLog],
61
+ ) -> SubmissionsDeleteRequest_V_2_8_2:
62
+
63
+ # Validate: controller_id
64
+ if not controller_id:
65
+ raise ValueError("'controller_id' is required.")
66
+
67
+ # Build: audit_log
68
+ res_audit_log = AuditParams_V_2_8_2(
69
+ ticket_link=audit_log.ticket_link,
70
+ comment=audit_log.comment,
71
+ time_spent=audit_log.time_spent
72
+ ) if audit_log else None
73
+
74
+ # Result
75
+ return SubmissionsDeleteRequest_V_2_8_2(
76
+ controller_id=controller_id,
77
+ filter=SubmissionsDeleteRequestFilter_V_2_8_2(
78
+ date_for=filter_date_for,
79
+ date_from=filter_date_from,
80
+ date_to=filter_date_to
81
+ ),
82
+ audit_log=res_audit_log
83
+ )
@@ -0,0 +1,121 @@
1
+ from datetime import date, datetime
2
+ from typing import List, Optional
3
+
4
+ from ...context import Context
5
+ from ....model.public.client.common.audit_log import AuditLog
6
+ from ....model.public.client.filter.element.folder import Folder
7
+ from ....model.private.api.endpoint import EndpointCall
8
+ from ....model.private.http.joc.joc_v_2_8_2 import (
9
+ Folder as Folder_V_2_8_2,
10
+ GenerateRequest as GenerateRequest_V_2_8_2,
11
+ PathItem as PathItem_V_2_8_2,
12
+ Folder as Folder_V_2_8_2,
13
+ AuditParams as AuditParams_V_2_8_2,
14
+ OK as OK_V_2_8_2
15
+ )
16
+
17
+ from ....util.check_matching_version import check_matching_version
18
+
19
+
20
+ def generate_orders_action(
21
+ *,
22
+ context: Context,
23
+ controller_id: str,
24
+ daily_plan_dates: List[date],
25
+ schedule_folder_paths: Optional[List[Folder]],
26
+ schedule_paths: Optional[List[str]],
27
+ workflow_folder_paths: Optional[List[Folder]],
28
+ workflow_paths: Optional[List[str]],
29
+ overwrite: bool,
30
+ with_submit: bool,
31
+ include_non_auto_planned_orders: bool,
32
+ audit_log: Optional[AuditLog]
33
+ ) -> bool:
34
+
35
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
36
+ request_data = _build_v_2_8_2_request(
37
+ controller_id=controller_id,
38
+ daily_plan_dates=daily_plan_dates,
39
+ schedule_folder_paths=schedule_folder_paths,
40
+ schedule_paths=schedule_paths,
41
+ workflow_folder_paths=workflow_folder_paths,
42
+ workflow_paths=workflow_paths,
43
+ overwrite=overwrite,
44
+ with_submit=with_submit,
45
+ include_non_auto_planned_orders=include_non_auto_planned_orders,
46
+ audit_log=audit_log
47
+ )
48
+ else:
49
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
50
+
51
+ # Calls the dispatcher for the matching JOC version
52
+ result = context.joc_api.dispatch(endpoint_id="daily_plan/orders/generate", call=EndpointCall(
53
+ http_service=context.http_service,
54
+ access_token=context.auth_provider.login(),
55
+ payload=request_data,
56
+ options=None
57
+ ))
58
+
59
+ if isinstance(result, OK_V_2_8_2):
60
+ return bool(result.ok)
61
+
62
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
63
+
64
+ #---------------------#
65
+ # Build 2.8.2 request #
66
+ #---------------------#
67
+ def _build_v_2_8_2_request(
68
+ *,
69
+ controller_id: str,
70
+ daily_plan_dates: List[date],
71
+ schedule_folder_paths: Optional[List[Folder]],
72
+ schedule_paths: Optional[List[str]],
73
+ workflow_folder_paths: Optional[List[Folder]],
74
+ workflow_paths: Optional[List[str]],
75
+ overwrite: bool,
76
+ with_submit: bool,
77
+ include_non_auto_planned_orders: bool,
78
+ audit_log: Optional[AuditLog]
79
+ ) -> GenerateRequest_V_2_8_2:
80
+
81
+ # Validate: controller_id
82
+ if not controller_id:
83
+ raise ValueError("'controller_id' is required.")
84
+
85
+ # Validate: daily_plan_dates
86
+ if not daily_plan_dates:
87
+ raise ValueError("At least one date in 'daily_plan_dates' is required.")
88
+
89
+ # Build: audit_log
90
+ res_audit_log = AuditParams_V_2_8_2(
91
+ ticket_link=audit_log.ticket_link,
92
+ comment=audit_log.comment,
93
+ time_spent=audit_log.time_spent
94
+ ) if audit_log else None
95
+
96
+ # Result
97
+ return GenerateRequest_V_2_8_2(
98
+ controller_id=controller_id,
99
+ daily_plan_dates=[
100
+ datetime.combine(d, datetime.min.time())
101
+ for d in daily_plan_dates
102
+ ],
103
+ schedule_paths=PathItem_V_2_8_2(
104
+ folders=[
105
+ Folder_V_2_8_2(folder=f.folder_path, recursive=f.recursive)
106
+ for f in schedule_folder_paths
107
+ ] if schedule_folder_paths else None,
108
+ singles=schedule_paths
109
+ ),
110
+ workflow_paths=PathItem_V_2_8_2(
111
+ folders=[
112
+ Folder_V_2_8_2(folder=f.folder_path, recursive=f.recursive)
113
+ for f in workflow_folder_paths
114
+ ] if workflow_folder_paths else None,
115
+ singles=workflow_paths
116
+ ),
117
+ overwrite=overwrite,
118
+ with_submit=with_submit,
119
+ include_non_auto_planned_orders=include_non_auto_planned_orders,
120
+ audit_log=res_audit_log
121
+ )
@@ -0,0 +1,59 @@
1
+ from typing import Any, Dict
2
+
3
+ from ...context import Context
4
+ from ....model.private.api.endpoint import EndpointCall
5
+ from ....model.public.client.filter.daily_plan_order_filters import DailyPlanProjectionsFilter
6
+ from ....model.private.http.joc.joc_v_2_8_2 import (
7
+ Folder as Folder_V_2_8_2,
8
+ ProjectionsRequest as ProjectionsRequest_V_2_8_2,
9
+ ProjectionsCalendarResponse as ProjectionsCalendarResponse_V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def get_calendar_projections_action(
16
+ *,
17
+ context: Context,
18
+ filter: DailyPlanProjectionsFilter
19
+ ) -> Dict[str, Any]:
20
+
21
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
22
+ request_data = _build_v_2_8_2_request(filter)
23
+ else:
24
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
25
+
26
+ # Calls the dispatcher for the matching JOC version
27
+ result = context.joc_api.dispatch(endpoint_id="daily_plan/projections/calendar", call=EndpointCall(
28
+ http_service=context.http_service,
29
+ access_token=context.auth_provider.login(),
30
+ payload=request_data,
31
+ options=None
32
+ ))
33
+
34
+ if isinstance(result, ProjectionsCalendarResponse_V_2_8_2):
35
+ return result.model_dump(mode="json").get("years") or {}
36
+
37
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
38
+
39
+ #---------------------#
40
+ # Build 2.8.2 request #
41
+ #---------------------#
42
+ def _build_v_2_8_2_request(filter: DailyPlanProjectionsFilter) -> ProjectionsRequest_V_2_8_2:
43
+ # Result
44
+ return ProjectionsRequest_V_2_8_2(
45
+ date_from=filter.date_from,
46
+ date_to=filter.date_to,
47
+ schedule_paths=filter.schedule_paths,
48
+ schedule_folders=[
49
+ Folder_V_2_8_2(folder=f.folder_path, recursive=f.recursive)
50
+ for f in filter.schedule_folders
51
+ ] if filter.schedule_folders else None,
52
+ workflow_paths=filter.workflow_paths,
53
+ workflow_folders=[
54
+ Folder_V_2_8_2(folder=f.folder_path, recursive=f.recursive)
55
+ for f in filter.workflow_folders
56
+ ] if filter.workflow_folders else None,
57
+ without_start_time=filter.without_start_time,
58
+ controller_ids=filter.controller_ids,
59
+ )
@@ -0,0 +1,70 @@
1
+ from typing import Any, Dict
2
+
3
+ from ...context import Context
4
+ from ....model.private.api.endpoint import EndpointCall
5
+ from ....model.public.client.filter.daily_plan_order_filters import DailyPlanOrdersFilter
6
+ from ....model.private.http.joc.joc_v_2_8_2 import (
7
+ DailyPlanOrdersFilter as DailyPlanOrdersFilter_V_2_8_2,
8
+ PlannedOrders as PlannedOrders_V_2_8_2,
9
+ DailyPlanOrderStateText as DailyPlanOrderStateText_V_2_8_2,
10
+ Folder as Folder_V_2_8_2
11
+ )
12
+
13
+ from ....util.check_matching_version import check_matching_version
14
+
15
+
16
+ def get_orders_action(
17
+ *,
18
+ context: Context,
19
+ filter: DailyPlanOrdersFilter,
20
+ ) -> Dict[str, Any]:
21
+
22
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
23
+ request_data = _build_v_2_8_2_request(filter)
24
+ else:
25
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
26
+
27
+ # Calls the dispatcher for the matching JOC version
28
+ result = context.joc_api.dispatch(endpoint_id="daily_plan/orders", call=EndpointCall(
29
+ http_service=context.http_service,
30
+ access_token=context.auth_provider.login(),
31
+ payload=request_data,
32
+ options=None
33
+ ))
34
+
35
+ if isinstance(result, PlannedOrders_V_2_8_2):
36
+ return result.model_dump(mode="json")
37
+
38
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
39
+
40
+ #---------------------#
41
+ # Build 2.8.2 request #
42
+ #---------------------#
43
+ def _build_v_2_8_2_request(filter: DailyPlanOrdersFilter) -> DailyPlanOrdersFilter_V_2_8_2:
44
+ # Result
45
+ return DailyPlanOrdersFilter_V_2_8_2(
46
+ daily_plan_date_from=filter.date_from,
47
+ daily_plan_date_to=filter.date_to,
48
+ controller_ids=filter.controller_ids,
49
+ late=filter.late,
50
+ order_ids=filter.order_ids,
51
+ order_tags=filter.order_tags,
52
+ workflow_tags=filter.workflow_tags,
53
+ workflow_paths=filter.workflow_paths,
54
+ schedule_paths=filter.schedule_paths,
55
+
56
+ states=[
57
+ DailyPlanOrderStateText_V_2_8_2(s) # Returns ValueError() if invalid.
58
+ for s in filter.states
59
+ ] if filter.states else None,
60
+
61
+ schedule_folders=[
62
+ Folder_V_2_8_2(folder=f.folder_path, recursive=f.recursive)
63
+ for f in filter.schedule_folders
64
+ ] if filter.schedule_folders else None,
65
+
66
+ workflow_folders=[
67
+ Folder_V_2_8_2(folder=f.folder_path, recursive=f.recursive)
68
+ for f in filter.workflow_folders
69
+ ] if filter.workflow_folders else None
70
+ )
@@ -0,0 +1,59 @@
1
+ from typing import Any, Dict
2
+
3
+ from ...context import Context
4
+ from ....model.private.api.endpoint import EndpointCall
5
+ from ....model.public.client.filter.daily_plan_order_filters import DailyPlanProjectionsFilter
6
+ from ....model.private.http.joc.joc_v_2_8_2 import (
7
+ Folder as Folder_V_2_8_2,
8
+ ProjectionsRequest as ProjectionsRequest_V_2_8_2,
9
+ ProjectionsCalendarResponse as ProjectionsCalendarResponse_V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def get_projection_dates_action(
16
+ *,
17
+ context: Context,
18
+ filter: DailyPlanProjectionsFilter
19
+ ) -> Dict[str, Any]:
20
+
21
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
22
+ request_data = _build_v_2_8_2_request(filter)
23
+ else:
24
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
25
+
26
+ # Calls the dispatcher for the matching JOC version
27
+ result = context.joc_api.dispatch(endpoint_id="daily_plan/projections/dates", call=EndpointCall(
28
+ http_service=context.http_service,
29
+ access_token=context.auth_provider.login(),
30
+ payload=request_data,
31
+ options=None
32
+ ))
33
+
34
+ if isinstance(result, ProjectionsCalendarResponse_V_2_8_2):
35
+ return result.model_dump(mode="json").get("years") or {}
36
+
37
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
38
+
39
+ #---------------------#
40
+ # Build 2.8.2 request #
41
+ #---------------------#
42
+ def _build_v_2_8_2_request(filter: DailyPlanProjectionsFilter) -> ProjectionsRequest_V_2_8_2:
43
+ # Result
44
+ return ProjectionsRequest_V_2_8_2(
45
+ date_from=filter.date_from,
46
+ date_to=filter.date_to,
47
+ schedule_paths=filter.schedule_paths,
48
+ schedule_folders=[
49
+ Folder_V_2_8_2(folder=f.folder_path, recursive=f.recursive)
50
+ for f in filter.schedule_folders
51
+ ] if filter.schedule_folders else None,
52
+ workflow_paths=filter.workflow_paths,
53
+ workflow_folders=[
54
+ Folder_V_2_8_2(folder=f.folder_path, recursive=f.recursive)
55
+ for f in filter.workflow_folders
56
+ ] if filter.workflow_folders else None,
57
+ without_start_time=filter.without_start_time,
58
+ controller_ids=filter.controller_ids,
59
+ )
@@ -0,0 +1,130 @@
1
+ from typing import Any, Dict, List, Optional, Tuple
2
+
3
+ from ...context import Context
4
+ from ....model.public.client.common.cycle import Cycle
5
+ from ....model.public.client.common.audit_log import AuditLog
6
+ from ....model.public.client.common.schedule_time import ScheduleTime
7
+ from ....model.private.api.endpoint import EndpointCall
8
+ from ....model.private.http.joc.joc_v_2_8_2 import (
9
+ Cycle as Cycle_V_2_8_2,
10
+ AuditParams as AuditParams_V_2_8_2,
11
+ OrderIDMap200 as OrderIDMap200_V_2_8_2,
12
+ DailyPlanModifyOrder as DailyPlanModifyOrder_V_2_8_2
13
+ )
14
+
15
+ from ....util.check_matching_version import check_matching_version
16
+
17
+
18
+ def modify_orders_action(
19
+ *,
20
+ context: Context,
21
+ controller_id: str,
22
+ order_ids: List[str],
23
+ scheduled_for: Optional[ScheduleTime],
24
+ cycle: Optional[Cycle],
25
+ force_job_admission: bool,
26
+ sticky_daily_plan_date: bool,
27
+ variables: Optional[Dict[str, Any]],
28
+ remove_variables: Optional[List[str]],
29
+ start_position_label: Optional[str],
30
+ end_position_labels: Optional[List[str]],
31
+ block_position_label: Optional[str],
32
+ audit_log: Optional[AuditLog]
33
+ ) -> List[Tuple[str, str]]:
34
+
35
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
36
+ request_data = _build_v_2_8_2_request(
37
+ timezone=context.client_config.timezone,
38
+ controller_id=controller_id,
39
+ order_ids=order_ids,
40
+ scheduled_for=scheduled_for,
41
+ cycle=cycle,
42
+ force_job_admission=force_job_admission,
43
+ sticky_daily_plan_date=sticky_daily_plan_date,
44
+ variables=variables,
45
+ remove_variables=remove_variables,
46
+ start_position_label=start_position_label,
47
+ end_position_labels=end_position_labels,
48
+ block_position_label=block_position_label,
49
+ audit_log=audit_log
50
+ )
51
+ else:
52
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
53
+
54
+ # Calls the dispatcher for the matching JOC version
55
+ result = context.joc_api.dispatch(endpoint_id="daily_plan/orders/modify", call=EndpointCall(
56
+ http_service=context.http_service,
57
+ access_token=context.auth_provider.login(),
58
+ payload=request_data,
59
+ options=None
60
+ ))
61
+
62
+ if isinstance(result, OrderIDMap200_V_2_8_2):
63
+ return [
64
+ (old_id, new_id)
65
+ for old_id, new_id in result.order_ids
66
+ ] if result.order_ids else []
67
+
68
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
69
+
70
+ #---------------------#
71
+ # Build 2.8.2 request #
72
+ #---------------------#
73
+ def _build_v_2_8_2_request(
74
+ *,
75
+ timezone: str,
76
+ controller_id: str,
77
+ order_ids: List[str],
78
+ scheduled_for: Optional[ScheduleTime],
79
+ cycle: Optional[Cycle],
80
+ force_job_admission: bool,
81
+ sticky_daily_plan_date: bool,
82
+ variables: Optional[Dict[str, Any]],
83
+ remove_variables: Optional[List[str]],
84
+ start_position_label: Optional[str],
85
+ end_position_labels: Optional[List[str]],
86
+ block_position_label: Optional[str],
87
+ audit_log: Optional[AuditLog]
88
+ ) -> DailyPlanModifyOrder_V_2_8_2:
89
+
90
+ # Validate: timezone
91
+ if not timezone:
92
+ raise ValueError("'timezone' is required in client config.")
93
+
94
+ # Validate: controller_id
95
+ if not controller_id:
96
+ raise ValueError("'controller_id' is required.")
97
+
98
+ # Validate: order_ids
99
+ if not order_ids:
100
+ raise ValueError("At least one order id in 'order_ids' is required.")
101
+
102
+ # Build: audit_log
103
+ res_audit_log = AuditParams_V_2_8_2(
104
+ ticket_link=audit_log.ticket_link,
105
+ comment=audit_log.comment,
106
+ time_spent=audit_log.time_spent
107
+ ) if audit_log else None
108
+
109
+ # Result
110
+ return DailyPlanModifyOrder_V_2_8_2(
111
+ time_zone=timezone,
112
+ controller_id=controller_id,
113
+ order_ids=order_ids,
114
+ scheduled_for=scheduled_for.value if scheduled_for else None,
115
+ cycle=Cycle_V_2_8_2(
116
+ begin=str(cycle.begin),
117
+ end=str(cycle.end),
118
+ repeat=str(cycle.repeat)
119
+ ) if cycle else None,
120
+ force_job_admission=force_job_admission,
121
+ stick_daily_plan_date=sticky_daily_plan_date,
122
+ variables=variables,
123
+ remove_variables=remove_variables,
124
+ start_position=start_position_label,
125
+ end_positions=[
126
+ p for p in end_position_labels
127
+ ] if end_position_labels else None, # Linter Trick.
128
+ block_position=block_position_label,
129
+ audit_log=res_audit_log
130
+ )
@@ -0,0 +1,79 @@
1
+ from typing import Optional
2
+
3
+ from ...context import Context
4
+ from ....model.public.client.filter.daily_plan_order_filters import DailyPlanSubmitOrderFilter
5
+ from ....model.public.client.common.audit_log import AuditLog
6
+ from ....model.private.api.endpoint import EndpointCall
7
+ from ....model.private.http.joc.joc_v_2_8_2 import (
8
+ Folder as Folder_V_2_8_2,
9
+ DailyPlanSubmitOrders as DailyPlanSubmitOrders_V_2_8_2,
10
+ AuditParams as AuditParams_V_2_8_2,
11
+ OK as OK_V_2_8_2
12
+ )
13
+
14
+ from ....util.check_matching_version import check_matching_version
15
+
16
+
17
+ def submit_orders_action(
18
+ *,
19
+ context: Context,
20
+ filter: DailyPlanSubmitOrderFilter,
21
+ audit_log: Optional[AuditLog]
22
+ ) -> bool:
23
+
24
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
25
+ request_data = _build_v_2_8_2_request(
26
+ filter=filter,
27
+ audit_log=audit_log
28
+ )
29
+ else:
30
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
31
+
32
+ # Calls the dispatcher for the matching JOC version
33
+ result = context.joc_api.dispatch(endpoint_id="daily_plan/orders/submit", call=EndpointCall(
34
+ http_service=context.http_service,
35
+ access_token=context.auth_provider.login(),
36
+ payload=request_data,
37
+ options=None
38
+ ))
39
+
40
+ if isinstance(result, OK_V_2_8_2):
41
+ return bool(result.ok)
42
+
43
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
44
+
45
+ #---------------------#
46
+ # Build 2.8.2 request #
47
+ #---------------------#
48
+ def _build_v_2_8_2_request(
49
+ *,
50
+ filter: DailyPlanSubmitOrderFilter,
51
+ audit_log: Optional[AuditLog]
52
+ ) -> DailyPlanSubmitOrders_V_2_8_2:
53
+
54
+ # Build: audit_log
55
+ res_audit_log = AuditParams_V_2_8_2(
56
+ ticket_link=audit_log.ticket_link,
57
+ comment=audit_log.comment,
58
+ time_spent=audit_log.time_spent
59
+ ) if audit_log else None
60
+
61
+ # Result
62
+ return DailyPlanSubmitOrders_V_2_8_2(
63
+ daily_plan_date_from=filter.date_from,
64
+ daily_plan_date_to=filter.date_to,
65
+ schedule_paths=filter.schedule_paths,
66
+ schedule_folders=[
67
+ Folder_V_2_8_2(folder=f.folder_path, recursive=f.recursive)
68
+ for f in filter.schedule_folders
69
+ ] if filter.schedule_folders else None,
70
+ workflow_paths=filter.workflow_paths,
71
+ workflow_folders=[
72
+ Folder_V_2_8_2(folder=f.folder_path, recursive=f.recursive)
73
+ for f in filter.workflow_folders
74
+ ] if filter.workflow_folders else None,
75
+ controller_ids=filter.controller_ids,
76
+ order_ids=filter.order_ids,
77
+ submission_history_ids=filter.submission_history_ids,
78
+ audit_log=res_audit_log
79
+ )