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,321 +0,0 @@
1
- # Code Spec: EcoPortal GraphQL Schema Analysis
2
-
3
- **Source:** Live introspection from `live.ecoportal.com` — `20260605T101224_live_ep_graphql_schema.graphql.json`
4
- **Last updated:** 2026-06-05
5
-
6
- ---
7
-
8
- ## Schema Overview
9
-
10
- - **161 mutations** across all feature areas
11
- - **22 top-level Query fields** — everything important lives under `currentOrganization`
12
- - **No subscriptions**
13
- - All mutations use a single `input: SomeMutationType!` wrapper argument (consistent)
14
-
15
- ---
16
-
17
- ## Top-Level Query Fields
18
-
19
- All via `currentOrganization: Organization!`:
20
-
21
- ```
22
- action / actions / actionDelta / actionsByPage / actionCategories / actionsCounter
23
- contractorEntity / contractorEntities / contractorEntityDelta
24
- page / pages / pageDelta / myDraftPages / allPages / fullTemplates / minimalTemplates / templates
25
- locationStructure → via org.locations.structure
26
- personMember / personMembers / personMemberDelta
27
- register / registers
28
- checkInConfig / checkInConfigs / visitorTypes / visits / visitStatus / identifyVisitor
29
- charts / home / reporting (namespaced dashboards)
30
- userGroup / userGroups
31
- ... plus 80+ org-level scalar/boolean config fields
32
- ```
33
-
34
- ---
35
-
36
- ## Page Model
37
-
38
- ### PageUnion members
39
- `BasicPage` | `PhasedPage` — only two concrete page types.
40
-
41
- ### BasePageInterface (50 fields — all pages)
42
-
43
- Key fields for gem mapping:
44
-
45
- | Field | Type | Notes |
46
- |-------|------|-------|
47
- | `id` | `ID!` | already mapped |
48
- | `name` | `String!` | already mapped |
49
- | `uid` | `String` | already mapped |
50
- | `icon` | `String!` | already mapped |
51
- | `patchVer` | `Int!` | **critical — concurrency lock** |
52
- | `state` | `StateEnum` | INACTIVE/ACTIVE/COMPLETE |
53
- | `archived` | `Boolean!` | already mapped |
54
- | `archivedAt` | `DateTime` | already mapped |
55
- | `draft` | `Boolean!` | not mapped |
56
- | `externalId` | `ID` | not mapped |
57
- | `locations` | `[LocationNodeInterface!]!` | already mapped (read-only) |
58
- | `otherTags` | `[String!]` | already mapped |
59
- | `taskPriority` | `TaskPriorityEnum` | low/medium/high/none — already mapped |
60
- | `timeZone` | `String` | already mapped |
61
- | `sourceTemplateId` | `ID` | already mapped |
62
- | `template` | `Template` | commented out |
63
- | `organization` | `Organization!` | commented out |
64
- | `registers` | `[Register!]!` | commented out |
65
- | `workflow` | `PagesWorkflow` | not mapped |
66
- | `creatorName` | `String` | already mapped |
67
- | `lastUpdatedByName` | `String` | already mapped |
68
- | `printingEnabled` | `Boolean!` | already mapped |
69
- | `inSystemPagesEnabled` | `Boolean!` | already mapped |
70
- | `hasSmartFields` | `Boolean!` | not mapped |
71
- | `contentShareable` | `Boolean!` | not mapped |
72
- | `enableEmailOut` | `Boolean!` | not mapped |
73
- | `totalReferencesCount` | `Int!` | not mapped |
74
- | `mouldCounter` | `String` | not mapped (counter display field) |
75
-
76
- ### BasicPage (beyond interface)
77
- `dataFields`, `sections`, `globalBindings`, `activities`, `attachedFiles`, `currentAiSummaryVersion`
78
- + extensive `can*` authorization fields (canUpdate, canArchive, canPermission, etc.)
79
-
80
- ### PhasedPage (beyond interface)
81
- Everything from BasicPage plus:
82
- `stages`, `activeStages`, `currentStage`, `stagesIndex`, `latestStageOrdering`
83
- `showAssigneeNamesForRestrictedStages`, `showStrategyForRestrictedStages`, `showTaskDueDateForRestrictedStages`
84
-
85
- ### Stage type (key fields)
86
- `id`, `name`, `ordering`, `state (StageStateEnum)`, `active`, `started`, `locked`
87
- `dataFields`, `sections`, `globalBindings`, `tasks`, `activeTask`
88
- `completionTaskConfig`, `reviewTaskConfig`, `workflowCallbacks`
89
- `forces`, `allowedUserGroupIds`, `tags`
90
- `canUpdate`, `canAccess`, `canPermission`, etc.
91
-
92
- ### Page mutation inputs
93
-
94
- **`UpdatePageInput`** (single `input: UpdatePageInput!` wrapper):
95
- ```
96
- id: ID!
97
- stageId: ID — target stage for phased pages
98
- submit: Boolean — submit stage
99
- dataFields: DataFieldOneToManyInput — { additions, updates, deletions }
100
- task: TaskInput
101
- page: PageInput — { locations, otherTags, timeZone, state, taskPriority, name, externalId }
102
- showHiddenData: Boolean
103
- patchVer: Int — optimistic lock (optional but recommended)
104
- publish: Boolean — for draft pages
105
- ```
106
-
107
- **Page creation** — always from a template:
108
- - `createPageFromTemplate(input: CreateFromTemplateInput!)` — primary creation path
109
- - `templateId: ID!`, `dataFields: DataFieldOneToManyInput!` (required), `page: PageInput`, `stageId`, `submit`, `attach`, `draft`
110
- - `buildPageFromTemplate(input: BuildFromTemplateInput!)` — lighter, no data fields
111
- - `createPageDraft(input: CreatePageDraftInput!)` — draft from template, `templateId: ID!`
112
-
113
- **Page state mutations:**
114
- `archivePage`, `unarchivePage`, `deleteDraftPage`, `publishDraftPage`
115
- `approveReviewPageTask`, `rejectReviewPageTask`, `batchUpdateReviewPageTask`, `restartReviewPageTask`, `undoReviewPageTask`
116
-
117
- **Page output:**
118
- `updatePage` → `{ item: PageUnion, nextTasks: [MinimalTaskInterface], errors: ValidationErrors }`
119
-
120
- ### DataFieldInput (20 field types)
121
- ```
122
- locationField, plainText, checklist, number, date, select, richText,
123
- signature, gauge, geo, file, imageGallery, crossReference,
124
- contractorEntities, people, law, mailbox, actionsList, aiSummary, table
125
- ```
126
- Passed as `DataFieldOneToManyInput { additions, updates, deletions }`.
127
-
128
- ### `patchVer` — concurrency control
129
- - `Int!` on `BasePageInterface` (non-null on every page read)
130
- - `Int` (optional) on `UpdatePageInput`
131
- - Also present on `CheckInConfig` — kiosk configurations share this mechanism
132
- - **Pattern:** read `patchVer` from current page → pass it back in `updatePage` input → server rejects if stale
133
-
134
- ---
135
-
136
- ## Action Model
137
-
138
- ### `Action` type — fields in schema vs gem
139
-
140
- | Field | Schema Type | Gem (`Base::Action`) |
141
- |-------|-------------|----------------------|
142
- | `id` | `ID!` | `passkey :id` ✓ |
143
- | `name` | `String!` | `passthrough :name` ✓ |
144
- | `description` | `String` | `passthrough :description` ✓ |
145
- | `status` | `String!` | `passthrough :status` ✓ |
146
- | `relativeStatus` | `String!` | `passthrough :relativeStatus` ✓ |
147
- | `archived` | `Boolean!` | `passboolean :archived` ✓ |
148
- | `attached` | `Boolean!` | `passboolean :attached` ✓ |
149
- | `standaloneAction` | `Boolean!` | `passboolean :standaloneAction` ✓ |
150
- | `actionCategoryId` | `String` | `passthrough :actionCategoryId` ✓ |
151
- | `assignedPersonMemberIds` | `[ID!]` | `passarray :assignedPersonMemberIds` ✓ |
152
- | `locationIds` | `[ID!]` | `passarray :locationIds` ✓ |
153
- | `fileContainerIds` | `[ID!]!` | `passarray :fileContainerIds` ✓ |
154
- | `altId` | `String` | `passthrough :altId` ✓ |
155
- | `timeZone` | `String` | `passthrough :timeZone` ✓ |
156
- | `dueDate` | `DateTime` | `embeds_one :dueDate` ✓ |
157
- | `reminderDate` | `DateTime` | `embeds_one :reminderDate` ✓ |
158
- | `completedAt` | `DateTime` | `embeds_one :completedAt` ✓ |
159
- | `closedAt` | `DateTime` | `embeds_one :closedAt` ✓ |
160
- | `createdAt` / `updatedAt` | `DateTime` | `embeds_one` ✓ |
161
- | `completed` | `Boolean!` (implicit) | `passboolean :completed` ✓ |
162
- | `closeDetail` | `String` | `passthrough :closeDetail` ⚠ (should embed) |
163
- | `recurrence` | `Recurrence` | **missing** ✗ |
164
- | `dueIn` | `DateInMinutes` | commented out ✗ |
165
- | `reminderIn` | `DateInMinutes` | commented out ✗ |
166
- | `age` | `Int!` | `passthrough :age` ✓ |
167
- | `tags` | `[String!]!` | **missing** ✗ |
168
- | `linkedResources` | `[Resource!]!` | **missing** ✗ |
169
- | `activities` | `ActionActivityConnection!` | **missing** (read-only, complex) |
170
-
171
- ### `UpdateActionInput` vs `CreateActionInput`
172
-
173
- Both wrapped under `input:` — both take:
174
- `name: String!`, `description`, `actionCategoryId`, `dueDate/reminderDate`, `timeZone`, `status`, `completed`, `archived`, `assignedPersonMemberIds`, `locationIds`, `fileContainerIds`, `recurrence: ActionRecurrenceInput`, `dueIn`, `reminderIn`, `closeDetail: ActionCloseDetailInput`
175
-
176
- `UpdateActionInput` adds: `id: ID!`, `updateMode: SeriesUpdateMode (ALL|FORWARD|ONE)`
177
- `CreateActionInput` adds: `draft`, `linkedResource: ActionResourceInput`, no `updateMode`
178
-
179
- ### `ActionRecurrenceInput` — not mapped in gem
180
- ```
181
- daily: { frequency: Int!, copyAssignees, creationTimeframe: CreationTimeframeInput!, endTime }
182
- weekly: { frequency: Int!, copyAssignees, creationTimeframe, endTime, daysOfWeek: [WeekDay!]! }
183
- monthly: { frequency: Int!, copyAssignees, creationTimeframe, endTime, daysOfMonth, nthWeekday: NthWeekdayInput }
184
- ```
185
-
186
- ### `ActionCloseDetailInput`
187
- `{ comment: String, fileContainerIds: [ID!] }` — currently a raw passthrough, should be embedded model.
188
-
189
- ---
190
-
191
- ## ContractorEntity Model
192
-
193
- ### Create vs Update input difference
194
- | Field | Create | Update |
195
- |-------|--------|--------|
196
- | `leadContractorIds` | `[ID!]` | `IdDiffInput` |
197
- | `associatedPeopleIds` | `[ID!]` | `IdDiffInput` |
198
-
199
- `IdDiffInput = { additions: [ID!], removals: [ID!] }`
200
-
201
- The gem must distinguish `Create` vs `Update` input construction for these fields.
202
-
203
- ---
204
-
205
- ## LocationStructure
206
-
207
- ### `UpdateLocationStructureInput`
208
- ```
209
- id: ID!, name, visitorManagementEnabled: Boolean, archived, published, weight: Int
210
- ```
211
- No `patchVer` on location structures.
212
-
213
- ### Additional mutations not yet in gem
214
- `createLocationStructure`, `updateLocationStructure`, `exportLocationStructureCsv`
215
- `createLocationStructureSftpIntegration`, `updateLocationStructureSftpIntegration`, `deleteLocationStructureSftpIntegration`
216
-
217
- ---
218
-
219
- ## Visitor Management / CheckIn
220
-
221
- Accessible via `currentOrganization`:
222
- ```
223
- checkInConfig(id:) → CheckInConfig!
224
- checkInConfigs(...) → CheckInConfigConnection
225
- visitorTypes(...) → VisitorTypeConnection
226
- visits(...) → VisitConnection
227
- visitStatus(...) → Visit
228
- identifyVisitor(...) → IdentifiedVisitor
229
- ```
230
-
231
- ### `CheckInConfig` — has `patchVer: Int!`
232
- Key mutable fields: `name`, `primaryColor`, `requirementsEnabled`, `visitorTypeConfigurations`,
233
- `autoCheckOut`, `legalAgreements`, `locationIds (IdDiffInput)`, `notifyLeadsOnDenial`,
234
- `smsLeadsEnabled`, `registerIntegrations`
235
-
236
- ### `UpdateCheckInConfigInput`
237
- ```
238
- id: ID!, name, primaryColor, requirementsEnabled: Boolean!
239
- visitorTypeConfigurations: VisitorTypeConfigurationOneToManyInput!
240
- autoCheckOut: AutoCheckOutConfigurationInput
241
- legalAgreements: LegalAgreementOneToManyInput
242
- locationIds: IdDiffInput ← CRITICAL for kiosk/RS location fixes
243
- registersAcknowledgement: Boolean!, registerIntegrations: [RegisterIntegrationInput!]
244
- ...
245
- ```
246
-
247
- **Customer use case:** when RS location structure changes break kiosk location bindings,
248
- use `updateCheckInConfig(input: { id:, locationIds: { additions: [...], removals: [...] } })`.
249
-
250
- ---
251
-
252
- ## Delta / Incremental Sync
253
-
254
- Available on `currentOrganization`:
255
- ```
256
- pageDelta(ids: [ID!]!) → [DeltaResult!]!
257
- actionDelta(ids: [ID!]!) → [DeltaResult!]!
258
- contractorEntityDelta(ids: [ID!]!) → [DeltaResult!]!
259
- personMemberDelta(ids: [ID!]!) → [DeltaResult!]!
260
- templateDelta(ids: [ID!]!) → [DeltaResult!]!
261
- ```
262
- `DeltaResult = { id: ID!, delta: DeltaEnum! }` where `DeltaEnum = UPDATED | NOT_FOUND | NEW`
263
-
264
- **Use case for scripts:** Check if a cached set of IDs has changed before re-fetching.
265
-
266
- ---
267
-
268
- ## PersonMember
269
-
270
- Rich type — `id`, `name`, `email`, `realEmail`, `externalId`, `phoneNumber`, `avatarUrl`
271
- `personSchema`, `personSchemaId`, `userGroups`, `userGroupIds`
272
- `organizationHierarchy`, `supervisorId`, `contractorOrganization`, `contractorOrganizationId`
273
- `prefilterLocations`, `prefilterTags`, `tagRestrict`
274
- `privateFields`, `publicFields` (MemberSchemaFields — custom person schema data)
275
- `relatedPages`, `pinnedItems`, `taskCount`
276
-
277
- **No mutation support** in gem, no `Query::PersonMembers`. Org has:
278
- `personMember(id:)`, `personMembers(searchConf:)`, `attachablePersonMembers(searchConf:)`, `personMembersCreatedSince(date:)`
279
-
280
- ---
281
-
282
- ## AI-Powered Mutations (future reference)
283
-
284
- ```
285
- aiToolsFixSpellingGrammar — fix text fields
286
- aiToolsMakeFormal — formalize text
287
- aiToolsRephrase — rephrase content
288
- aiToolsSummarize — summarize content
289
- aiToolsTranslate — translate
290
- generatePageFilters — AI-generated search filters
291
- generatePageSmartFieldContent — fill smart fields automatically
292
- generatePageSummary — generate page summary
293
- ```
294
-
295
- ---
296
-
297
- ## Enums Reference
298
-
299
- | Enum | Values |
300
- |------|--------|
301
- | `StateEnum` | INACTIVE / ACTIVE / COMPLETE |
302
- | `ActionsStatusEnum` | open / closed |
303
- | `TaskPriorityEnum` | low / medium / high / none |
304
- | `SeriesUpdateMode` | ALL / FORWARD / ONE |
305
- | `DeltaEnum` | UPDATED / NOT_FOUND / NEW |
306
-
307
- ---
308
-
309
- ## Gem Coverage Summary
310
-
311
- | Area | Queries | Mutations | Status |
312
- |------|---------|-----------|--------|
313
- | Actions | ✓ actions, action, actionCategories | ✓ create, update, archive | Well covered |
314
- | ContractorEntities | ✓ contractorEntities, contractorEntity | ✓ create, update, destroy | Well covered |
315
- | LocationStructure | ✓ structure, structures, locationDraftById | ✓ draft mutations | Well covered |
316
- | **Pages** | **✗ nothing** | **✗ nothing** | **Major gap** |
317
- | PersonMembers | ✗ | ✗ | Gap |
318
- | Registers | ✗ | ✗ | Gap |
319
- | Visitor management | ✗ | ✗ | Gap (customer urgency) |
320
- | Dashboards/Charts | ✗ | ✗ | Future |
321
- | Delta queries | ✗ | n/a | Useful for scripts |