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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +87 -0
- data/lib/ecoportal/api/common/graphql/client.rb +0 -2
- data/lib/ecoportal/api/common/graphql/http_client.rb +6 -0
- data/lib/ecoportal/api/graphql/base/ai_summary_version.rb +17 -17
- data/lib/ecoportal/api/graphql/base/file_container.rb +14 -14
- data/lib/ecoportal/api/graphql/base/location_classification_type.rb +15 -15
- data/lib/ecoportal/api/graphql/base/location_structure.rb +27 -27
- data/lib/ecoportal/api/graphql/base/organization.rb +15 -15
- data/lib/ecoportal/api/graphql/base/page/task.rb +24 -0
- data/lib/ecoportal/api/graphql/base/page.rb +17 -16
- data/lib/ecoportal/api/graphql/base/template.rb +35 -0
- data/lib/ecoportal/api/graphql/base.rb +37 -35
- data/lib/ecoportal/api/graphql/builder/contractor_entity.rb +41 -41
- data/lib/ecoportal/api/graphql/compat/response.rb +35 -35
- data/lib/ecoportal/api/graphql/connection/action.rb +11 -11
- data/lib/ecoportal/api/graphql/connection/action_category.rb +11 -11
- data/lib/ecoportal/api/graphql/connection/contractor_entity.rb +11 -11
- data/lib/ecoportal/api/graphql/connection/page.rb +11 -11
- data/lib/ecoportal/api/graphql/connection/person_member.rb +11 -11
- data/lib/ecoportal/api/graphql/connection/preview_page.rb +11 -11
- data/lib/ecoportal/api/graphql/connection.rb +17 -17
- data/lib/ecoportal/api/graphql/file_upload/client.rb +21 -10
- data/lib/ecoportal/api/graphql/fragment/field_configuration.rb +38 -0
- data/lib/ecoportal/api/graphql/fragment/force.rb +14 -10
- data/lib/ecoportal/api/graphql/fragment/location_node.rb +26 -26
- data/lib/ecoportal/api/graphql/fragment/page_task.rb +39 -0
- data/lib/ecoportal/api/graphql/fragment/template.rb +51 -0
- data/lib/ecoportal/api/graphql/fragment.rb +3 -0
- data/lib/ecoportal/api/graphql/input/contractor_entity.rb +14 -14
- data/lib/ecoportal/api/graphql/input/preset_view/update.rb +16 -16
- data/lib/ecoportal/api/graphql/input/workflow_command/add_stage.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_field_configuration.rb +21 -21
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_page.rb +28 -28
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_page_creator_permissions.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/cross_reference.rb +23 -23
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/date.rb +20 -20
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/image_gallery.rb +20 -20
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/people.rb +24 -24
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/plain_text.rb +20 -20
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/rich_text.rb +20 -20
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/select.rb +20 -20
- data/lib/ecoportal/api/graphql/input/workflow_command/move_field.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/reorder_forces.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/reorder_section.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command.rb +251 -251
- data/lib/ecoportal/api/graphql/input.rb +24 -24
- data/lib/ecoportal/api/graphql/logic/connection.rb +34 -34
- data/lib/ecoportal/api/graphql/model/page/task.rb +16 -0
- data/lib/ecoportal/api/graphql/model/page.rb +16 -15
- data/lib/ecoportal/api/graphql/model/person_member.rb +15 -15
- data/lib/ecoportal/api/graphql/model/template.rb +15 -0
- data/lib/ecoportal/api/graphql/model.rb +32 -30
- data/lib/ecoportal/api/graphql/mutation/ai_summary/generate.rb +45 -45
- data/lib/ecoportal/api/graphql/mutation/ai_summary/submit_feedback.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/contractor_entity.rb +14 -14
- data/lib/ecoportal/api/graphql/mutation/page/approve_review_task.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/page/batch_update_review_task.rb +38 -40
- data/lib/ecoportal/api/graphql/mutation/page/create_draft.rb +38 -40
- data/lib/ecoportal/api/graphql/mutation/page/delete_draft.rb +38 -40
- data/lib/ecoportal/api/graphql/mutation/page/execute_force_commands.rb +7 -7
- data/lib/ecoportal/api/graphql/mutation/page/execute_workflow_commands.rb +8 -7
- data/lib/ecoportal/api/graphql/mutation/page/publish_draft.rb +38 -40
- data/lib/ecoportal/api/graphql/mutation/page/reject_review_task.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/page/restart_review_task.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/page/undo_review_task.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/preset_view/destroy.rb +34 -35
- data/lib/ecoportal/api/graphql/mutation/register/destroy.rb +35 -35
- data/lib/ecoportal/api/graphql/mutation/smart_fill/generate.rb +36 -36
- data/lib/ecoportal/api/graphql/mutation/smart_fill/submit_feedback.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/smart_fill.rb +13 -13
- data/lib/ecoportal/api/graphql/mutation/template/create_related_page.rb +46 -46
- data/lib/ecoportal/api/graphql/mutation/template/destroy_related_page.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/template/update_information.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation.rb +20 -20
- data/lib/ecoportal/api/graphql/payload/contractor_entity.rb +14 -14
- data/lib/ecoportal/api/graphql/payload/ok_payload.rb +36 -21
- data/lib/ecoportal/api/graphql/payload/page/draft.rb +26 -13
- data/lib/ecoportal/api/graphql/payload/page/review_task.rb +13 -13
- data/lib/ecoportal/api/graphql/payload/page/review_task_batch.rb +23 -0
- data/lib/ecoportal/api/graphql/payload/page.rb +20 -19
- data/lib/ecoportal/api/graphql/payload/preset_view.rb +15 -11
- data/lib/ecoportal/api/graphql/payload/register.rb +15 -11
- data/lib/ecoportal/api/graphql/payload/template/create_related_page.rb +1 -1
- data/lib/ecoportal/api/graphql/payload/template/destroy_related_page.rb +1 -1
- data/lib/ecoportal/api/graphql/payload/template/update_information.rb +1 -1
- data/lib/ecoportal/api/graphql/payload.rb +23 -23
- data/lib/ecoportal/api/graphql/query/location_structures.rb +57 -57
- data/lib/ecoportal/api/graphql/query/page.rb +45 -45
- data/lib/ecoportal/api/graphql/query/page_with_forces.rb +9 -3
- data/lib/ecoportal/api/graphql/query/pages_workflow_commands.rb +9 -3
- data/lib/ecoportal/api/graphql/query/register_preset_views.rb +78 -78
- data/lib/ecoportal/api/graphql/query.rb +27 -27
- data/lib/ecoportal/api/graphql.rb +9 -5
- data/lib/ecoportal/api/graphql_version.rb +1 -1
- metadata +9 -180
- data/.ai-assistance/bridge/CLAUDE.md +0 -338
- data/.ai-assistance/bridge/archive/.gitkeep +0 -0
- data/.ai-assistance/bridge/archive/oscar-a1b2c3d-gitlab-mcp-doc-update.inbox.md +0 -29
- data/.ai-assistance/bridge/archive/oscar-a1b2c3d-gitlab-mcp-doc-update.outbox.md +0 -18
- data/.ai-assistance/bridge/archive/oscar-c912c25-gemini-design-review.inbox.md +0 -42
- data/.ai-assistance/bridge/archive/oscar-c912c25-gemini-design-review.outbox.md +0 -115
- data/.ai-assistance/bridge/context/gemini-review-prompt.txt +0 -48
- data/.ai-assistance/bridge/context/gemini-review-response.md +0 -104
- data/.ai-assistance/bridge/context/project.md +0 -42
- data/.ai-assistance/bridge/inbox/.gitkeep +0 -0
- data/.ai-assistance/bridge/outbox/.gitkeep +0 -0
- data/.ai-assistance/bridge/outbox/request-for-standards-discovery.md +0 -48
- data/.ai-assistance/bridge/queue/.gitkeep +0 -1
- data/.ai-assistance/capabilities/CLAUDE.md +0 -27
- data/.ai-assistance/capabilities/assumptions-log.md +0 -80
- data/.ai-assistance/capabilities/code.md +0 -47
- data/.ai-assistance/capabilities/connectors.md +0 -37
- data/.ai-assistance/capabilities/cowork.md +0 -55
- data/.ai-assistance/code/OVERVIEW.md +0 -155
- data/.ai-assistance/code/data_fields.md +0 -242
- data/.ai-assistance/code/dependencies.md +0 -151
- data/.ai-assistance/code/diff_as_input.md +0 -234
- data/.ai-assistance/code/diff_pairing_engine.md +0 -243
- data/.ai-assistance/code/diff_service_deep_dive.md +0 -192
- data/.ai-assistance/code/ecoPortal_architecture/00_overview_and_index.md +0 -55
- data/.ai-assistance/code/ecoPortal_architecture/01_terminology_dictionary.md +0 -181
- data/.ai-assistance/code/ecoPortal_architecture/02_data_model.md +0 -192
- data/.ai-assistance/code/ecoPortal_architecture/03_api_layers.md +0 -147
- data/.ai-assistance/code/ecoPortal_architecture/04_graphql_queries_mutations.md +0 -277
- data/.ai-assistance/code/ecoPortal_architecture/05_page_workflows.md +0 -200
- data/.ai-assistance/code/ecoPortal_architecture/06_search_and_filters.md +0 -228
- data/.ai-assistance/code/ecoPortal_architecture/07_data_fields.md +0 -197
- data/.ai-assistance/code/ecoPortal_architecture/08_stages_sections.md +0 -243
- data/.ai-assistance/code/ecoPortal_architecture/09_people_contractors_locations.md +0 -196
- data/.ai-assistance/code/ecoPortal_architecture/10_forces_workflow_builder.md +0 -132
- data/.ai-assistance/code/ecoPortal_architecture/11_integration_gems.md +0 -187
- data/.ai-assistance/code/ecoPortal_architecture/12_ai_documentation_sources_gaps.md +0 -236
- data/.ai-assistance/code/ecoPortal_architecture/13_ai_infrastructure.md +0 -183
- data/.ai-assistance/code/ecoportal_schema_reference.md +0 -240
- data/.ai-assistance/code/filter_contract_matrix.md +0 -177
- data/.ai-assistance/code/graphql_domain_knowledge.md +0 -240
- data/.ai-assistance/code/refactoring/datafield-readwrite-shape-asymmetry.md +0 -71
- data/.ai-assistance/code/refactoring/opportunities.md +0 -251
- data/.ai-assistance/code/schema_analysis.md +0 -321
- data/.ai-assistance/code/search_filters.md +0 -868
- data/.ai-assistance/code/spec_coverage.md +0 -73
- data/.ai-assistance/code/template_diff_pairing_domain.md +0 -175
- data/.ai-assistance/code/workflow-command-guide.md +0 -466
- data/.ai-assistance/code/workflow-space.md +0 -353
- data/.ai-assistance/conventions/CLAUDE.md +0 -30
- data/.ai-assistance/conventions/code-working-tree-protocol.md +0 -199
- data/.ai-assistance/conventions/gitignore-rules.md +0 -42
- data/.ai-assistance/conventions/permission-guidance.md +0 -120
- data/.ai-assistance/integrations/README.md +0 -70
- data/.ai-assistance/integrations/gitkraken-mcp.md +0 -107
- data/.ai-assistance/integrations/gitlab-mcp.md +0 -123
- data/.ai-assistance/integrations/local-git.md +0 -60
- data/.ai-assistance/local_paths.example.md +0 -17
- data/.ai-assistance/projects/TODO.md +0 -118
- data/.ai-assistance/projects/api-v2-to-graphql-migration/DECISIONS.md +0 -168
- data/.ai-assistance/projects/api-v2-to-graphql-migration/INTENT.md +0 -60
- data/.ai-assistance/projects/api-v2-to-graphql-migration/TODO.md +0 -267
- data/.ai-assistance/projects/api-v2-to-graphql-migration/UPSTREAM.md +0 -53
- data/.ai-assistance/projects/api-v2-to-graphql-migration/notes/csv-template-pipeline-design.md +0 -102
- data/.ai-assistance/projects/api-v2-to-graphql-migration/notes/cutover-usecase-gap-audit.md +0 -139
- data/.ai-assistance/projects/compat-layer-audit/COMPAT_AUDIT.md +0 -244
- data/.ai-assistance/projects/dynamic-model-generation/INTENT.md +0 -93
- data/.ai-assistance/projects/eco-helpers-compat/INTENT.md +0 -244
- data/.ai-assistance/projects/eco-helpers-compat/MIGRATION_GUIDE.md +0 -266
- data/.ai-assistance/projects/eco-helpers-compat/TODO.md +0 -86
- data/.ai-assistance/projects/ecoportal-api-v2-doublemodel-review/INTENT.md +0 -101
- data/.ai-assistance/projects/graphql-agent/GAP_ANALYSIS.md +0 -177
- data/.ai-assistance/projects/ooze-graphql-native-migration/DECISIONS.md +0 -161
- data/.ai-assistance/projects/ooze-graphql-native-migration/INTENT.md +0 -125
- data/.ai-assistance/projects/ooze-graphql-native-migration/INVENTORY.md +0 -136
- data/.ai-assistance/projects/ooze-graphql-native-migration/RISKS.md +0 -126
- data/.ai-assistance/projects/ooze-graphql-native-migration/TODO.md +0 -261
- data/.ai-assistance/projects/ooze-graphql-native-migration/analysis/2026-06-30-cutover-workflow-deep-review.md +0 -122
- data/.ai-assistance/projects/ooze-graphql-native-migration/analysis/2026-07-01-forces-via-workflow-commands-miss-rca.md +0 -148
- data/.ai-assistance/projects/page-model/DECISIONS.md +0 -245
- data/.ai-assistance/projects/page-model/TODO.md +0 -190
- data/.ai-assistance/projects/qa-services-delivery/DECISIONS.md +0 -93
- data/.ai-assistance/projects/qa-services-delivery/INTENT.md +0 -76
- data/.ai-assistance/projects/qa-services-delivery/PHASE3-SCOPE.md +0 -115
- data/.ai-assistance/projects/qa-services-delivery/ROADMAP.md +0 -99
- data/.ai-assistance/projects/qa-services-delivery/TODO.md +0 -81
- data/.ai-assistance/projects/search-filter-builder/INTENT.md +0 -107
- data/.ai-assistance/projects/search-filter-builder/TODO.md +0 -131
- data/.ai-assistance/projects/template-automatic-build-maintenance/INTENT.md +0 -87
- data/.ai-assistance/projects/template-automatic-build-maintenance/TODO.md +0 -108
- data/.ai-assistance/projects/template-diff-deploy/INTENT.md +0 -12
- data/.ai-assistance/projects/template-diff-deploy/TODO.md +0 -9
- data/.ai-assistance/projects/template-maintenance/DESIGN.md +0 -134
- data/.ai-assistance/projects/template-maintenance/PHASE0-FINDINGS.md +0 -93
- data/.ai-assistance/projects/template-maintenance/README.md +0 -14
- data/.ai-assistance/projects/template-model-logic/CATEGORY_CATALOG.md +0 -236
- data/.ai-assistance/projects/template-model-logic/CLASSIFICATION_SPIKE.md +0 -243
- data/.ai-assistance/projects/template-model-logic/DESIGN_NOTE.md +0 -154
- data/.ai-assistance/projects/workflow-space/TODO.md +0 -213
- data/.ai-assistance/reinstall-claude-desktop-windows.md +0 -136
- data/.ai-assistance/scripts/CLAUDE.md +0 -150
- data/.ai-assistance/scripts/bridge-inbox-check.sh +0 -75
- data/.ai-assistance/scripts/bridge-init.sh +0 -86
- data/.ai-assistance/scripts/bridge-status.sh +0 -44
- data/.ai-assistance/scripts/capabilities-check.ts +0 -104
- data/.ai-assistance/scripts/check-outbox.sh +0 -43
- data/.ai-assistance/scripts/dep_graph.rb +0 -91
- data/.ai-assistance/scripts/lock-acquire.sh +0 -103
- data/.ai-assistance/scripts/lock-multi.sh +0 -124
- data/.ai-assistance/scripts/lock-queue.sh +0 -94
- data/.ai-assistance/scripts/setup-mcps.test.ts +0 -188
- data/.ai-assistance/scripts/setup-mcps.ts +0 -234
- data/.ai-assistance/scripts/task-complete.ts +0 -74
- data/.ai-assistance/scripts/task-create.ts +0 -75
- data/.ai-assistance/scripts/task-read.ts +0 -125
- data/.ai-assistance/scripts/token-logger.js +0 -220
- data/.ai-assistance/scripts/token-report.ts +0 -158
- data/.ai-assistance/scripts/token-session-start.js +0 -66
- data/.ai-assistance/skills/ai-instructions/SKILL.md +0 -48
- data/.ai-assistance/skills/code-specs/SKILL.md +0 -69
- data/.ai-assistance/skills/corporate-policies/SKILL.md +0 -201
- data/.ai-assistance/skills/dep-graph/SKILL.md +0 -139
- data/.ai-assistance/skills/ep-ai-manager/SKILL.md +0 -417
- data/.ai-assistance/skills/gemini-assist/SKILL.md +0 -63
- data/.ai-assistance/skills/gemini-assist/gemini-mcp-server.js +0 -205
- data/.ai-assistance/skills/gemini-assist/gemini_ask.py +0 -1
- data/.ai-assistance/skills/gemini-assist/gemini_ask.rb +0 -240
- data/.ai-assistance/skills/gemini-assist/prompts/cycle_end_review.txt +0 -25
- data/.ai-assistance/skills/graphql-schema-analysis/SKILL.md +0 -261
- data/.ai-assistance/skills/procedural-memory/SKILL.md +0 -319
- data/.ai-assistance/skills/project-cycle/SKILL.md +0 -177
- data/.ai-assistance/skills/project-self-docs/SKILL.md +0 -181
- data/.ai-assistance/skills/project-self-docs/scripts/self_docs_scan.py +0 -378
- data/.ai-assistance/skills/refactor/SKILL.md +0 -62
- data/.ai-assistance/skills/rubocop/SKILL.md +0 -93
- data/.ai-assistance/skills/ruby-scripting/SKILL.md +0 -215
- data/.ai-assistance/skills/spec-generation/SKILL.md +0 -72
- data/.ai-assistance/standards-version.json +0 -22
- data/.ai-assistance/token-budget.json +0 -32
- data/.ai-assistance/version.json +0 -39
- data/.claude/settings.json +0 -150
- data/.env.example +0 -18
- data/.gitattributes +0 -15
- data/.gitignore +0 -37
- data/.gitlab-ci.yml +0 -45
- data/.markdownlint.json +0 -4
- data/.rspec +0 -3
- data/.rubocop.yml +0 -121
- data/.ruby-version +0 -1
- data/.yardopts +0 -10
- data/CLAUDE.md +0 -243
- data/Gemfile +0 -30
- data/Rakefile +0 -90
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/bin/setup.ps1 +0 -6
- data/docs/self-docs/ARCHITECTURE.md +0 -88
- data/docs/self-docs/CHANGES.jsonl +0 -12
- data/docs/self-docs/COMPLIANCE.md +0 -79
- data/docs/self-docs/CONVENTIONS.md +0 -74
- data/docs/self-docs/INTEGRATIONS.md +0 -65
- data/docs/self-docs/OPERATIONS.md +0 -76
- data/docs/self-docs/OVERVIEW.md +0 -64
- data/docs/self-docs/STATUS.md +0 -73
- data/docs/self-docs/self-docs-index.json +0 -51
- data/docs/worklog.md +0 -977
- data/ecoportal-api-graphql.gemspec +0 -40
- data/scripts/auto-worker-scheduler.sh +0 -386
- data/tests/actions_get.rb +0 -7
- data/tests/contractor_entities_get.rb +0 -20
- data/tests/contractor_entity_create.rb +0 -19
- data/tests/contractor_entity_udpate.rb +0 -20
- data/tests/dump_page_model.rb +0 -74
- data/tests/dump_template_model.rb +0 -90
- data/tests/loc_structure_get.rb +0 -10
- data/tests/loc_structure_update.rb +0 -51
- data/tests/loc_structures_get.rb +0 -15
- data/tests/local_libs.rb +0 -20
- data/tests/validate_queries.rb +0 -127
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Connection
|
|
5
|
-
class ActionCategory < Logic::Connection
|
|
6
|
-
class_resolver :node_class, Base::ActionCategory
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Connection
|
|
5
|
+
class ActionCategory < Logic::Connection
|
|
6
|
+
class_resolver :node_class, Base::ActionCategory
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Connection
|
|
5
|
-
class ContractorEntity < Logic::Connection
|
|
6
|
-
class_resolver :node_class, Model::ContractorEntity
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Connection
|
|
5
|
+
class ContractorEntity < Logic::Connection
|
|
6
|
+
class_resolver :node_class, Model::ContractorEntity
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Connection
|
|
5
|
-
class Page < Logic::Connection
|
|
6
|
-
class_resolver :node_class, 'Ecoportal::API::GraphQL::Model::PageUnion'
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Connection
|
|
5
|
+
class Page < Logic::Connection
|
|
6
|
+
class_resolver :node_class, 'Ecoportal::API::GraphQL::Model::PageUnion'
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Connection
|
|
5
|
-
class PersonMemberConnection < Logic::Connection
|
|
6
|
-
class_resolver :node_class, Model::PersonMember
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Connection
|
|
5
|
+
class PersonMemberConnection < Logic::Connection
|
|
6
|
+
class_resolver :node_class, Model::PersonMember
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Connection
|
|
5
|
-
class PreviewPage < Logic::Connection
|
|
6
|
-
class_resolver :node_class, 'Ecoportal::API::GraphQL::Model::PreviewPage'
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Connection
|
|
5
|
+
class PreviewPage < Logic::Connection
|
|
6
|
+
class_resolver :node_class, 'Ecoportal::API::GraphQL::Model::PreviewPage'
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Connection
|
|
5
|
-
end
|
|
6
|
-
end
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
require_relative 'connection/person_member'
|
|
11
|
-
require_relative 'connection/contractor_entity'
|
|
12
|
-
require_relative 'connection/action_category'
|
|
13
|
-
require_relative 'connection/action'
|
|
14
|
-
require_relative 'connection/page'
|
|
15
|
-
require_relative 'connection/preview_page'
|
|
16
|
-
require_relative 'connection/preset_view'
|
|
17
|
-
require_relative 'connection/pages_workflow_command'
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Connection
|
|
5
|
+
end
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
require_relative 'connection/person_member'
|
|
11
|
+
require_relative 'connection/contractor_entity'
|
|
12
|
+
require_relative 'connection/action_category'
|
|
13
|
+
require_relative 'connection/action'
|
|
14
|
+
require_relative 'connection/page'
|
|
15
|
+
require_relative 'connection/preview_page'
|
|
16
|
+
require_relative 'connection/preset_view'
|
|
17
|
+
require_relative 'connection/pages_workflow_command'
|
|
@@ -22,7 +22,12 @@ module Ecoportal
|
|
|
22
22
|
# page.components.get_by_name('Attachment').file_container_ids = [container_id]
|
|
23
23
|
# api.pages.update(page)
|
|
24
24
|
#
|
|
25
|
-
#
|
|
25
|
+
# Step 1 (GraphQL) authenticates via the gem's email/pass OAuth bearer token.
|
|
26
|
+
# Steps 3-4 (REST v2 `/s3/files`) require the gem to ALSO have been initialised
|
|
27
|
+
# with `api_key:` — `Ecoportal::API::GraphQL.new(email:, pass:, api_key:)` — since
|
|
28
|
+
# those endpoints authenticate via `X-ECOPORTAL-API-KEY`, not the GraphQL bearer
|
|
29
|
+
# token (mirrors `Ecoportal::API::Common::Content::Client#base_request` in
|
|
30
|
+
# ecoportal-api-v2).
|
|
26
31
|
class Client
|
|
27
32
|
POLL_INTERVAL = 2 # seconds between poll attempts
|
|
28
33
|
POLL_MAX_WAIT = 120 # seconds before giving up
|
|
@@ -111,10 +116,16 @@ module Ecoportal
|
|
|
111
116
|
end
|
|
112
117
|
end
|
|
113
118
|
|
|
114
|
-
# --- REST helpers (v2 endpoints,
|
|
119
|
+
# --- REST helpers (v2 endpoints, X-ECOPORTAL-API-KEY auth) ---
|
|
115
120
|
|
|
116
|
-
def
|
|
117
|
-
@
|
|
121
|
+
def api_key
|
|
122
|
+
@api_key ||= @http_client.api_key.tap do |key|
|
|
123
|
+
if key.nil? || key.to_s.strip.empty?
|
|
124
|
+
raise 'File upload requires an api_key: Ecoportal::API::GraphQL.new(email:, pass:, api_key:). ' \
|
|
125
|
+
'The v2 REST endpoints used to register/poll an upload authenticate via ' \
|
|
126
|
+
'X-ECOPORTAL-API-KEY, not the GraphQL OAuth bearer token.'
|
|
127
|
+
end
|
|
128
|
+
end
|
|
118
129
|
end
|
|
119
130
|
|
|
120
131
|
def upload_base_url
|
|
@@ -124,18 +135,18 @@ module Ecoportal
|
|
|
124
135
|
def upload_get(path)
|
|
125
136
|
uri = URI("#{upload_base_url}#{path}")
|
|
126
137
|
request = Net::HTTP::Get.new(uri)
|
|
127
|
-
request['
|
|
128
|
-
request['Accept']
|
|
138
|
+
request['X-ECOPORTAL-API-KEY'] = api_key
|
|
139
|
+
request['Accept'] = 'application/json'
|
|
129
140
|
Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(request) }
|
|
130
141
|
end
|
|
131
142
|
|
|
132
143
|
def upload_post(path, body)
|
|
133
144
|
uri = URI("#{upload_base_url}#{path}")
|
|
134
145
|
request = Net::HTTP::Post.new(uri)
|
|
135
|
-
request['
|
|
136
|
-
request['Content-Type']
|
|
137
|
-
request['Accept']
|
|
138
|
-
request.body
|
|
146
|
+
request['X-ECOPORTAL-API-KEY'] = api_key
|
|
147
|
+
request['Content-Type'] = 'application/json'
|
|
148
|
+
request['Accept'] = 'application/json'
|
|
149
|
+
request.body = JSON.generate(body)
|
|
139
150
|
Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(request) }
|
|
140
151
|
end
|
|
141
152
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
class Fragment
|
|
5
|
+
# `RegisterPresetView#fieldConfigurations` returns a FieldConfigurationUnion.
|
|
6
|
+
# Selections can't be made directly on a union (GraphQL error: "Selections can't
|
|
7
|
+
# be made directly on unions"); the common fields live on FieldConfigurationInterface,
|
|
8
|
+
# which every union member implements, so they're pulled via an inline fragment on
|
|
9
|
+
# the interface rather than repeated per concrete type. Verified against the real
|
|
10
|
+
# frontend fragment (RegisterDataGrid/api/fieldConfigurationFragments/
|
|
11
|
+
# fieldConfigurationFields.graphql) — kept to the interface surface + the same three
|
|
12
|
+
# concrete-type extras it selects; other concrete types fall back to interface-only
|
|
13
|
+
# fields (matches the frontend, which doesn't cover every member either).
|
|
14
|
+
fragment :FieldConfiguration, <<~GRAPHQL
|
|
15
|
+
fragment FieldConfiguration on FieldConfigurationUnion {
|
|
16
|
+
__typename
|
|
17
|
+
... on FieldConfigurationInterface {
|
|
18
|
+
id
|
|
19
|
+
key
|
|
20
|
+
name
|
|
21
|
+
dataFieldLabel
|
|
22
|
+
weight
|
|
23
|
+
}
|
|
24
|
+
... on DateFieldConfiguration {
|
|
25
|
+
showTime
|
|
26
|
+
}
|
|
27
|
+
... on DisplayLocationsFieldConfiguration {
|
|
28
|
+
mode
|
|
29
|
+
}
|
|
30
|
+
... on PageNameFieldConfiguration {
|
|
31
|
+
displayUid
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
GRAPHQL
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -3,6 +3,17 @@ module Ecoportal
|
|
|
3
3
|
class GraphQL
|
|
4
4
|
class Fragment
|
|
5
5
|
# Fields for a Force object, including all bindings needed for scripting.
|
|
6
|
+
#
|
|
7
|
+
# `Force.bindings` is `[BindingInterface]` (verified in the backend:
|
|
8
|
+
# `app/graphql/types/force_type.rb` + `types/forces/binding_interface.rb`), so its common
|
|
9
|
+
# fields are selected directly on the interface — no per-member inline fragments needed.
|
|
10
|
+
#
|
|
11
|
+
# ★ The interface exposes ONLY `name` and `referenceId` (+ `reference` per concrete type):
|
|
12
|
+
# there is NO `id` on a binding. The previous selection asked for `id` inside
|
|
13
|
+
# `... on DataFieldBinding` / `... on SectionBinding`, which makes the whole query invalid.
|
|
14
|
+
# Read/write asymmetry to be aware of: `WorkflowEditBindingInput` / `removeBinding` DO
|
|
15
|
+
# require a binding `id`, so `Force::Binding#id` (and `BindingCollection#delete!`) has no
|
|
16
|
+
# readable source for it — tracked as a shape-asymmetry finding, not fixable client-side.
|
|
6
17
|
fragment :ForceFields, <<~GRAPHQL
|
|
7
18
|
fragment ForceFields on Force {
|
|
8
19
|
id
|
|
@@ -11,16 +22,9 @@ module Ecoportal
|
|
|
11
22
|
customScript
|
|
12
23
|
globalBindingIds
|
|
13
24
|
bindings {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
referenceId
|
|
18
|
-
}
|
|
19
|
-
... on SectionBinding {
|
|
20
|
-
id
|
|
21
|
-
name
|
|
22
|
-
referenceId
|
|
23
|
-
}
|
|
25
|
+
__typename
|
|
26
|
+
name
|
|
27
|
+
referenceId
|
|
24
28
|
}
|
|
25
29
|
}
|
|
26
30
|
GRAPHQL
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
class Fragment
|
|
5
|
-
fragment :LocationNode, <<~GRAPHQL
|
|
6
|
-
fragment LocationNode on LocationNodeInterface {
|
|
7
|
-
id
|
|
8
|
-
name
|
|
9
|
-
weight
|
|
10
|
-
archived
|
|
11
|
-
archivedToken
|
|
12
|
-
parent {
|
|
13
|
-
id
|
|
14
|
-
name
|
|
15
|
-
}
|
|
16
|
-
classifications {
|
|
17
|
-
active
|
|
18
|
-
id
|
|
19
|
-
name
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
GRAPHQL
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
class Fragment
|
|
5
|
+
fragment :LocationNode, <<~GRAPHQL
|
|
6
|
+
fragment LocationNode on LocationNodeInterface {
|
|
7
|
+
id
|
|
8
|
+
name
|
|
9
|
+
weight
|
|
10
|
+
archived
|
|
11
|
+
archivedToken
|
|
12
|
+
parent {
|
|
13
|
+
id
|
|
14
|
+
name
|
|
15
|
+
}
|
|
16
|
+
classifications {
|
|
17
|
+
active
|
|
18
|
+
id
|
|
19
|
+
name
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
GRAPHQL
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
class Fragment
|
|
5
|
+
# Fields of a page TASK (`TaskInterface`: CompletePage / InComment / ReviewPage).
|
|
6
|
+
#
|
|
7
|
+
# The review-task mutations (`approve/reject/restart/undoReviewPageTask`) return
|
|
8
|
+
# `item: TaskInterface` — NOT a page. They used to select `item { ...PageFields }`,
|
|
9
|
+
# which is invalid GraphQL ("Fragment PageFields on BasePageInterface can't be spread
|
|
10
|
+
# inside TaskInterface") and made every one of those mutations fail. The page the
|
|
11
|
+
# caller was after is reachable through `subject` (a `PageUnion`), so it is spread
|
|
12
|
+
# there — where `PageFields` is legal.
|
|
13
|
+
#
|
|
14
|
+
# Verified against the live schema (2026-07-30): TaskInterface exposes complete,
|
|
15
|
+
# completedAt, completedBy, completedByUser, createdAt, due, escalated, escalatedAt,
|
|
16
|
+
# escalationTimes, escalationsDetails, fromPublicTemplate, id, nextEscalationTime,
|
|
17
|
+
# overdue, relativeStatus, scheduledCallbacks, stageId, subject, taskNotes, users.
|
|
18
|
+
fragment :PageTaskFields, <<~GRAPHQL
|
|
19
|
+
fragment PageTaskFields on TaskInterface {
|
|
20
|
+
__typename
|
|
21
|
+
id
|
|
22
|
+
stageId
|
|
23
|
+
complete
|
|
24
|
+
overdue
|
|
25
|
+
escalated
|
|
26
|
+
relativeStatus
|
|
27
|
+
taskNotes
|
|
28
|
+
createdAt { dateTime }
|
|
29
|
+
completedAt { dateTime }
|
|
30
|
+
due { dateTime }
|
|
31
|
+
subject {
|
|
32
|
+
...PageFields
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
GRAPHQL
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
class Fragment
|
|
5
|
+
# `createTemplateRelatedPage` / `destroyTemplateRelatedPage` return
|
|
6
|
+
# `item: RelatedPages` — a related-pages CONFIG entry, not a page. They used to select
|
|
7
|
+
# `item { ...PageFields }` (invalid: "can't be spread inside RelatedPages"), which made
|
|
8
|
+
# both mutations fail.
|
|
9
|
+
#
|
|
10
|
+
# Verified against the live schema (2026-07-30): RelatedPages exposes filters
|
|
11
|
+
# (StoredEsFilter), hasInaccessibleVariables, id, pages (PreviewPageConnection),
|
|
12
|
+
# register (MinimalRegister), registerId, title. Only the scalars are selected here —
|
|
13
|
+
# `pages` is a connection and `filters`/`register` are objects needing their own
|
|
14
|
+
# selections; query them explicitly when needed.
|
|
15
|
+
fragment :TemplateRelatedPages, <<~GRAPHQL
|
|
16
|
+
fragment TemplateRelatedPages on RelatedPages {
|
|
17
|
+
id
|
|
18
|
+
title
|
|
19
|
+
registerId
|
|
20
|
+
hasInaccessibleVariables
|
|
21
|
+
}
|
|
22
|
+
GRAPHQL
|
|
23
|
+
|
|
24
|
+
# `updateTemplateInformation` returns `UpdateInformationPayload { item: Template }`.
|
|
25
|
+
# ★ NOTE the type asymmetry: elsewhere in this gem a "template" is a PAGE
|
|
26
|
+
# (`Query::Templates` and the other template payloads legitimately resolve to
|
|
27
|
+
# `Model::PageUnion`, and validate clean), but THIS mutation returns the narrow
|
|
28
|
+
# `Template` type — hence `item { ...PageFields }` was invalid ("can't be spread
|
|
29
|
+
# inside Template").
|
|
30
|
+
#
|
|
31
|
+
# Verified against the live schema (2026-07-30): Template exposes active,
|
|
32
|
+
# aiDescription, commands (connection), creatorEditable, creatorEnabled, creatorFlags,
|
|
33
|
+
# description, folders, id, public, publicConfig, templateContainerUid, templateType.
|
|
34
|
+
fragment :TemplateInformation, <<~GRAPHQL
|
|
35
|
+
fragment TemplateInformation on Template {
|
|
36
|
+
id
|
|
37
|
+
description
|
|
38
|
+
aiDescription
|
|
39
|
+
templateType
|
|
40
|
+
templateContainerUid
|
|
41
|
+
active
|
|
42
|
+
public
|
|
43
|
+
folders
|
|
44
|
+
creatorEnabled
|
|
45
|
+
creatorEditable
|
|
46
|
+
}
|
|
47
|
+
GRAPHQL
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -35,3 +35,6 @@ require_relative 'fragment/page'
|
|
|
35
35
|
require_relative 'fragment/pages'
|
|
36
36
|
require_relative 'fragment/force'
|
|
37
37
|
require_relative 'fragment/pages_workflow'
|
|
38
|
+
require_relative 'fragment/field_configuration'
|
|
39
|
+
require_relative 'fragment/page_task'
|
|
40
|
+
require_relative 'fragment/template'
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Input
|
|
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 Input
|
|
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,16 +1,16 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Input
|
|
5
|
-
class PresetView
|
|
6
|
-
class Update < Logic::Input
|
|
7
|
-
passkey :id
|
|
8
|
-
passthrough :name, :sorter
|
|
9
|
-
passboolean :preview
|
|
10
|
-
passarray :fieldConfigs
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Input
|
|
5
|
+
class PresetView
|
|
6
|
+
class Update < Logic::Input
|
|
7
|
+
passkey :id
|
|
8
|
+
passthrough :name, :sorter
|
|
9
|
+
passboolean :preview
|
|
10
|
+
passarray :fieldConfigs
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Input
|
|
5
|
-
class WorkflowCommand
|
|
6
|
-
module AddStage
|
|
7
|
-
SCHEMA_VERSION = '20260605'.freeze
|
|
8
|
-
VALID_KEYS = %i[placeholderId name ordering].freeze
|
|
9
|
-
|
|
10
|
-
def self.build(**kwargs)
|
|
11
|
-
kwargs.slice(*VALID_KEYS).compact
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Input
|
|
5
|
+
class WorkflowCommand
|
|
6
|
+
module AddStage
|
|
7
|
+
SCHEMA_VERSION = '20260605'.freeze
|
|
8
|
+
VALID_KEYS = %i[placeholderId name ordering].freeze
|
|
9
|
+
|
|
10
|
+
def self.build(**kwargs)
|
|
11
|
+
kwargs.slice(*VALID_KEYS).compact
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Input
|
|
5
|
-
class WorkflowCommand
|
|
6
|
-
module EditFieldConfiguration
|
|
7
|
-
SCHEMA_VERSION = '20260605'.freeze
|
|
8
|
-
|
|
9
|
-
BASE_KEYS = %i[dataFieldId label tooltip description hideView hiddenOnMobile enableActions globalBinding].freeze
|
|
10
|
-
|
|
11
|
-
def self.build(data_field_id:, **kwargs)
|
|
12
|
-
{ dataFieldId: data_field_id }.
|
|
13
|
-
merge(kwargs.slice(*(BASE_KEYS - [:dataFieldId])).compact).
|
|
14
|
-
tap { |h| h[:byType] = kwargs[:byType] if kwargs.key?(:byType) }
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Input
|
|
5
|
+
class WorkflowCommand
|
|
6
|
+
module EditFieldConfiguration
|
|
7
|
+
SCHEMA_VERSION = '20260605'.freeze
|
|
8
|
+
|
|
9
|
+
BASE_KEYS = %i[dataFieldId label tooltip description hideView hiddenOnMobile enableActions globalBinding].freeze
|
|
10
|
+
|
|
11
|
+
def self.build(data_field_id:, **kwargs)
|
|
12
|
+
{ dataFieldId: data_field_id }.
|
|
13
|
+
merge(kwargs.slice(*(BASE_KEYS - [:dataFieldId])).compact).
|
|
14
|
+
tap { |h| h[:byType] = kwargs[:byType] if kwargs.key?(:byType) }
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Input
|
|
5
|
-
class WorkflowCommand
|
|
6
|
-
module EditPage
|
|
7
|
-
SCHEMA_VERSION = '20260605'.freeze
|
|
8
|
-
VALID_KEYS = %i[
|
|
9
|
-
name icon themeId timeZone disableDirectPermissions mobileEnabled useSectionsOnMobile
|
|
10
|
-
showStrategyForRestrictedStages showAssigneeNamesForRestrictedStages showTaskDueDateForRestrictedStages
|
|
11
|
-
hideActivityStream disableComments enableDashboardImport enableActionsOnFields showCreator active
|
|
12
|
-
counterPrefix counterPostfix counterEnabled counter
|
|
13
|
-
addLocationIds removeLocationIds
|
|
14
|
-
addBaseTags removeBaseTags
|
|
15
|
-
addOtherTags removeOtherTags
|
|
16
|
-
addFolders removeFolders
|
|
17
|
-
creatorEnabled creatorEditable creatorFlags
|
|
18
|
-
].freeze
|
|
19
|
-
|
|
20
|
-
def self.build(**kwargs)
|
|
21
|
-
kwargs.slice(*VALID_KEYS).compact
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Input
|
|
5
|
+
class WorkflowCommand
|
|
6
|
+
module EditPage
|
|
7
|
+
SCHEMA_VERSION = '20260605'.freeze
|
|
8
|
+
VALID_KEYS = %i[
|
|
9
|
+
name icon themeId timeZone disableDirectPermissions mobileEnabled useSectionsOnMobile
|
|
10
|
+
showStrategyForRestrictedStages showAssigneeNamesForRestrictedStages showTaskDueDateForRestrictedStages
|
|
11
|
+
hideActivityStream disableComments enableDashboardImport enableActionsOnFields showCreator active
|
|
12
|
+
counterPrefix counterPostfix counterEnabled counter
|
|
13
|
+
addLocationIds removeLocationIds
|
|
14
|
+
addBaseTags removeBaseTags
|
|
15
|
+
addOtherTags removeOtherTags
|
|
16
|
+
addFolders removeFolders
|
|
17
|
+
creatorEnabled creatorEditable creatorFlags
|
|
18
|
+
].freeze
|
|
19
|
+
|
|
20
|
+
def self.build(**kwargs)
|
|
21
|
+
kwargs.slice(*VALID_KEYS).compact
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|