ecoportal-api-graphql 2.0.0 → 2.2.0

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 (355) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +363 -1
  3. data/LICENSE +21 -21
  4. data/README.md +24 -24
  5. data/lib/ecoportal/api/common/graphql/auth_service.rb +115 -115
  6. data/lib/ecoportal/api/common/graphql/class_helpers.rb +46 -46
  7. data/lib/ecoportal/api/common/graphql/client.rb +69 -69
  8. data/lib/ecoportal/api/common/graphql/hash_helpers.rb +105 -105
  9. data/lib/ecoportal/api/common/graphql/http_client.rb +85 -2
  10. data/lib/ecoportal/api/common/graphql/model/as_input.rb +54 -54
  11. data/lib/ecoportal/api/common/graphql/model/diffable/classic_diff_service.rb +49 -49
  12. data/lib/ecoportal/api/common/graphql/model/diffable/diff_service.rb +188 -188
  13. data/lib/ecoportal/api/common/graphql/model/diffable/hash_diff.rb +55 -55
  14. data/lib/ecoportal/api/common/graphql/model/diffable/hash_diff_nesting.rb +295 -295
  15. data/lib/ecoportal/api/common/graphql/model.rb +17 -17
  16. data/lib/ecoportal/api/common/graphql/patches.rb +1 -1
  17. data/lib/ecoportal/api/common/graphql/query_integration.rb +45 -45
  18. data/lib/ecoportal/api/common/graphql.rb +16 -16
  19. data/lib/ecoportal/api/common.graphql.rb +8 -8
  20. data/lib/ecoportal/api/graphql/base/action_category.rb +15 -15
  21. data/lib/ecoportal/api/graphql/base/ai_summary_version.rb +1 -1
  22. data/lib/ecoportal/api/graphql/base/contractor_entity.rb +24 -24
  23. data/lib/ecoportal/api/graphql/base/date_time.rb +12 -12
  24. data/lib/ecoportal/api/graphql/base/delta_result.rb +16 -16
  25. data/lib/ecoportal/api/graphql/base/field.rb +12 -12
  26. data/lib/ecoportal/api/graphql/base/file_attachment.rb +15 -15
  27. data/lib/ecoportal/api/graphql/base/location_node.rb +14 -14
  28. data/lib/ecoportal/api/graphql/base/location_structure/draft/structure.rb +37 -37
  29. data/lib/ecoportal/api/graphql/base/location_structure/draft.rb +93 -93
  30. data/lib/ecoportal/api/graphql/base/page/data_field/actions_list.rb +9 -9
  31. data/lib/ecoportal/api/graphql/base/page/data_field/ai_summary.rb +18 -18
  32. data/lib/ecoportal/api/graphql/base/page/data_field/checklist.rb +29 -29
  33. data/lib/ecoportal/api/graphql/base/page/data_field/cross_reference.rb +1 -1
  34. data/lib/ecoportal/api/graphql/base/page/data_field/date_field.rb +23 -23
  35. data/lib/ecoportal/api/graphql/base/page/data_field/geo.rb +24 -24
  36. data/lib/ecoportal/api/graphql/base/page/data_field/image_gallery.rb +1 -1
  37. data/lib/ecoportal/api/graphql/base/page/data_field/law.rb +8 -8
  38. data/lib/ecoportal/api/graphql/base/page/data_field/mailbox.rb +9 -9
  39. data/lib/ecoportal/api/graphql/base/page/data_field/plain_text.rb +17 -17
  40. data/lib/ecoportal/api/graphql/base/page/data_field/rich_text.rb +26 -26
  41. data/lib/ecoportal/api/graphql/base/page/data_field/signature.rb +9 -9
  42. data/lib/ecoportal/api/graphql/base/page/data_field/smart_fill.rb +17 -17
  43. data/lib/ecoportal/api/graphql/base/page/data_field/table.rb +9 -9
  44. data/lib/ecoportal/api/graphql/base/page/data_field/tag_field.rb +21 -21
  45. data/lib/ecoportal/api/graphql/base/page/phased/stage.rb +51 -0
  46. data/lib/ecoportal/api/graphql/base/page/phased.rb +15 -15
  47. data/lib/ecoportal/api/graphql/base/page/section.rb +48 -48
  48. data/lib/ecoportal/api/graphql/base/page_info.rb +12 -12
  49. data/lib/ecoportal/api/graphql/base/pages_workflow/operation_interface.rb +39 -39
  50. data/lib/ecoportal/api/graphql/base/pages_workflow/operations/assign_to.rb +27 -27
  51. data/lib/ecoportal/api/graphql/base/pages_workflow/operations/send_notification.rb +30 -30
  52. data/lib/ecoportal/api/graphql/base/pages_workflow/recipient_config.rb +34 -34
  53. data/lib/ecoportal/api/graphql/base/pages_workflow.rb +35 -35
  54. data/lib/ecoportal/api/graphql/base/person_member.rb +22 -22
  55. data/lib/ecoportal/api/graphql/base/preview_page.rb +23 -23
  56. data/lib/ecoportal/api/graphql/base/register.rb +1 -1
  57. data/lib/ecoportal/api/graphql/base/resource.rb +13 -13
  58. data/lib/ecoportal/api/graphql/base/template/change_log_entry.rb +118 -0
  59. data/lib/ecoportal/api/graphql/base/template.rb +2 -0
  60. data/lib/ecoportal/api/graphql/builder/action.rb +41 -41
  61. data/lib/ecoportal/api/graphql/builder/location_structure/draft.rb +64 -64
  62. data/lib/ecoportal/api/graphql/builder/location_structure.rb +40 -40
  63. data/lib/ecoportal/api/graphql/builder/register/preset_view.rb +84 -84
  64. data/lib/ecoportal/api/graphql/builder/register.rb +49 -49
  65. data/lib/ecoportal/api/graphql/builder/template.rb +28 -0
  66. data/lib/ecoportal/api/graphql/builder/template_builder.rb +21 -2
  67. data/lib/ecoportal/api/graphql/compat/page_reference.rb +23 -23
  68. data/lib/ecoportal/api/graphql/compat/registers.rb +84 -84
  69. data/lib/ecoportal/api/graphql/compat/search_results.rb +33 -33
  70. data/lib/ecoportal/api/graphql/compat.rb +17 -17
  71. data/lib/ecoportal/api/graphql/concerns/data_field_access.rb +71 -71
  72. data/lib/ecoportal/api/graphql/concerns/fragment_definitions.rb +68 -68
  73. data/lib/ecoportal/api/graphql/concerns/snake_camel_access.rb +60 -60
  74. data/lib/ecoportal/api/graphql/connection/preset_view.rb +11 -11
  75. data/lib/ecoportal/api/graphql/connection/template_change_log.rb +19 -0
  76. data/lib/ecoportal/api/graphql/connection.rb +1 -0
  77. data/lib/ecoportal/api/graphql/diff/change.rb +7 -2
  78. data/lib/ecoportal/api/graphql/diff/command_synthesizer.rb +19 -1
  79. data/lib/ecoportal/api/graphql/diff/version_diff.rb +13 -6
  80. data/lib/ecoportal/api/graphql/error/locations_error/fetch_nested.rb +51 -51
  81. data/lib/ecoportal/api/graphql/error/locations_error.rb +28 -28
  82. data/lib/ecoportal/api/graphql/error/locations_validation_error.rb +20 -20
  83. data/lib/ecoportal/api/graphql/error/validation_errors.rb +28 -28
  84. data/lib/ecoportal/api/graphql/error.rb +12 -12
  85. data/lib/ecoportal/api/graphql/file_upload.rb +10 -10
  86. data/lib/ecoportal/api/graphql/fragment/action.rb +65 -65
  87. data/lib/ecoportal/api/graphql/fragment/action_category.rb +17 -17
  88. data/lib/ecoportal/api/graphql/fragment/contractor_entity.rb +20 -20
  89. data/lib/ecoportal/api/graphql/fragment/locations_error.rb +19 -19
  90. data/lib/ecoportal/api/graphql/fragment/page.rb +1 -0
  91. data/lib/ecoportal/api/graphql/fragment/pages/common_page_union.rb +2 -0
  92. data/lib/ecoportal/api/graphql/fragment/pages.rb +15 -15
  93. data/lib/ecoportal/api/graphql/fragment/pagination.rb +17 -17
  94. data/lib/ecoportal/api/graphql/fragment/template_change_log.rb +102 -0
  95. data/lib/ecoportal/api/graphql/fragment.rb +1 -0
  96. data/lib/ecoportal/api/graphql/helpers/locations_tree.rb +41 -41
  97. data/lib/ecoportal/api/graphql/helpers.rb +10 -10
  98. data/lib/ecoportal/api/graphql/input/action/archive.rb +14 -14
  99. data/lib/ecoportal/api/graphql/input/action/create.rb +13 -13
  100. data/lib/ecoportal/api/graphql/input/action.rb +14 -14
  101. data/lib/ecoportal/api/graphql/input/contractor_entity/create.rb +14 -14
  102. data/lib/ecoportal/api/graphql/input/contractor_entity/destroy.rb +13 -13
  103. data/lib/ecoportal/api/graphql/input/delta_input.rb +16 -16
  104. data/lib/ecoportal/api/graphql/input/id_diff.rb +11 -11
  105. data/lib/ecoportal/api/graphql/input/location_structure/archive_command.rb +13 -13
  106. data/lib/ecoportal/api/graphql/input/location_structure/delete_command.rb +13 -13
  107. data/lib/ecoportal/api/graphql/input/location_structure/draft/create.rb +15 -15
  108. data/lib/ecoportal/api/graphql/input/location_structure/draft/delete.rb +15 -15
  109. data/lib/ecoportal/api/graphql/input/location_structure/draft/drop_bad_commands.rb +16 -16
  110. data/lib/ecoportal/api/graphql/input/location_structure/draft/publish.rb +16 -16
  111. data/lib/ecoportal/api/graphql/input/location_structure/draft.rb +19 -19
  112. data/lib/ecoportal/api/graphql/input/location_structure/insert_command.rb +21 -13
  113. data/lib/ecoportal/api/graphql/input/location_structure/move_command.rb +14 -14
  114. data/lib/ecoportal/api/graphql/input/location_structure/reorder_command.rb +13 -13
  115. data/lib/ecoportal/api/graphql/input/location_structure/unarchive_command.rb +13 -13
  116. data/lib/ecoportal/api/graphql/input/location_structure.rb +20 -20
  117. data/lib/ecoportal/api/graphql/input/page/archive.rb +14 -14
  118. data/lib/ecoportal/api/graphql/input/page/build_from_template.rb +13 -13
  119. data/lib/ecoportal/api/graphql/input/page/create_draft.rb +13 -13
  120. data/lib/ecoportal/api/graphql/input/page/create_from_template.rb +18 -18
  121. data/lib/ecoportal/api/graphql/input/page/delete_draft.rb +13 -13
  122. data/lib/ecoportal/api/graphql/input/page/publish_draft.rb +13 -13
  123. data/lib/ecoportal/api/graphql/input/page/review_task.rb +27 -14
  124. data/lib/ecoportal/api/graphql/input/page/unarchive.rb +14 -14
  125. data/lib/ecoportal/api/graphql/input/page.rb +26 -26
  126. data/lib/ecoportal/api/graphql/input/preset_view/create.rb +18 -18
  127. data/lib/ecoportal/api/graphql/input/preset_view/permission.rb +16 -16
  128. data/lib/ecoportal/api/graphql/input/preset_view/update.rb +1 -1
  129. data/lib/ecoportal/api/graphql/input/preset_view.rb +14 -14
  130. data/lib/ecoportal/api/graphql/input/register/create.rb +18 -18
  131. data/lib/ecoportal/api/graphql/input/register/update.rb +15 -15
  132. data/lib/ecoportal/api/graphql/input/register.rb +13 -13
  133. data/lib/ecoportal/api/graphql/input/search.rb +13 -13
  134. data/lib/ecoportal/api/graphql/input/search_conf/ai_generator.rb +234 -234
  135. data/lib/ecoportal/api/graphql/input/search_filter.rb +12 -12
  136. data/lib/ecoportal/api/graphql/input/search_sorter.rb +11 -11
  137. data/lib/ecoportal/api/graphql/input/workflow_command/add_action_tag.rb +18 -18
  138. data/lib/ecoportal/api/graphql/input/workflow_command/add_binding.rb +18 -18
  139. data/lib/ecoportal/api/graphql/input/workflow_command/add_comment_tagging_user_group.rb +18 -18
  140. data/lib/ecoportal/api/graphql/input/workflow_command/add_default_direct_strategy_user.rb +18 -18
  141. data/lib/ecoportal/api/graphql/input/workflow_command/add_default_strategy.rb +18 -18
  142. data/lib/ecoportal/api/graphql/input/workflow_command/add_direct_strategy_user.rb +18 -18
  143. data/lib/ecoportal/api/graphql/input/workflow_command/add_field.rb +10 -9
  144. data/lib/ecoportal/api/graphql/input/workflow_command/add_force.rb +18 -18
  145. data/lib/ecoportal/api/graphql/input/workflow_command/add_linked_field_config.rb +23 -23
  146. data/lib/ecoportal/api/graphql/input/workflow_command/add_linked_helper.rb +18 -18
  147. data/lib/ecoportal/api/graphql/input/workflow_command/add_operation.rb +18 -18
  148. data/lib/ecoportal/api/graphql/input/workflow_command/add_operation_direct_strategy_user.rb +18 -18
  149. data/lib/ecoportal/api/graphql/input/workflow_command/add_operation_strategy.rb +18 -18
  150. data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_action_type.rb +18 -18
  151. data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_filter.rb +18 -18
  152. data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_people_field.rb +18 -18
  153. data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_task_config.rb +18 -18
  154. data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_user.rb +18 -18
  155. data/lib/ecoportal/api/graphql/input/workflow_command/add_scheduled_callback.rb +23 -23
  156. data/lib/ecoportal/api/graphql/input/workflow_command/add_scheduled_callback_action.rb +18 -18
  157. data/lib/ecoportal/api/graphql/input/workflow_command/add_section.rb +18 -18
  158. data/lib/ecoportal/api/graphql/input/workflow_command/add_select_field_option.rb +25 -19
  159. data/lib/ecoportal/api/graphql/input/workflow_command/add_stage_section.rb +18 -18
  160. data/lib/ecoportal/api/graphql/input/workflow_command/add_stage_tag.rb +18 -18
  161. data/lib/ecoportal/api/graphql/input/workflow_command/add_strategy.rb +18 -18
  162. data/lib/ecoportal/api/graphql/input/workflow_command/add_task.rb +18 -18
  163. data/lib/ecoportal/api/graphql/input/workflow_command/add_task_assignment_user_group.rb +18 -18
  164. data/lib/ecoportal/api/graphql/input/workflow_command/add_workflow_callback.rb +18 -18
  165. data/lib/ecoportal/api/graphql/input/workflow_command/collapse_section.rb +18 -18
  166. data/lib/ecoportal/api/graphql/input/workflow_command/edit_binding.rb +18 -18
  167. data/lib/ecoportal/api/graphql/input/workflow_command/edit_creator_permissions.rb +18 -18
  168. data/lib/ecoportal/api/graphql/input/workflow_command/edit_default_strategy.rb +18 -18
  169. data/lib/ecoportal/api/graphql/input/workflow_command/edit_field_configuration.rb +7 -2
  170. data/lib/ecoportal/api/graphql/input/workflow_command/edit_force.rb +21 -18
  171. data/lib/ecoportal/api/graphql/input/workflow_command/edit_gauge_field_stop.rb +19 -19
  172. data/lib/ecoportal/api/graphql/input/workflow_command/edit_linked_field_config.rb +19 -19
  173. data/lib/ecoportal/api/graphql/input/workflow_command/edit_linked_helper.rb +18 -18
  174. data/lib/ecoportal/api/graphql/input/workflow_command/edit_operation.rb +18 -18
  175. data/lib/ecoportal/api/graphql/input/workflow_command/edit_operation_strategy.rb +18 -18
  176. data/lib/ecoportal/api/graphql/input/workflow_command/edit_reminder.rb +18 -18
  177. data/lib/ecoportal/api/graphql/input/workflow_command/edit_required_sign_offs.rb +18 -18
  178. data/lib/ecoportal/api/graphql/input/workflow_command/edit_restrict_comment_tagging.rb +18 -18
  179. data/lib/ecoportal/api/graphql/input/workflow_command/edit_restrict_task_assignment.rb +18 -18
  180. data/lib/ecoportal/api/graphql/input/workflow_command/edit_scheduled_callback.rb +22 -22
  181. data/lib/ecoportal/api/graphql/input/workflow_command/edit_section_header.rb +18 -18
  182. data/lib/ecoportal/api/graphql/input/workflow_command/edit_select_field_option.rb +23 -19
  183. data/lib/ecoportal/api/graphql/input/workflow_command/edit_stage.rb +18 -18
  184. data/lib/ecoportal/api/graphql/input/workflow_command/edit_strategy.rb +18 -18
  185. data/lib/ecoportal/api/graphql/input/workflow_command/edit_task_due.rb +18 -18
  186. data/lib/ecoportal/api/graphql/input/workflow_command/edit_template_basic_settings.rb +7 -2
  187. data/lib/ecoportal/api/graphql/input/workflow_command/edit_trigger.rb +18 -18
  188. data/lib/ecoportal/api/graphql/input/workflow_command/expand_section.rb +18 -18
  189. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/contractor_entities.rb +28 -24
  190. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/cross_reference.rb +8 -2
  191. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/gauge.rb +20 -20
  192. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/location_field.rb +24 -24
  193. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/plain_text.rb +8 -2
  194. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/signature.rb +20 -20
  195. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/table.rb +25 -25
  196. data/lib/ecoportal/api/graphql/input/workflow_command/manage_copy_page_configuration.rb +47 -0
  197. data/lib/ecoportal/api/graphql/input/workflow_command/move_stage.rb +18 -18
  198. data/lib/ecoportal/api/graphql/input/workflow_command/remove_action_tag.rb +18 -18
  199. data/lib/ecoportal/api/graphql/input/workflow_command/remove_binding.rb +18 -18
  200. data/lib/ecoportal/api/graphql/input/workflow_command/remove_callback.rb +18 -18
  201. data/lib/ecoportal/api/graphql/input/workflow_command/remove_comment_tagging_user_group.rb +18 -18
  202. data/lib/ecoportal/api/graphql/input/workflow_command/remove_default_direct_strategy_user.rb +18 -18
  203. data/lib/ecoportal/api/graphql/input/workflow_command/remove_default_strategy.rb +18 -18
  204. data/lib/ecoportal/api/graphql/input/workflow_command/remove_direct_strategy_user.rb +18 -18
  205. data/lib/ecoportal/api/graphql/input/workflow_command/remove_field.rb +18 -18
  206. data/lib/ecoportal/api/graphql/input/workflow_command/remove_force.rb +18 -18
  207. data/lib/ecoportal/api/graphql/input/workflow_command/remove_linked_helper.rb +18 -18
  208. data/lib/ecoportal/api/graphql/input/workflow_command/remove_operation.rb +18 -18
  209. data/lib/ecoportal/api/graphql/input/workflow_command/remove_operation_direct_strategy_user.rb +18 -18
  210. data/lib/ecoportal/api/graphql/input/workflow_command/remove_operation_strategy.rb +18 -18
  211. data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_action_type.rb +18 -18
  212. data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_filter.rb +18 -18
  213. data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_people_field.rb +18 -18
  214. data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_task_config.rb +18 -18
  215. data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_user.rb +18 -18
  216. data/lib/ecoportal/api/graphql/input/workflow_command/remove_scheduled_callback.rb +18 -18
  217. data/lib/ecoportal/api/graphql/input/workflow_command/remove_section.rb +18 -18
  218. data/lib/ecoportal/api/graphql/input/workflow_command/remove_stage.rb +18 -18
  219. data/lib/ecoportal/api/graphql/input/workflow_command/remove_stage_section.rb +18 -18
  220. data/lib/ecoportal/api/graphql/input/workflow_command/remove_stage_tag.rb +18 -18
  221. data/lib/ecoportal/api/graphql/input/workflow_command/remove_strategy.rb +18 -18
  222. data/lib/ecoportal/api/graphql/input/workflow_command/remove_task.rb +18 -18
  223. data/lib/ecoportal/api/graphql/input/workflow_command/remove_task_assignment_user_group.rb +18 -18
  224. data/lib/ecoportal/api/graphql/input/workflow_command/remove_task_due.rb +18 -18
  225. data/lib/ecoportal/api/graphql/input/workflow_command/remove_task_priority_level.rb +18 -18
  226. data/lib/ecoportal/api/graphql/input/workflow_command.rb +3 -0
  227. data/lib/ecoportal/api/graphql/interface/base_page.rb +14 -0
  228. data/lib/ecoportal/api/graphql/interface/location_structure/node.rb +43 -43
  229. data/lib/ecoportal/api/graphql/interface/location_structure.rb +14 -14
  230. data/lib/ecoportal/api/graphql/interface.rb +11 -11
  231. data/lib/ecoportal/api/graphql/logic/base_model.rb +15 -15
  232. data/lib/ecoportal/api/graphql/logic/base_query.rb +260 -193
  233. data/lib/ecoportal/api/graphql/logic/mutation.rb +59 -59
  234. data/lib/ecoportal/api/graphql/logic/payload.rb +42 -42
  235. data/lib/ecoportal/api/graphql/logic/query.rb +23 -23
  236. data/lib/ecoportal/api/graphql/logic/query_array.rb +30 -30
  237. data/lib/ecoportal/api/graphql/logic/query_connection.rb +48 -48
  238. data/lib/ecoportal/api/graphql/logic.rb +18 -18
  239. data/lib/ecoportal/api/graphql/model/account.rb +15 -15
  240. data/lib/ecoportal/api/graphql/model/action.rb +22 -22
  241. data/lib/ecoportal/api/graphql/model/ai_summary_version.rb +10 -10
  242. data/lib/ecoportal/api/graphql/model/contractor_entity.rb +12 -12
  243. data/lib/ecoportal/api/graphql/model/field.rb +10 -10
  244. data/lib/ecoportal/api/graphql/model/file_attachment.rb +10 -10
  245. data/lib/ecoportal/api/graphql/model/file_container.rb +11 -11
  246. data/lib/ecoportal/api/graphql/model/location_node.rb +14 -14
  247. data/lib/ecoportal/api/graphql/model/location_structure/draft/structure.rb +15 -15
  248. data/lib/ecoportal/api/graphql/model/location_structure/draft.rb +15 -15
  249. data/lib/ecoportal/api/graphql/model/location_structure.rb +16 -16
  250. data/lib/ecoportal/api/graphql/model/organization.rb +9 -0
  251. data/lib/ecoportal/api/graphql/model/page/basic.rb +14 -14
  252. data/lib/ecoportal/api/graphql/model/page/data_field.rb +12 -12
  253. data/lib/ecoportal/api/graphql/model/page/phased/stage.rb +14 -14
  254. data/lib/ecoportal/api/graphql/model/page/phased.rb +17 -0
  255. data/lib/ecoportal/api/graphql/model/page/section.rb +12 -12
  256. data/lib/ecoportal/api/graphql/model/page_union.rb +21 -21
  257. data/lib/ecoportal/api/graphql/model/pages_workflow.rb +20 -20
  258. data/lib/ecoportal/api/graphql/model/preset_view.rb +10 -10
  259. data/lib/ecoportal/api/graphql/model/preview_page.rb +10 -10
  260. data/lib/ecoportal/api/graphql/model/register.rb +10 -10
  261. data/lib/ecoportal/api/graphql/model/resource.rb +13 -13
  262. data/lib/ecoportal/api/graphql/model/template/change_log_entry.rb +19 -0
  263. data/lib/ecoportal/api/graphql/model/template.rb +4 -1
  264. data/lib/ecoportal/api/graphql/model/user.rb +14 -14
  265. data/lib/ecoportal/api/graphql/mutation/action/archive.rb +41 -41
  266. data/lib/ecoportal/api/graphql/mutation/action/create.rb +40 -40
  267. data/lib/ecoportal/api/graphql/mutation/action/update.rb +40 -40
  268. data/lib/ecoportal/api/graphql/mutation/action.rb +14 -14
  269. data/lib/ecoportal/api/graphql/mutation/ai_summary/generate.rb +1 -1
  270. data/lib/ecoportal/api/graphql/mutation/ai_summary/submit_feedback.rb +1 -1
  271. data/lib/ecoportal/api/graphql/mutation/ai_summary.rb +13 -13
  272. data/lib/ecoportal/api/graphql/mutation/contractor_entity/create.rb +40 -40
  273. data/lib/ecoportal/api/graphql/mutation/contractor_entity/destroy.rb +40 -40
  274. data/lib/ecoportal/api/graphql/mutation/contractor_entity/update.rb +40 -40
  275. data/lib/ecoportal/api/graphql/mutation/location_structure/apply_commands.rb +54 -54
  276. data/lib/ecoportal/api/graphql/mutation/location_structure/draft/add_commands.rb +55 -55
  277. data/lib/ecoportal/api/graphql/mutation/location_structure/draft/create.rb +54 -54
  278. data/lib/ecoportal/api/graphql/mutation/location_structure/draft/delete.rb +43 -43
  279. data/lib/ecoportal/api/graphql/mutation/location_structure/draft/drop_bad_commands.rb +56 -56
  280. data/lib/ecoportal/api/graphql/mutation/location_structure/draft/publish.rb +66 -66
  281. data/lib/ecoportal/api/graphql/mutation/location_structure/draft.rb +18 -18
  282. data/lib/ecoportal/api/graphql/mutation/location_structure.rb +13 -13
  283. data/lib/ecoportal/api/graphql/mutation/page/approve_review_task.rb +1 -1
  284. data/lib/ecoportal/api/graphql/mutation/page/archive.rb +40 -40
  285. data/lib/ecoportal/api/graphql/mutation/page/batch_update_review_task.rb +1 -1
  286. data/lib/ecoportal/api/graphql/mutation/page/build_from_template.rb +50 -50
  287. data/lib/ecoportal/api/graphql/mutation/page/create_draft.rb +1 -1
  288. data/lib/ecoportal/api/graphql/mutation/page/create_from_template.rb +43 -43
  289. data/lib/ecoportal/api/graphql/mutation/page/delete_draft.rb +1 -1
  290. data/lib/ecoportal/api/graphql/mutation/page/publish_draft.rb +1 -1
  291. data/lib/ecoportal/api/graphql/mutation/page/reject_review_task.rb +1 -1
  292. data/lib/ecoportal/api/graphql/mutation/page/restart_review_task.rb +1 -1
  293. data/lib/ecoportal/api/graphql/mutation/page/unarchive.rb +40 -40
  294. data/lib/ecoportal/api/graphql/mutation/page/undo_review_task.rb +1 -1
  295. data/lib/ecoportal/api/graphql/mutation/page/update.rb +40 -40
  296. data/lib/ecoportal/api/graphql/mutation/page.rb +28 -28
  297. data/lib/ecoportal/api/graphql/mutation/preset_view/create.rb +35 -35
  298. data/lib/ecoportal/api/graphql/mutation/preset_view/destroy.rb +1 -1
  299. data/lib/ecoportal/api/graphql/mutation/preset_view/permission.rb +37 -37
  300. data/lib/ecoportal/api/graphql/mutation/preset_view/update.rb +35 -35
  301. data/lib/ecoportal/api/graphql/mutation/preset_view.rb +15 -15
  302. data/lib/ecoportal/api/graphql/mutation/register/create.rb +35 -35
  303. data/lib/ecoportal/api/graphql/mutation/register/destroy.rb +1 -1
  304. data/lib/ecoportal/api/graphql/mutation/register/update.rb +35 -35
  305. data/lib/ecoportal/api/graphql/mutation/register.rb +14 -14
  306. data/lib/ecoportal/api/graphql/payload/action/archive.rb +13 -13
  307. data/lib/ecoportal/api/graphql/payload/action/create.rb +13 -13
  308. data/lib/ecoportal/api/graphql/payload/action/update.rb +13 -13
  309. data/lib/ecoportal/api/graphql/payload/action.rb +14 -14
  310. data/lib/ecoportal/api/graphql/payload/ai_summary_generate.rb +12 -12
  311. data/lib/ecoportal/api/graphql/payload/contractor_entity/create.rb +13 -13
  312. data/lib/ecoportal/api/graphql/payload/contractor_entity/destroy.rb +12 -12
  313. data/lib/ecoportal/api/graphql/payload/contractor_entity/update.rb +12 -12
  314. data/lib/ecoportal/api/graphql/payload/kickstand/bulk_update_jobs.rb +2 -2
  315. data/lib/ecoportal/api/graphql/payload/kickstand/bulk_update_workflows.rb +2 -2
  316. data/lib/ecoportal/api/graphql/payload/location_structure/apply_commands.rb +51 -51
  317. data/lib/ecoportal/api/graphql/payload/location_structure/command_execution_result.rb +50 -50
  318. data/lib/ecoportal/api/graphql/payload/location_structure/draft/add_commands.rb +30 -30
  319. data/lib/ecoportal/api/graphql/payload/location_structure/draft/delete.rb +30 -30
  320. data/lib/ecoportal/api/graphql/payload/location_structure/draft/drop_bad_commands.rb +43 -43
  321. data/lib/ecoportal/api/graphql/payload/location_structure/draft/publish.rb +63 -63
  322. data/lib/ecoportal/api/graphql/payload/location_structure/draft.rb +18 -18
  323. data/lib/ecoportal/api/graphql/payload/location_structure.rb +14 -14
  324. data/lib/ecoportal/api/graphql/payload/ok_payload.rb +1 -1
  325. data/lib/ecoportal/api/graphql/payload/page/archive.rb +13 -13
  326. data/lib/ecoportal/api/graphql/payload/page/build_from_template.rb +13 -13
  327. data/lib/ecoportal/api/graphql/payload/page/create_from_template.rb +13 -13
  328. data/lib/ecoportal/api/graphql/payload/page/draft.rb +1 -1
  329. data/lib/ecoportal/api/graphql/payload/page/review_task.rb +1 -1
  330. data/lib/ecoportal/api/graphql/payload/page/unarchive.rb +13 -13
  331. data/lib/ecoportal/api/graphql/payload/page/update.rb +13 -13
  332. data/lib/ecoportal/api/graphql/payload/preset_view.rb +1 -1
  333. data/lib/ecoportal/api/graphql/payload/register.rb +1 -1
  334. data/lib/ecoportal/api/graphql/query/action.rb +33 -33
  335. data/lib/ecoportal/api/graphql/query/action_categories.rb +53 -53
  336. data/lib/ecoportal/api/graphql/query/actions.rb +43 -43
  337. data/lib/ecoportal/api/graphql/query/contractor_entities.rb +53 -53
  338. data/lib/ecoportal/api/graphql/query/file_upload_signature.rb +76 -76
  339. data/lib/ecoportal/api/graphql/query/location_classifications.rb +39 -39
  340. data/lib/ecoportal/api/graphql/query/page_delta.rb +47 -47
  341. data/lib/ecoportal/api/graphql/query/pages.rb +59 -59
  342. data/lib/ecoportal/api/graphql/query/person_members.rb +76 -0
  343. data/lib/ecoportal/api/graphql/query/register_preset_views.rb +1 -1
  344. data/lib/ecoportal/api/graphql/query/register_preview_pages.rb +83 -83
  345. data/lib/ecoportal/api/graphql/query/template_change_log.rb +118 -0
  346. data/lib/ecoportal/api/graphql/query/templates.rb +53 -53
  347. data/lib/ecoportal/api/graphql/query.rb +2 -0
  348. data/lib/ecoportal/api/graphql_version.rb +1 -1
  349. data/lib/ecoportal/api-graphql.rb +10 -10
  350. metadata +10 -8
  351. data/lib/ecoportal/api/common/graphql/CLAUDE.md +0 -36
  352. data/lib/ecoportal/api/common/graphql/model/CLAUDE.md +0 -28
  353. data/lib/ecoportal/api/graphql/CLAUDE.md +0 -37
  354. data/lib/ecoportal/api/graphql/base/CLAUDE.md +0 -50
  355. data/lib/ecoportal/api/graphql/builder/CLAUDE.md +0 -65
@@ -1,12 +1,12 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Base
5
- class PageInfo < Logic::BaseModel
6
- passthrough :startCursor, :endCursor
7
- passboolean :hasNextPage, :hasPreviousPage
8
- end
9
- end
10
- end
11
- end
12
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Base
5
+ class PageInfo < Logic::BaseModel
6
+ passthrough :startCursor, :endCursor
7
+ passboolean :hasNextPage, :hasPreviousPage
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -1,39 +1,39 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Base
5
- class PagesWorkflow
6
- class OperationInterface < Logic::BaseModel
7
- SCHEMA_VERSION = '20260605'.freeze
8
-
9
- passkey :id
10
- passdate :delayedExecuteAt
11
- passboolean :timeDelayPassed
12
-
13
- class_resolver :time_delay_config_class,
14
- 'Ecoportal::API::GraphQL::Base::PagesWorkflow::TimeDelayConfig'
15
-
16
- embeds_one :timeDelayConfig, klass: :time_delay_config_class
17
-
18
- require_relative 'operations/assign_to'
19
- require_relative 'operations/create_page'
20
- require_relative 'operations/send_notification'
21
-
22
- def self.from_doc(raw_doc)
23
- case raw_doc&.fetch('__typename', nil)
24
- when 'PagesWorkflowOperationsAssignTo'
25
- Operations::AssignTo.new(raw_doc)
26
- when 'PagesWorkflowOperationsCreatePage'
27
- Operations::CreatePage.new(raw_doc)
28
- when 'PagesWorkflowOperationsSendNotification'
29
- Operations::SendNotification.new(raw_doc)
30
- else
31
- new(raw_doc)
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
38
- end
39
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Base
5
+ class PagesWorkflow
6
+ class OperationInterface < Logic::BaseModel
7
+ SCHEMA_VERSION = '20260605'.freeze
8
+
9
+ passkey :id
10
+ passdate :delayedExecuteAt
11
+ passboolean :timeDelayPassed
12
+
13
+ class_resolver :time_delay_config_class,
14
+ 'Ecoportal::API::GraphQL::Base::PagesWorkflow::TimeDelayConfig'
15
+
16
+ embeds_one :timeDelayConfig, klass: :time_delay_config_class
17
+
18
+ require_relative 'operations/assign_to'
19
+ require_relative 'operations/create_page'
20
+ require_relative 'operations/send_notification'
21
+
22
+ def self.from_doc(raw_doc)
23
+ case raw_doc&.fetch('__typename', nil)
24
+ when 'PagesWorkflowOperationsAssignTo'
25
+ Operations::AssignTo.new(raw_doc)
26
+ when 'PagesWorkflowOperationsCreatePage'
27
+ Operations::CreatePage.new(raw_doc)
28
+ when 'PagesWorkflowOperationsSendNotification'
29
+ Operations::SendNotification.new(raw_doc)
30
+ else
31
+ new(raw_doc)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,27 +1,27 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Base
5
- class PagesWorkflow
6
- module Operations
7
- class AssignTo < OperationInterface
8
- SCHEMA_VERSION = '20260605'.freeze
9
-
10
- passthrough :targetTaskType
11
- passboolean :lastFulfilled
12
-
13
- class_resolver :escalation_level_class,
14
- 'Ecoportal::API::GraphQL::Base::PagesWorkflow::EscalationLevel'
15
-
16
- embeds_many :escalationLevels, klass: :escalation_level_class, read_only: true
17
-
18
- def strategies
19
- @strategies ||= Array(doc['strategies'] || [])
20
- end
21
- end
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Base
5
+ class PagesWorkflow
6
+ module Operations
7
+ class AssignTo < OperationInterface
8
+ SCHEMA_VERSION = '20260605'.freeze
9
+
10
+ passthrough :targetTaskType
11
+ passboolean :lastFulfilled
12
+
13
+ class_resolver :escalation_level_class,
14
+ 'Ecoportal::API::GraphQL::Base::PagesWorkflow::EscalationLevel'
15
+
16
+ embeds_many :escalationLevels, klass: :escalation_level_class, read_only: true
17
+
18
+ def strategies
19
+ @strategies ||= Array(doc['strategies'] || [])
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,30 +1,30 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Base
5
- class PagesWorkflow
6
- module Operations
7
- class SendNotification < OperationInterface
8
- SCHEMA_VERSION = '20260605'.freeze
9
-
10
- passboolean :recurring, :recurrenceActive
11
- passthrough :recurrenceCount, :recurrenceEndCount, :recurrenceEndType
12
- passdate :nextRecurrenceAt
13
-
14
- class_resolver :email_config_class,
15
- 'Ecoportal::API::GraphQL::Base::PagesWorkflow::EmailConfig'
16
- class_resolver :in_system_config_class,
17
- 'Ecoportal::API::GraphQL::Base::PagesWorkflow::InSystemConfig'
18
- class_resolver :recipient_config_class,
19
- 'Ecoportal::API::GraphQL::Base::PagesWorkflow::RecipientConfig'
20
-
21
- embeds_one :emailConfig, klass: :email_config_class
22
- embeds_one :inSystemConfig, klass: :in_system_config_class
23
- embeds_one :recipientConfig, klass: :recipient_config_class
24
- end
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Base
5
+ class PagesWorkflow
6
+ module Operations
7
+ class SendNotification < OperationInterface
8
+ SCHEMA_VERSION = '20260605'.freeze
9
+
10
+ passboolean :recurring, :recurrenceActive
11
+ passthrough :recurrenceCount, :recurrenceEndCount, :recurrenceEndType
12
+ passdate :nextRecurrenceAt
13
+
14
+ class_resolver :email_config_class,
15
+ 'Ecoportal::API::GraphQL::Base::PagesWorkflow::EmailConfig'
16
+ class_resolver :in_system_config_class,
17
+ 'Ecoportal::API::GraphQL::Base::PagesWorkflow::InSystemConfig'
18
+ class_resolver :recipient_config_class,
19
+ 'Ecoportal::API::GraphQL::Base::PagesWorkflow::RecipientConfig'
20
+
21
+ embeds_one :emailConfig, klass: :email_config_class
22
+ embeds_one :inSystemConfig, klass: :in_system_config_class
23
+ embeds_one :recipientConfig, klass: :recipient_config_class
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,34 +1,34 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Base
5
- class PagesWorkflow
6
- class RecipientConfig < Logic::BaseModel
7
- SCHEMA_VERSION = '20260605'.freeze
8
-
9
- passboolean :allActiveUsers, :includeActionAssignees, :includeMailboxFields
10
- passboolean :includePageCreator, :includePeopleFields, :includeTaskAssignees
11
- passboolean :limitByPageTags
12
-
13
- class_resolver :action_type_selection_class,
14
- 'Ecoportal::API::GraphQL::Base::PagesWorkflow::ActionTypeSelection'
15
- class_resolver :mailbox_field_selection_class,
16
- 'Ecoportal::API::GraphQL::Base::PagesWorkflow::MailboxFieldSelection'
17
- class_resolver :people_field_selection_class,
18
- 'Ecoportal::API::GraphQL::Base::PagesWorkflow::PeopleFieldSelection'
19
- class_resolver :task_config_selection_class,
20
- 'Ecoportal::API::GraphQL::Base::PagesWorkflow::TaskConfigSelection'
21
- class_resolver :user_selection_class,
22
- 'Ecoportal::API::GraphQL::Base::PagesWorkflow::UserSelection'
23
-
24
- embeds_many :actionTypeSelections, klass: :action_type_selection_class, read_only: true
25
- embeds_many :mailboxFieldSelections, klass: :mailbox_field_selection_class, read_only: true
26
- embeds_many :peopleFieldSelections, klass: :people_field_selection_class, read_only: true
27
- embeds_many :taskConfigSelections, klass: :task_config_selection_class, read_only: true
28
- embeds_many :userSelections, klass: :user_selection_class, read_only: true
29
- end
30
- end
31
- end
32
- end
33
- end
34
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Base
5
+ class PagesWorkflow
6
+ class RecipientConfig < Logic::BaseModel
7
+ SCHEMA_VERSION = '20260605'.freeze
8
+
9
+ passboolean :allActiveUsers, :includeActionAssignees, :includeMailboxFields
10
+ passboolean :includePageCreator, :includePeopleFields, :includeTaskAssignees
11
+ passboolean :limitByPageTags
12
+
13
+ class_resolver :action_type_selection_class,
14
+ 'Ecoportal::API::GraphQL::Base::PagesWorkflow::ActionTypeSelection'
15
+ class_resolver :mailbox_field_selection_class,
16
+ 'Ecoportal::API::GraphQL::Base::PagesWorkflow::MailboxFieldSelection'
17
+ class_resolver :people_field_selection_class,
18
+ 'Ecoportal::API::GraphQL::Base::PagesWorkflow::PeopleFieldSelection'
19
+ class_resolver :task_config_selection_class,
20
+ 'Ecoportal::API::GraphQL::Base::PagesWorkflow::TaskConfigSelection'
21
+ class_resolver :user_selection_class,
22
+ 'Ecoportal::API::GraphQL::Base::PagesWorkflow::UserSelection'
23
+
24
+ embeds_many :actionTypeSelections, klass: :action_type_selection_class, read_only: true
25
+ embeds_many :mailboxFieldSelections, klass: :mailbox_field_selection_class, read_only: true
26
+ embeds_many :peopleFieldSelections, klass: :people_field_selection_class, read_only: true
27
+ embeds_many :taskConfigSelections, klass: :task_config_selection_class, read_only: true
28
+ embeds_many :userSelections, klass: :user_selection_class, read_only: true
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,35 +1,35 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Base
5
- class PagesWorkflow < Logic::BaseModel
6
- SCHEMA_VERSION = '20260605'.freeze
7
-
8
- passboolean :autoPageCreationEnabled
9
- passarray :stages
10
-
11
- class_resolver :register_field_class,
12
- 'Ecoportal::API::GraphQL::Base::PagesWorkflow::RegisterField'
13
-
14
- embeds_many :fields, klass: :register_field_class, read_only: true
15
-
16
- require_relative 'pages_workflow/register_field'
17
- require_relative 'pages_workflow/time_delay_config'
18
- require_relative 'pages_workflow/escalation_level'
19
- require_relative 'pages_workflow/user_selection'
20
- require_relative 'pages_workflow/mailbox_field_selection'
21
- require_relative 'pages_workflow/people_field_selection'
22
- require_relative 'pages_workflow/task_config_selection'
23
- require_relative 'pages_workflow/action_type_selection'
24
- require_relative 'pages_workflow/email_config'
25
- require_relative 'pages_workflow/in_system_config'
26
- require_relative 'pages_workflow/recipient_config'
27
- require_relative 'pages_workflow/trigger_interface'
28
- require_relative 'pages_workflow/operation_interface'
29
- require_relative 'pages_workflow/callback_type'
30
- require_relative 'pages_workflow/command_interface'
31
- end
32
- end
33
- end
34
- end
35
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Base
5
+ class PagesWorkflow < Logic::BaseModel
6
+ SCHEMA_VERSION = '20260605'.freeze
7
+
8
+ passboolean :autoPageCreationEnabled
9
+ passarray :stages
10
+
11
+ class_resolver :register_field_class,
12
+ 'Ecoportal::API::GraphQL::Base::PagesWorkflow::RegisterField'
13
+
14
+ embeds_many :fields, klass: :register_field_class, read_only: true
15
+
16
+ require_relative 'pages_workflow/register_field'
17
+ require_relative 'pages_workflow/time_delay_config'
18
+ require_relative 'pages_workflow/escalation_level'
19
+ require_relative 'pages_workflow/user_selection'
20
+ require_relative 'pages_workflow/mailbox_field_selection'
21
+ require_relative 'pages_workflow/people_field_selection'
22
+ require_relative 'pages_workflow/task_config_selection'
23
+ require_relative 'pages_workflow/action_type_selection'
24
+ require_relative 'pages_workflow/email_config'
25
+ require_relative 'pages_workflow/in_system_config'
26
+ require_relative 'pages_workflow/recipient_config'
27
+ require_relative 'pages_workflow/trigger_interface'
28
+ require_relative 'pages_workflow/operation_interface'
29
+ require_relative 'pages_workflow/callback_type'
30
+ require_relative 'pages_workflow/command_interface'
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,22 +1,22 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Base
5
- class PersonMember < Logic::BaseModel
6
- root!
7
-
8
- passkey :id
9
- passthrough :name, :email
10
- passarray :tagRestrict, :userGroupIds
11
-
12
- passthrough :personSchemaId
13
-
14
- passthrough :contractorOrganizationId
15
- passthrough :userId
16
-
17
- passboolean :tracingAdmin
18
- end
19
- end
20
- end
21
- end
22
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Base
5
+ class PersonMember < Logic::BaseModel
6
+ root!
7
+
8
+ passkey :id
9
+ passthrough :name, :email
10
+ passarray :tagRestrict, :userGroupIds
11
+
12
+ passthrough :personSchemaId
13
+
14
+ passthrough :contractorOrganizationId
15
+ passthrough :userId
16
+
17
+ passboolean :tracingAdmin
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,23 +1,23 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Base
5
- # Elasticsearch-backed preview of a page, returned by register.previewPages.
6
- # Read-only. No patchVer, no typed data field models, no field IDs.
7
- # Use for fast metadata lookup only — switch to org search (pages) for full data.
8
- class PreviewPage < Logic::BaseModel
9
- read_only!
10
-
11
- passkey :id
12
- passthrough :uid, :name, :state, :archived
13
- passthrough :creatorName, :externalId
14
- passdate :createdAt, :updatedAt
15
-
16
- # locations, dataFields, stages returned as raw arrays — typed access not needed
17
- # for a read-only ES-backed preview model. Use org search for typed field access.
18
- passarray :locations, :dataFields, :stages, :tags
19
- end
20
- end
21
- end
22
- end
23
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Base
5
+ # Elasticsearch-backed preview of a page, returned by register.previewPages.
6
+ # Read-only. No patchVer, no typed data field models, no field IDs.
7
+ # Use for fast metadata lookup only — switch to org search (pages) for full data.
8
+ class PreviewPage < Logic::BaseModel
9
+ read_only!
10
+
11
+ passkey :id
12
+ passthrough :uid, :name, :state, :archived
13
+ passthrough :creatorName, :externalId
14
+ passdate :createdAt, :updatedAt
15
+
16
+ # locations, dataFields, stages returned as raw arrays — typed access not needed
17
+ # for a read-only ES-backed preview model. Use org search for typed field access.
18
+ passarray :locations, :dataFields, :stages, :tags
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,4 +1,4 @@
1
- module Ecoportal
1
+ module Ecoportal
2
2
  module API
3
3
  class GraphQL
4
4
  module Base
@@ -1,13 +1,13 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Base
5
- class Resource < Logic::BaseModel
6
- passkey :id
7
- passthrough :fieldId, :pageId
8
- passarray :stageIds
9
- end
10
- end
11
- end
12
- end
13
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Base
5
+ class Resource < Logic::BaseModel
6
+ passkey :id
7
+ passthrough :fieldId, :pageId
8
+ passarray :stageIds
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,118 @@
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Base
5
+ module Template
6
+ # One entry of a TEMPLATE's change log — a single command the platform recorded
7
+ # against the template. Read-only.
8
+ #
9
+ # ── Where it comes from (verified in the Rails backend on 2026-08-19) ────────────
10
+ # `app/graphql/types/pages/template_type.rb` declares
11
+ # field :commands, Types::Pages::Interfaces::WorkflowCommandInterface.connection_type
12
+ # and resolves it as
13
+ # NewEp::Pages::Workflows::Commands::Base.where(page: object.page)
14
+ # .from_template_builder.order(_id: :desc)
15
+ #
16
+ # The narrow `Template` type itself is reachable as `template { ... }` on any page,
17
+ # because `app/graphql/types/pages/interfaces/base_page_interface.rb:27` declares
18
+ # field :template, Types::Pages::TemplateType, null: true
19
+ #
20
+ # ── ★ TWO ACCESS CAVEATS — both are silent, neither raises ─────────────────────
21
+ # 1. `commands` returns **nil**, not an empty connection, unless the caller satisfies
22
+ # `Pages::TemplatePolicy#update_information?` (`return unless allowed_to?(...)`).
23
+ # A read-only account therefore sees NO change log and gets no error saying so.
24
+ # Treat a nil connection as "not permitted", never as "nothing changed".
25
+ # 2. The scope is `.from_template_builder` — only `TEMPLATE_BUILDER`-sourced commands
26
+ # appear. `WORKFLOW_BUILDER` commands against the same page are EXCLUDED
27
+ # (`app/models/new_ep/pages/workflows/commands/base.rb`, `enum_field :feature_source`
28
+ # with values WORKFLOW_BUILDER / TEMPLATE_BUILDER). For the workflow-builder side of
29
+ # the same log see `Query::PagesWorkflowCommands`.
30
+ # Ordering is `_id: :desc` — newest first, server-side, not configurable.
31
+ #
32
+ # ── ★ WHY THIS LOG BEATS POLLING A WATERMARK ──────────────────────────────────
33
+ # `app/services/new_ep/pages/run_merged_forces.rb:17` writes with
34
+ # @page.timeless.skip_patch_incr.rewrite(only_if: { updated_at: @page.updated_at.utc })
35
+ # so a forces run bumps NEITHER `patchVer` NOR `updatedAt`. Any change tracker that
36
+ # polls a watermark is structurally blind to force-driven change; the command log is
37
+ # per-change and cannot be skipped that way.
38
+ # (OPEN: whether forces run against TEMPLATES specifically is NOT confirmed — do not
39
+ # assume either way.)
40
+ #
41
+ # ── Field set ─────────────────────────────────────────────────────────────────
42
+ # These are the fields of the INTERFACE `PagesWorkflowCommandInterface` only
43
+ # (`app/graphql/types/pages/interfaces/workflow_command_interface.rb`). The concrete
44
+ # implementing types add their own (`PagesWorkflowCommandChange.changes`,
45
+ # `PagesWorkflowCommandChangeMessage.changeMessages`,
46
+ # `PagesWorkflowCommandEsChange.changes`); `__typename` is passed through so a caller
47
+ # can branch, and those extras can be selected with an inline fragment or by reusing
48
+ # `Fragment :PagesWorkflowCommandFields`.
49
+ #
50
+ # Enum-valued fields are exposed as plain strings:
51
+ # - commandAction: WorkflowCommandActionEnum
52
+ class ChangeLogEntry < Logic::BaseModel
53
+ read_only!
54
+
55
+ passkey :id
56
+ # Concrete type name: 'PagesWorkflowCommandChange' | 'PagesWorkflowCommandChangeMessage'
57
+ # | 'PagesWorkflowCommandEsChange'.
58
+ passthrough :__typename
59
+ passthrough :commandAction
60
+ # Optimistic-concurrency token the command was recorded against (Int!).
61
+ passthrough :patchVer
62
+ # `owner` (the UserType embed) is added in Model::Template::ChangeLogEntry — Base
63
+ # loads before Model.
64
+ passthrough :ownerId
65
+ passthrough :stageId, :stageName
66
+ passthrough :taskId, :taskType
67
+ # What the command acted on. Resolved server-side from `targeted_resource` and
68
+ # nil for commands that target nothing.
69
+ passthrough :targetedResourceId, :targetedResourceName, :targetedResourceType
70
+
71
+ # `createdAt`/`updatedAt` are `DateTimeType` OBJECTS ({ dateTime, timeZone }), not
72
+ # scalars — hence an embed rather than `passdate`. Use `entry.createdAt.dateTime`.
73
+ embeds_one :createdAt, klass: Base::DateTime
74
+ embeds_one :updatedAt, klass: Base::DateTime
75
+
76
+ # ── What actually changed (only populated by the DETAIL selection) ──────────
77
+ # Present only when the node was selected with `Fragment :TemplateChangeLogEntryDetail`
78
+ # (see `Query::TemplateChangeLog.detail_block` / `api.template.change_log(detail: true)`).
79
+ # With the default light selection both readers are empty — empty means
80
+ # "not selected", NOT "nothing changed", exactly like the nil-connection caveat above.
81
+ #
82
+ # Deliberately raw hashes rather than a typed embed: the two `changes`-bearing types
83
+ # do not share a shape (`ChangeType.from/to` are Strings;
84
+ # `StoredEsFilterChangeType.from/to` are objects), so one typed model would have to
85
+ # lie about one of them. This mirrors `Base::PagesWorkflow::CommandChange#changes`,
86
+ # which does the same for the workflow-builder side of the same interface.
87
+ def changes
88
+ Array(doc['changes'])
89
+ end
90
+
91
+ passarray :changeMessages
92
+
93
+ # Which of the three concrete command types this entry is, as a symbol:
94
+ # :changes | :change_messages | :es_changes | nil (unknown/unselected `__typename`).
95
+ # Use it instead of string-matching `__typename` at call sites.
96
+ DETAIL_KINDS = {
97
+ 'PagesWorkflowCommandChange' => :changes,
98
+ 'PagesWorkflowCommandChangeMessage' => :change_messages,
99
+ 'PagesWorkflowCommandEsChange' => :es_changes
100
+ }.freeze
101
+
102
+ def detail_kind
103
+ DETAIL_KINDS[__typename]
104
+ end
105
+
106
+ # True when this entry carries field-level detail. False both when the light
107
+ # selection was used and when a command genuinely recorded no changes -- those two
108
+ # are indistinguishable from the response alone, which is why the caller should know
109
+ # which selection it asked for.
110
+ def detail?
111
+ !changes.empty? || !changeMessages.to_a.empty?
112
+ end
113
+ end
114
+ end
115
+ end
116
+ end
117
+ end
118
+ end
@@ -28,6 +28,8 @@ module Ecoportal
28
28
  passthrough :title, :registerId
29
29
  passboolean :hasInaccessibleVariables
30
30
  end
31
+
32
+ require_relative 'template/change_log_entry'
31
33
  end
32
34
  end
33
35
  end