ecoportal-api-graphql 1.3.13 → 1.3.16

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 (275) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +87 -0
  3. data/lib/ecoportal/api/common/graphql/client.rb +0 -2
  4. data/lib/ecoportal/api/common/graphql/http_client.rb +6 -0
  5. data/lib/ecoportal/api/graphql/base/ai_summary_version.rb +17 -17
  6. data/lib/ecoportal/api/graphql/base/file_container.rb +14 -14
  7. data/lib/ecoportal/api/graphql/base/location_classification_type.rb +15 -15
  8. data/lib/ecoportal/api/graphql/base/location_structure.rb +27 -27
  9. data/lib/ecoportal/api/graphql/base/organization.rb +15 -15
  10. data/lib/ecoportal/api/graphql/base/page/task.rb +24 -0
  11. data/lib/ecoportal/api/graphql/base/page.rb +17 -16
  12. data/lib/ecoportal/api/graphql/base/template.rb +35 -0
  13. data/lib/ecoportal/api/graphql/base.rb +37 -35
  14. data/lib/ecoportal/api/graphql/builder/contractor_entity.rb +41 -41
  15. data/lib/ecoportal/api/graphql/compat/response.rb +35 -35
  16. data/lib/ecoportal/api/graphql/connection/action.rb +11 -11
  17. data/lib/ecoportal/api/graphql/connection/action_category.rb +11 -11
  18. data/lib/ecoportal/api/graphql/connection/contractor_entity.rb +11 -11
  19. data/lib/ecoportal/api/graphql/connection/page.rb +11 -11
  20. data/lib/ecoportal/api/graphql/connection/person_member.rb +11 -11
  21. data/lib/ecoportal/api/graphql/connection/preview_page.rb +11 -11
  22. data/lib/ecoportal/api/graphql/connection.rb +17 -17
  23. data/lib/ecoportal/api/graphql/file_upload/client.rb +21 -10
  24. data/lib/ecoportal/api/graphql/fragment/field_configuration.rb +38 -0
  25. data/lib/ecoportal/api/graphql/fragment/force.rb +14 -10
  26. data/lib/ecoportal/api/graphql/fragment/location_node.rb +26 -26
  27. data/lib/ecoportal/api/graphql/fragment/page_task.rb +39 -0
  28. data/lib/ecoportal/api/graphql/fragment/template.rb +51 -0
  29. data/lib/ecoportal/api/graphql/fragment.rb +3 -0
  30. data/lib/ecoportal/api/graphql/input/contractor_entity.rb +14 -14
  31. data/lib/ecoportal/api/graphql/input/preset_view/update.rb +16 -16
  32. data/lib/ecoportal/api/graphql/input/workflow_command/add_stage.rb +18 -18
  33. data/lib/ecoportal/api/graphql/input/workflow_command/edit_field_configuration.rb +21 -21
  34. data/lib/ecoportal/api/graphql/input/workflow_command/edit_page.rb +28 -28
  35. data/lib/ecoportal/api/graphql/input/workflow_command/edit_page_creator_permissions.rb +18 -18
  36. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/cross_reference.rb +23 -23
  37. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/date.rb +20 -20
  38. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/image_gallery.rb +20 -20
  39. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/people.rb +24 -24
  40. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/plain_text.rb +20 -20
  41. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/rich_text.rb +20 -20
  42. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/select.rb +20 -20
  43. data/lib/ecoportal/api/graphql/input/workflow_command/move_field.rb +18 -18
  44. data/lib/ecoportal/api/graphql/input/workflow_command/reorder_forces.rb +18 -18
  45. data/lib/ecoportal/api/graphql/input/workflow_command/reorder_section.rb +18 -18
  46. data/lib/ecoportal/api/graphql/input/workflow_command.rb +251 -251
  47. data/lib/ecoportal/api/graphql/input.rb +24 -24
  48. data/lib/ecoportal/api/graphql/logic/connection.rb +34 -34
  49. data/lib/ecoportal/api/graphql/model/page/task.rb +16 -0
  50. data/lib/ecoportal/api/graphql/model/page.rb +16 -15
  51. data/lib/ecoportal/api/graphql/model/person_member.rb +15 -15
  52. data/lib/ecoportal/api/graphql/model/template.rb +15 -0
  53. data/lib/ecoportal/api/graphql/model.rb +32 -30
  54. data/lib/ecoportal/api/graphql/mutation/ai_summary/generate.rb +45 -45
  55. data/lib/ecoportal/api/graphql/mutation/ai_summary/submit_feedback.rb +40 -40
  56. data/lib/ecoportal/api/graphql/mutation/contractor_entity.rb +14 -14
  57. data/lib/ecoportal/api/graphql/mutation/page/approve_review_task.rb +40 -40
  58. data/lib/ecoportal/api/graphql/mutation/page/batch_update_review_task.rb +38 -40
  59. data/lib/ecoportal/api/graphql/mutation/page/create_draft.rb +38 -40
  60. data/lib/ecoportal/api/graphql/mutation/page/delete_draft.rb +38 -40
  61. data/lib/ecoportal/api/graphql/mutation/page/execute_force_commands.rb +7 -7
  62. data/lib/ecoportal/api/graphql/mutation/page/execute_workflow_commands.rb +8 -7
  63. data/lib/ecoportal/api/graphql/mutation/page/publish_draft.rb +38 -40
  64. data/lib/ecoportal/api/graphql/mutation/page/reject_review_task.rb +40 -40
  65. data/lib/ecoportal/api/graphql/mutation/page/restart_review_task.rb +40 -40
  66. data/lib/ecoportal/api/graphql/mutation/page/undo_review_task.rb +40 -40
  67. data/lib/ecoportal/api/graphql/mutation/preset_view/destroy.rb +34 -35
  68. data/lib/ecoportal/api/graphql/mutation/register/destroy.rb +35 -35
  69. data/lib/ecoportal/api/graphql/mutation/smart_fill/generate.rb +36 -36
  70. data/lib/ecoportal/api/graphql/mutation/smart_fill/submit_feedback.rb +40 -40
  71. data/lib/ecoportal/api/graphql/mutation/smart_fill.rb +13 -13
  72. data/lib/ecoportal/api/graphql/mutation/template/create_related_page.rb +46 -46
  73. data/lib/ecoportal/api/graphql/mutation/template/destroy_related_page.rb +1 -1
  74. data/lib/ecoportal/api/graphql/mutation/template/update_information.rb +1 -1
  75. data/lib/ecoportal/api/graphql/mutation.rb +20 -20
  76. data/lib/ecoportal/api/graphql/payload/contractor_entity.rb +14 -14
  77. data/lib/ecoportal/api/graphql/payload/ok_payload.rb +36 -21
  78. data/lib/ecoportal/api/graphql/payload/page/draft.rb +26 -13
  79. data/lib/ecoportal/api/graphql/payload/page/review_task.rb +13 -13
  80. data/lib/ecoportal/api/graphql/payload/page/review_task_batch.rb +23 -0
  81. data/lib/ecoportal/api/graphql/payload/page.rb +20 -19
  82. data/lib/ecoportal/api/graphql/payload/preset_view.rb +15 -11
  83. data/lib/ecoportal/api/graphql/payload/register.rb +15 -11
  84. data/lib/ecoportal/api/graphql/payload/template/create_related_page.rb +1 -1
  85. data/lib/ecoportal/api/graphql/payload/template/destroy_related_page.rb +1 -1
  86. data/lib/ecoportal/api/graphql/payload/template/update_information.rb +1 -1
  87. data/lib/ecoportal/api/graphql/payload.rb +23 -23
  88. data/lib/ecoportal/api/graphql/query/location_structures.rb +57 -57
  89. data/lib/ecoportal/api/graphql/query/page.rb +45 -45
  90. data/lib/ecoportal/api/graphql/query/page_with_forces.rb +9 -3
  91. data/lib/ecoportal/api/graphql/query/pages_workflow_commands.rb +9 -3
  92. data/lib/ecoportal/api/graphql/query/register_preset_views.rb +78 -78
  93. data/lib/ecoportal/api/graphql/query.rb +27 -27
  94. data/lib/ecoportal/api/graphql.rb +9 -5
  95. data/lib/ecoportal/api/graphql_version.rb +1 -1
  96. metadata +9 -180
  97. data/.ai-assistance/bridge/CLAUDE.md +0 -338
  98. data/.ai-assistance/bridge/archive/.gitkeep +0 -0
  99. data/.ai-assistance/bridge/archive/oscar-a1b2c3d-gitlab-mcp-doc-update.inbox.md +0 -29
  100. data/.ai-assistance/bridge/archive/oscar-a1b2c3d-gitlab-mcp-doc-update.outbox.md +0 -18
  101. data/.ai-assistance/bridge/archive/oscar-c912c25-gemini-design-review.inbox.md +0 -42
  102. data/.ai-assistance/bridge/archive/oscar-c912c25-gemini-design-review.outbox.md +0 -115
  103. data/.ai-assistance/bridge/context/gemini-review-prompt.txt +0 -48
  104. data/.ai-assistance/bridge/context/gemini-review-response.md +0 -104
  105. data/.ai-assistance/bridge/context/project.md +0 -42
  106. data/.ai-assistance/bridge/inbox/.gitkeep +0 -0
  107. data/.ai-assistance/bridge/outbox/.gitkeep +0 -0
  108. data/.ai-assistance/bridge/outbox/request-for-standards-discovery.md +0 -48
  109. data/.ai-assistance/bridge/queue/.gitkeep +0 -1
  110. data/.ai-assistance/capabilities/CLAUDE.md +0 -27
  111. data/.ai-assistance/capabilities/assumptions-log.md +0 -80
  112. data/.ai-assistance/capabilities/code.md +0 -47
  113. data/.ai-assistance/capabilities/connectors.md +0 -37
  114. data/.ai-assistance/capabilities/cowork.md +0 -55
  115. data/.ai-assistance/code/OVERVIEW.md +0 -155
  116. data/.ai-assistance/code/data_fields.md +0 -242
  117. data/.ai-assistance/code/dependencies.md +0 -151
  118. data/.ai-assistance/code/diff_as_input.md +0 -234
  119. data/.ai-assistance/code/diff_pairing_engine.md +0 -243
  120. data/.ai-assistance/code/diff_service_deep_dive.md +0 -192
  121. data/.ai-assistance/code/ecoPortal_architecture/00_overview_and_index.md +0 -55
  122. data/.ai-assistance/code/ecoPortal_architecture/01_terminology_dictionary.md +0 -181
  123. data/.ai-assistance/code/ecoPortal_architecture/02_data_model.md +0 -192
  124. data/.ai-assistance/code/ecoPortal_architecture/03_api_layers.md +0 -147
  125. data/.ai-assistance/code/ecoPortal_architecture/04_graphql_queries_mutations.md +0 -277
  126. data/.ai-assistance/code/ecoPortal_architecture/05_page_workflows.md +0 -200
  127. data/.ai-assistance/code/ecoPortal_architecture/06_search_and_filters.md +0 -228
  128. data/.ai-assistance/code/ecoPortal_architecture/07_data_fields.md +0 -197
  129. data/.ai-assistance/code/ecoPortal_architecture/08_stages_sections.md +0 -243
  130. data/.ai-assistance/code/ecoPortal_architecture/09_people_contractors_locations.md +0 -196
  131. data/.ai-assistance/code/ecoPortal_architecture/10_forces_workflow_builder.md +0 -132
  132. data/.ai-assistance/code/ecoPortal_architecture/11_integration_gems.md +0 -187
  133. data/.ai-assistance/code/ecoPortal_architecture/12_ai_documentation_sources_gaps.md +0 -236
  134. data/.ai-assistance/code/ecoPortal_architecture/13_ai_infrastructure.md +0 -183
  135. data/.ai-assistance/code/ecoportal_schema_reference.md +0 -240
  136. data/.ai-assistance/code/filter_contract_matrix.md +0 -177
  137. data/.ai-assistance/code/graphql_domain_knowledge.md +0 -240
  138. data/.ai-assistance/code/refactoring/datafield-readwrite-shape-asymmetry.md +0 -71
  139. data/.ai-assistance/code/refactoring/opportunities.md +0 -251
  140. data/.ai-assistance/code/schema_analysis.md +0 -321
  141. data/.ai-assistance/code/search_filters.md +0 -868
  142. data/.ai-assistance/code/spec_coverage.md +0 -73
  143. data/.ai-assistance/code/template_diff_pairing_domain.md +0 -175
  144. data/.ai-assistance/code/workflow-command-guide.md +0 -466
  145. data/.ai-assistance/code/workflow-space.md +0 -353
  146. data/.ai-assistance/conventions/CLAUDE.md +0 -30
  147. data/.ai-assistance/conventions/code-working-tree-protocol.md +0 -199
  148. data/.ai-assistance/conventions/gitignore-rules.md +0 -42
  149. data/.ai-assistance/conventions/permission-guidance.md +0 -120
  150. data/.ai-assistance/integrations/README.md +0 -70
  151. data/.ai-assistance/integrations/gitkraken-mcp.md +0 -107
  152. data/.ai-assistance/integrations/gitlab-mcp.md +0 -123
  153. data/.ai-assistance/integrations/local-git.md +0 -60
  154. data/.ai-assistance/local_paths.example.md +0 -17
  155. data/.ai-assistance/projects/TODO.md +0 -118
  156. data/.ai-assistance/projects/api-v2-to-graphql-migration/DECISIONS.md +0 -168
  157. data/.ai-assistance/projects/api-v2-to-graphql-migration/INTENT.md +0 -60
  158. data/.ai-assistance/projects/api-v2-to-graphql-migration/TODO.md +0 -267
  159. data/.ai-assistance/projects/api-v2-to-graphql-migration/UPSTREAM.md +0 -53
  160. data/.ai-assistance/projects/api-v2-to-graphql-migration/notes/csv-template-pipeline-design.md +0 -102
  161. data/.ai-assistance/projects/api-v2-to-graphql-migration/notes/cutover-usecase-gap-audit.md +0 -139
  162. data/.ai-assistance/projects/compat-layer-audit/COMPAT_AUDIT.md +0 -244
  163. data/.ai-assistance/projects/dynamic-model-generation/INTENT.md +0 -93
  164. data/.ai-assistance/projects/eco-helpers-compat/INTENT.md +0 -244
  165. data/.ai-assistance/projects/eco-helpers-compat/MIGRATION_GUIDE.md +0 -266
  166. data/.ai-assistance/projects/eco-helpers-compat/TODO.md +0 -86
  167. data/.ai-assistance/projects/ecoportal-api-v2-doublemodel-review/INTENT.md +0 -101
  168. data/.ai-assistance/projects/graphql-agent/GAP_ANALYSIS.md +0 -177
  169. data/.ai-assistance/projects/ooze-graphql-native-migration/DECISIONS.md +0 -161
  170. data/.ai-assistance/projects/ooze-graphql-native-migration/INTENT.md +0 -125
  171. data/.ai-assistance/projects/ooze-graphql-native-migration/INVENTORY.md +0 -136
  172. data/.ai-assistance/projects/ooze-graphql-native-migration/RISKS.md +0 -126
  173. data/.ai-assistance/projects/ooze-graphql-native-migration/TODO.md +0 -261
  174. data/.ai-assistance/projects/ooze-graphql-native-migration/analysis/2026-06-30-cutover-workflow-deep-review.md +0 -122
  175. data/.ai-assistance/projects/ooze-graphql-native-migration/analysis/2026-07-01-forces-via-workflow-commands-miss-rca.md +0 -148
  176. data/.ai-assistance/projects/page-model/DECISIONS.md +0 -245
  177. data/.ai-assistance/projects/page-model/TODO.md +0 -190
  178. data/.ai-assistance/projects/qa-services-delivery/DECISIONS.md +0 -93
  179. data/.ai-assistance/projects/qa-services-delivery/INTENT.md +0 -76
  180. data/.ai-assistance/projects/qa-services-delivery/PHASE3-SCOPE.md +0 -115
  181. data/.ai-assistance/projects/qa-services-delivery/ROADMAP.md +0 -99
  182. data/.ai-assistance/projects/qa-services-delivery/TODO.md +0 -81
  183. data/.ai-assistance/projects/search-filter-builder/INTENT.md +0 -107
  184. data/.ai-assistance/projects/search-filter-builder/TODO.md +0 -131
  185. data/.ai-assistance/projects/template-automatic-build-maintenance/INTENT.md +0 -87
  186. data/.ai-assistance/projects/template-automatic-build-maintenance/TODO.md +0 -108
  187. data/.ai-assistance/projects/template-diff-deploy/INTENT.md +0 -12
  188. data/.ai-assistance/projects/template-diff-deploy/TODO.md +0 -9
  189. data/.ai-assistance/projects/template-maintenance/DESIGN.md +0 -134
  190. data/.ai-assistance/projects/template-maintenance/PHASE0-FINDINGS.md +0 -93
  191. data/.ai-assistance/projects/template-maintenance/README.md +0 -14
  192. data/.ai-assistance/projects/template-model-logic/CATEGORY_CATALOG.md +0 -236
  193. data/.ai-assistance/projects/template-model-logic/CLASSIFICATION_SPIKE.md +0 -243
  194. data/.ai-assistance/projects/template-model-logic/DESIGN_NOTE.md +0 -154
  195. data/.ai-assistance/projects/workflow-space/TODO.md +0 -213
  196. data/.ai-assistance/reinstall-claude-desktop-windows.md +0 -136
  197. data/.ai-assistance/scripts/CLAUDE.md +0 -150
  198. data/.ai-assistance/scripts/bridge-inbox-check.sh +0 -75
  199. data/.ai-assistance/scripts/bridge-init.sh +0 -86
  200. data/.ai-assistance/scripts/bridge-status.sh +0 -44
  201. data/.ai-assistance/scripts/capabilities-check.ts +0 -104
  202. data/.ai-assistance/scripts/check-outbox.sh +0 -43
  203. data/.ai-assistance/scripts/dep_graph.rb +0 -91
  204. data/.ai-assistance/scripts/lock-acquire.sh +0 -103
  205. data/.ai-assistance/scripts/lock-multi.sh +0 -124
  206. data/.ai-assistance/scripts/lock-queue.sh +0 -94
  207. data/.ai-assistance/scripts/setup-mcps.test.ts +0 -188
  208. data/.ai-assistance/scripts/setup-mcps.ts +0 -234
  209. data/.ai-assistance/scripts/task-complete.ts +0 -74
  210. data/.ai-assistance/scripts/task-create.ts +0 -75
  211. data/.ai-assistance/scripts/task-read.ts +0 -125
  212. data/.ai-assistance/scripts/token-logger.js +0 -220
  213. data/.ai-assistance/scripts/token-report.ts +0 -158
  214. data/.ai-assistance/scripts/token-session-start.js +0 -66
  215. data/.ai-assistance/skills/ai-instructions/SKILL.md +0 -48
  216. data/.ai-assistance/skills/code-specs/SKILL.md +0 -69
  217. data/.ai-assistance/skills/corporate-policies/SKILL.md +0 -201
  218. data/.ai-assistance/skills/dep-graph/SKILL.md +0 -139
  219. data/.ai-assistance/skills/ep-ai-manager/SKILL.md +0 -417
  220. data/.ai-assistance/skills/gemini-assist/SKILL.md +0 -63
  221. data/.ai-assistance/skills/gemini-assist/gemini-mcp-server.js +0 -205
  222. data/.ai-assistance/skills/gemini-assist/gemini_ask.py +0 -1
  223. data/.ai-assistance/skills/gemini-assist/gemini_ask.rb +0 -240
  224. data/.ai-assistance/skills/gemini-assist/prompts/cycle_end_review.txt +0 -25
  225. data/.ai-assistance/skills/graphql-schema-analysis/SKILL.md +0 -261
  226. data/.ai-assistance/skills/procedural-memory/SKILL.md +0 -319
  227. data/.ai-assistance/skills/project-cycle/SKILL.md +0 -177
  228. data/.ai-assistance/skills/project-self-docs/SKILL.md +0 -181
  229. data/.ai-assistance/skills/project-self-docs/scripts/self_docs_scan.py +0 -378
  230. data/.ai-assistance/skills/refactor/SKILL.md +0 -62
  231. data/.ai-assistance/skills/rubocop/SKILL.md +0 -93
  232. data/.ai-assistance/skills/ruby-scripting/SKILL.md +0 -215
  233. data/.ai-assistance/skills/spec-generation/SKILL.md +0 -72
  234. data/.ai-assistance/standards-version.json +0 -22
  235. data/.ai-assistance/token-budget.json +0 -32
  236. data/.ai-assistance/version.json +0 -39
  237. data/.claude/settings.json +0 -150
  238. data/.env.example +0 -18
  239. data/.gitattributes +0 -15
  240. data/.gitignore +0 -37
  241. data/.gitlab-ci.yml +0 -45
  242. data/.markdownlint.json +0 -4
  243. data/.rspec +0 -3
  244. data/.rubocop.yml +0 -121
  245. data/.ruby-version +0 -1
  246. data/.yardopts +0 -10
  247. data/CLAUDE.md +0 -243
  248. data/Gemfile +0 -30
  249. data/Rakefile +0 -90
  250. data/bin/console +0 -14
  251. data/bin/setup +0 -8
  252. data/bin/setup.ps1 +0 -6
  253. data/docs/self-docs/ARCHITECTURE.md +0 -88
  254. data/docs/self-docs/CHANGES.jsonl +0 -12
  255. data/docs/self-docs/COMPLIANCE.md +0 -79
  256. data/docs/self-docs/CONVENTIONS.md +0 -74
  257. data/docs/self-docs/INTEGRATIONS.md +0 -65
  258. data/docs/self-docs/OPERATIONS.md +0 -76
  259. data/docs/self-docs/OVERVIEW.md +0 -64
  260. data/docs/self-docs/STATUS.md +0 -73
  261. data/docs/self-docs/self-docs-index.json +0 -51
  262. data/docs/worklog.md +0 -977
  263. data/ecoportal-api-graphql.gemspec +0 -40
  264. data/scripts/auto-worker-scheduler.sh +0 -386
  265. data/tests/actions_get.rb +0 -7
  266. data/tests/contractor_entities_get.rb +0 -20
  267. data/tests/contractor_entity_create.rb +0 -19
  268. data/tests/contractor_entity_udpate.rb +0 -20
  269. data/tests/dump_page_model.rb +0 -74
  270. data/tests/dump_template_model.rb +0 -90
  271. data/tests/loc_structure_get.rb +0 -10
  272. data/tests/loc_structure_update.rb +0 -51
  273. data/tests/loc_structures_get.rb +0 -15
  274. data/tests/local_libs.rb +0 -20
  275. data/tests/validate_queries.rb +0 -127
@@ -1,40 +1,40 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Mutation
5
- module SmartFill
6
- # Submit a rating on a SmartFill generation.
7
- # value: "THUMBS_UP" | "THUMBS_DOWN" (BinaryRatingEnum)
8
- class SubmitFeedback < Logic::Mutation
9
- field_name :smartFillSubmitFeedback
10
-
11
- class_resolver :payload_class, 'Ecoportal::API::GraphQL::Payload::OkPayload'
12
-
13
- private
14
-
15
- def basic_block(&block)
16
- payload_block = block || default_payload_block
17
- proc {
18
- mutation(pageId: :id!, dataFieldId: :id!, value: :BinaryRatingEnum!) {
19
- smartFillSubmitFeedback(
20
- pageId: :pageId,
21
- dataFieldId: :dataFieldId,
22
- value: :value,
23
- &payload_block
24
- )
25
- }
26
- }
27
- end
28
-
29
- def default_payload_block
30
- proc {
31
- ok
32
- errors { details fullMessages }
33
- }
34
- end
35
- end
36
- end
37
- end
38
- end
39
- end
40
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Mutation
5
+ module SmartFill
6
+ # Submit a rating on a SmartFill generation.
7
+ # value: "THUMBS_UP" | "THUMBS_DOWN" (BinaryRatingEnum)
8
+ class SubmitFeedback < Logic::Mutation
9
+ field_name :smartFillSubmitFeedback
10
+
11
+ class_resolver :payload_class, 'Ecoportal::API::GraphQL::Payload::OkPayload'
12
+
13
+ private
14
+
15
+ def basic_block(&block)
16
+ payload_block = block || default_payload_block
17
+ proc {
18
+ mutation(pageId: :id!, dataFieldId: :id!, value: :BinaryRatingEnum!) {
19
+ smartFillSubmitFeedback(
20
+ pageId: :pageId,
21
+ dataFieldId: :dataFieldId,
22
+ value: :value,
23
+ &payload_block
24
+ )
25
+ }
26
+ }
27
+ end
28
+
29
+ def default_payload_block
30
+ proc {
31
+ ok
32
+ errors { details fullMessages }
33
+ }
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -1,13 +1,13 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Mutation
5
- module SmartFill
6
- end
7
- end
8
- end
9
- end
10
- end
11
-
12
- require_relative 'smart_fill/generate'
13
- require_relative 'smart_fill/submit_feedback'
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Mutation
5
+ module SmartFill
6
+ end
7
+ end
8
+ end
9
+ end
10
+ end
11
+
12
+ require_relative 'smart_fill/generate'
13
+ require_relative 'smart_fill/submit_feedback'
@@ -1,46 +1,46 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Mutation
5
- module Template
6
- class CreateRelatedPage < Logic::Mutation
7
- SCHEMA_VERSION = '20260605'.freeze
8
-
9
- field_name :createTemplateRelatedPage
10
-
11
- class_resolver :payload_class, 'Ecoportal::API::GraphQL::Payload::Template::CreateRelatedPage'
12
-
13
- def query(template_id:, title:, register_id:, patch_ver:, filters: nil, **kargs, &block)
14
- input = {
15
- templateId: template_id,
16
- title: title,
17
- registerId: register_id,
18
- patchVer: patch_ver
19
- }
20
- input[:filters] = filters if filters
21
- super(input: input, **kargs, &block)
22
- end
23
-
24
- private
25
-
26
- def basic_block(&block)
27
- payload_block = block || default_payload_block
28
- proc {
29
- mutation(input: :CreateTemplateRelatedPageInput!) {
30
- createTemplateRelatedPage(input: :input, &payload_block)
31
- }
32
- }
33
- end
34
-
35
- def default_payload_block
36
- proc {
37
- item { spread :PageFields }
38
- errors { details fullMessages }
39
- }
40
- end
41
- end
42
- end
43
- end
44
- end
45
- end
46
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Mutation
5
+ module Template
6
+ class CreateRelatedPage < Logic::Mutation
7
+ SCHEMA_VERSION = '20260605'.freeze
8
+
9
+ field_name :createTemplateRelatedPage
10
+
11
+ class_resolver :payload_class, 'Ecoportal::API::GraphQL::Payload::Template::CreateRelatedPage'
12
+
13
+ def query(template_id:, title:, register_id:, patch_ver:, filters: nil, **kargs, &block)
14
+ input = {
15
+ templateId: template_id,
16
+ title: title,
17
+ registerId: register_id,
18
+ patchVer: patch_ver
19
+ }
20
+ input[:filters] = filters if filters
21
+ super(input: input, **kargs, &block)
22
+ end
23
+
24
+ private
25
+
26
+ def basic_block(&block)
27
+ payload_block = block || default_payload_block
28
+ proc {
29
+ mutation(input: :CreateTemplateRelatedPageInput!) {
30
+ createTemplateRelatedPage(input: :input, &payload_block)
31
+ }
32
+ }
33
+ end
34
+
35
+ def default_payload_block
36
+ proc {
37
+ item { spread :TemplateRelatedPages }
38
+ errors { details fullMessages }
39
+ }
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -31,7 +31,7 @@ module Ecoportal
31
31
 
32
32
  def default_payload_block
33
33
  proc {
34
- item { spread :PageFields }
34
+ item { spread :TemplateRelatedPages }
35
35
  errors { details fullMessages }
36
36
  }
37
37
  end
@@ -31,7 +31,7 @@ module Ecoportal
31
31
 
32
32
  def default_payload_block
33
33
  proc {
34
- item { spread :PageFields }
34
+ item { spread :TemplateInformation }
35
35
  errors { details fullMessages }
36
36
  }
37
37
  end
@@ -1,20 +1,20 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Mutation
5
- end
6
- end
7
- end
8
- end
9
-
10
- require_relative 'mutation/location_structure'
11
- require_relative 'mutation/contractor_entity'
12
- require_relative 'mutation/action'
13
- require_relative 'mutation/page'
14
- require_relative 'mutation/register'
15
- require_relative 'mutation/preset_view'
16
-
17
- require_relative 'mutation/ai_summary'
18
- require_relative 'mutation/smart_fill'
19
- require_relative 'mutation/kickstand'
20
- require_relative 'mutation/template'
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Mutation
5
+ end
6
+ end
7
+ end
8
+ end
9
+
10
+ require_relative 'mutation/location_structure'
11
+ require_relative 'mutation/contractor_entity'
12
+ require_relative 'mutation/action'
13
+ require_relative 'mutation/page'
14
+ require_relative 'mutation/register'
15
+ require_relative 'mutation/preset_view'
16
+
17
+ require_relative 'mutation/ai_summary'
18
+ require_relative 'mutation/smart_fill'
19
+ require_relative 'mutation/kickstand'
20
+ require_relative 'mutation/template'
@@ -1,14 +1,14 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Payload
5
- module ContractorEntity
6
- end
7
- end
8
- end
9
- end
10
- end
11
-
12
- require_relative 'contractor_entity/create'
13
- require_relative 'contractor_entity/destroy'
14
- require_relative 'contractor_entity/update'
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Payload
5
+ module ContractorEntity
6
+ end
7
+ end
8
+ end
9
+ end
10
+ end
11
+
12
+ require_relative 'contractor_entity/create'
13
+ require_relative 'contractor_entity/destroy'
14
+ require_relative 'contractor_entity/update'
@@ -1,21 +1,36 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Payload
5
- # Payload for mutations that return { ok: Boolean, errors } instead of an item.
6
- # Used by: submitAiSummaryFeedback, smartFillGenerate, smartFillSubmitFeedback.
7
- class OkPayload < Logic::BaseModel
8
- passboolean :ok
9
-
10
- def success?
11
- !!ok
12
- end
13
-
14
- def error?
15
- !success?
16
- end
17
- end
18
- end
19
- end
20
- end
21
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Payload
5
+ # Payload for mutations that return `{ ok: Boolean, errors }` instead of an item.
6
+ # Used by `submitPageAiSummaryFeedback` (`SubmitFeedbackPayload`).
7
+ #
8
+ # The `smartFillGenerate` / `smartFillSubmitFeedback` users named here before 2026-07-30
9
+ # never existed in the schema — see the CHANGELOG entry that removed them.
10
+ class OkPayload < Logic::BaseModel
11
+ passboolean :ok
12
+
13
+ # The mutations select `errors`, so model it: without this the response contract
14
+ # (`success?`/`error?`/`error_doc`) reported success on a payload that carried errors.
15
+ embeds_one :errors, klass: Error::ValidationErrors, nullable: true
16
+
17
+ def success?
18
+ !!ok && !error?
19
+ end
20
+
21
+ def error?
22
+ return false if errors.nil?
23
+
24
+ !errors.empty?
25
+ end
26
+
27
+ def error_doc
28
+ return unless (err_doc = errors&.doc)
29
+
30
+ { errors: err_doc }
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,13 +1,26 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Payload
5
- module Page
6
- class Draft < Logic::Payload
7
- class_resolver :item_class, 'Ecoportal::API::GraphQL::Model::PageUnion'
8
- end
9
- end
10
- end
11
- end
12
- end
13
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Payload
5
+ module Page
6
+ # Payload of the three draft mutations. ★ None of their schema payload types has an
7
+ # `item` (verified against the live schema 2026-07-30) — they return scalars:
8
+ # createPageDraft -> CreatePageDraftPayload { id } the new draft's page id
9
+ # deleteDraftPage -> DeleteDraftPagePayload { ok }
10
+ # publishDraftPage -> PublishDraftPagePayload { ok }
11
+ # All three used to select `item { ...PageFields }`, which made them invalid documents.
12
+ #
13
+ # `item` stays inherited from `Logic::Payload` for interface compatibility, but with no
14
+ # `item` in the response it materialises a HOLLOW model (all fields nil) rather than
15
+ # returning nil — read `id` / `ok` instead.
16
+ class Draft < Logic::Payload
17
+ class_resolver :item_class, 'Ecoportal::API::GraphQL::Model::PageUnion'
18
+
19
+ passkey :id
20
+ passboolean :ok
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,13 +1,13 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Payload
5
- module Page
6
- class ReviewTask < Logic::Payload
7
- class_resolver :item_class, 'Ecoportal::API::GraphQL::Model::PageUnion'
8
- end
9
- end
10
- end
11
- end
12
- end
13
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Payload
5
+ module Page
6
+ class ReviewTask < Logic::Payload
7
+ class_resolver :item_class, 'Ecoportal::API::GraphQL::Model::Page::Task'
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,23 @@
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Payload
5
+ module Page
6
+ # Payload of `batchUpdateReviewPageTask`. ★ Distinct from `Payload::Page::ReviewTask`:
7
+ # `BatchUpdateReviewPageTaskPayload` has NO `item` — it returns `count` (how many tasks
8
+ # were updated), verified against the live schema 2026-07-30. The mutation previously
9
+ # shared `Payload::Page::ReviewTask` and selected `item { ...PageFields }`, which made
10
+ # the document invalid.
11
+ class ReviewTaskBatch < Logic::Payload
12
+ # UNUSED: this payload has no `item`. A class must still be resolvable because
13
+ # `Logic::Payload`'s inherited `embeds_one :item` materialises a hollow model, and
14
+ # the default `GenericItem` raises by design.
15
+ class_resolver :item_class, 'Ecoportal::API::GraphQL::Model::PageUnion'
16
+
17
+ passthrough :count
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,19 +1,20 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Payload
5
- module Page
6
- end
7
- end
8
- end
9
- end
10
- end
11
-
12
- require_relative 'page/update'
13
- require_relative 'page/archive'
14
- require_relative 'page/unarchive'
15
- require_relative 'page/build_from_template'
16
- require_relative 'page/create_from_template'
17
- require_relative 'page/draft'
18
- require_relative 'page/review_task'
19
- require_relative 'page/update_variable_bindings'
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Payload
5
+ module Page
6
+ end
7
+ end
8
+ end
9
+ end
10
+ end
11
+
12
+ require_relative 'page/update'
13
+ require_relative 'page/archive'
14
+ require_relative 'page/unarchive'
15
+ require_relative 'page/build_from_template'
16
+ require_relative 'page/create_from_template'
17
+ require_relative 'page/draft'
18
+ require_relative 'page/review_task'
19
+ require_relative 'page/review_task_batch'
20
+ require_relative 'page/update_variable_bindings'
@@ -1,11 +1,15 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Payload
5
- class PresetView < Logic::Payload
6
- class_resolver :item_class, 'Ecoportal::API::GraphQL::Model::PresetView'
7
- end
8
- end
9
- end
10
- end
11
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Payload
5
+ class PresetView < Logic::Payload
6
+ class_resolver :item_class, 'Ecoportal::API::GraphQL::Model::PresetView'
7
+
8
+ # `destroyPresetView` returns DestroyPresetViewPayload { clientMutationId errors }
9
+ # only — no `item`, not even `ok` (verified against the live schema 2026-07-30).
10
+ # create/update DO return `item: PresetView`.
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,11 +1,15 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Payload
5
- class Register < Logic::Payload
6
- class_resolver :item_class, 'Ecoportal::API::GraphQL::Model::Register'
7
- end
8
- end
9
- end
10
- end
11
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Payload
5
+ class Register < Logic::Payload
6
+ class_resolver :item_class, 'Ecoportal::API::GraphQL::Model::Register'
7
+
8
+ # `destroyRegister` returns DestroyRegisterPayload { ok } — no `item` (verified
9
+ # against the live schema 2026-07-30). create/update DO return `item: Register`.
10
+ passboolean :ok
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -4,7 +4,7 @@ module Ecoportal
4
4
  module Payload
5
5
  module Template
6
6
  class CreateRelatedPage < Logic::Payload
7
- class_resolver :item_class, 'Ecoportal::API::GraphQL::Model::PageUnion'
7
+ class_resolver :item_class, 'Ecoportal::API::GraphQL::Model::Template::RelatedPages'
8
8
  end
9
9
  end
10
10
  end
@@ -4,7 +4,7 @@ module Ecoportal
4
4
  module Payload
5
5
  module Template
6
6
  class DestroyRelatedPage < Logic::Payload
7
- class_resolver :item_class, 'Ecoportal::API::GraphQL::Model::PageUnion'
7
+ class_resolver :item_class, 'Ecoportal::API::GraphQL::Model::Template::RelatedPages'
8
8
  end
9
9
  end
10
10
  end
@@ -4,7 +4,7 @@ module Ecoportal
4
4
  module Payload
5
5
  module Template
6
6
  class UpdateInformation < Logic::Payload
7
- class_resolver :item_class, 'Ecoportal::API::GraphQL::Model::PageUnion'
7
+ class_resolver :item_class, 'Ecoportal::API::GraphQL::Model::Template::Information'
8
8
  end
9
9
  end
10
10
  end
@@ -1,23 +1,23 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Payload
5
- end
6
- end
7
- end
8
- end
9
-
10
- require_relative 'payload/location_structure'
11
- require_relative 'payload/contractor_entity'
12
- require_relative 'payload/action'
13
- require_relative 'payload/page'
14
- require_relative 'payload/register'
15
- require_relative 'payload/preset_view'
16
-
17
- require_relative 'payload/ai_summary_generate'
18
- require_relative 'payload/ok_payload'
19
-
20
- require_relative 'payload/force_commands'
21
- require_relative 'payload/execute_workflow_commands'
22
- require_relative 'payload/kickstand'
23
- require_relative 'payload/template'
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Payload
5
+ end
6
+ end
7
+ end
8
+ end
9
+
10
+ require_relative 'payload/location_structure'
11
+ require_relative 'payload/contractor_entity'
12
+ require_relative 'payload/action'
13
+ require_relative 'payload/page'
14
+ require_relative 'payload/register'
15
+ require_relative 'payload/preset_view'
16
+
17
+ require_relative 'payload/ai_summary_generate'
18
+ require_relative 'payload/ok_payload'
19
+
20
+ require_relative 'payload/force_commands'
21
+ require_relative 'payload/execute_workflow_commands'
22
+ require_relative 'payload/kickstand'
23
+ require_relative 'payload/template'