ecoportal-api-graphql 1.3.5 → 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 +934 -477
- data/lib/ecoportal/api/common/graphql/CLAUDE.md +36 -0
- data/lib/ecoportal/api/common/graphql/client.rb +1 -1
- data/lib/ecoportal/api/common/graphql/http_client.rb +195 -145
- data/lib/ecoportal/api/common/graphql/model/CLAUDE.md +28 -0
- data/lib/ecoportal/api/common/graphql/model/as_input.rb +8 -5
- data/lib/ecoportal/api/common/graphql/model/diffable/classic_diff_service.rb +3 -1
- data/lib/ecoportal/api/common/graphql/model/diffable/diff_service.rb +31 -23
- data/lib/ecoportal/api/common/graphql/model/diffable/hash_diff_nesting.rb +54 -1
- data/lib/ecoportal/api/common/graphql/model/diffable.rb +54 -54
- data/lib/ecoportal/api/graphql/CLAUDE.md +37 -0
- data/lib/ecoportal/api/graphql/base/CLAUDE.md +50 -0
- data/lib/ecoportal/api/graphql/base/action.rb +43 -43
- data/lib/ecoportal/api/graphql/base/ai_summary_version.rb +17 -0
- data/lib/ecoportal/api/graphql/base/contractor_entity/member_changes.rb +67 -67
- data/lib/ecoportal/api/graphql/base/delta_result.rb +16 -0
- data/lib/ecoportal/api/graphql/base/file_container.rb +14 -14
- data/lib/ecoportal/api/graphql/base/force/binding.rb +19 -0
- data/lib/ecoportal/api/graphql/base/force/binding_collection.rb +62 -0
- data/lib/ecoportal/api/graphql/base/force/collection.rb +47 -0
- data/lib/ecoportal/api/graphql/base/force.rb +65 -0
- data/lib/ecoportal/api/graphql/base/kickstand/job.rb +17 -0
- data/lib/ecoportal/api/graphql/base/kickstand/workflow.rb +18 -0
- data/lib/ecoportal/api/graphql/base/kickstand.rb +13 -0
- 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/basic.rb +38 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/actions_list.rb +9 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/ai_summary.rb +18 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/checklist.rb +29 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/collection.rb +119 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/contractor_entities.rb +28 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/cross_reference.rb +54 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/date_field.rb +23 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/file_field.rb +25 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/gauge.rb +19 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/geo.rb +24 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/image_gallery.rb +24 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/law.rb +8 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/mailbox.rb +9 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/number.rb +20 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/people.rb +35 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/plain_text.rb +17 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/rich_text.rb +26 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/select.rb +41 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/signature.rb +9 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/smart_fill.rb +17 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/table.rb +9 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/tag_field.rb +21 -0
- data/lib/ecoportal/api/graphql/base/page/data_field.rb +137 -12
- data/lib/ecoportal/api/graphql/base/page/phased/stage.rb +68 -14
- data/lib/ecoportal/api/graphql/base/page/phased.rb +1 -0
- data/lib/ecoportal/api/graphql/base/page/section.rb +36 -0
- data/lib/ecoportal/api/graphql/base/page/section_collection.rb +85 -0
- data/lib/ecoportal/api/graphql/base/page/task.rb +24 -0
- data/lib/ecoportal/api/graphql/base/page.rb +17 -14
- data/lib/ecoportal/api/graphql/base/pages_workflow/action_type_selection.rb +17 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/callback_type.rb +28 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/command_change.rb +17 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/command_change_message.rb +15 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/command_es_change.rb +17 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/command_interface.rb +36 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/email_config.rb +18 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/escalation_level.rb +19 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/in_system_config.rb +16 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/mailbox_field_selection.rb +17 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/operation_interface.rb +39 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/operations/assign_to.rb +27 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/operations/create_page.rb +21 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/operations/send_notification.rb +30 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/people_field_selection.rb +17 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/recipient_config.rb +34 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/register_field.rb +17 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/task_config_selection.rb +17 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/time_delay_config.rb +16 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/trigger_interface.rb +26 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/triggers/conditional_logic.rb +17 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/user_selection.rb +16 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow.rb +35 -0
- data/lib/ecoportal/api/graphql/base/preset_view.rb +17 -0
- data/lib/ecoportal/api/graphql/base/preview_page.rb +23 -0
- data/lib/ecoportal/api/graphql/base/register.rb +18 -0
- data/lib/ecoportal/api/graphql/base/template.rb +35 -0
- data/lib/ecoportal/api/graphql/base.rb +37 -24
- data/lib/ecoportal/api/graphql/builder/CLAUDE.md +65 -0
- data/lib/ecoportal/api/graphql/builder/contractor_entity.rb +41 -41
- data/lib/ecoportal/api/graphql/builder/kickstand.rb +73 -0
- data/lib/ecoportal/api/graphql/builder/page.rb +210 -41
- data/lib/ecoportal/api/graphql/builder/register/preset_view.rb +84 -0
- data/lib/ecoportal/api/graphql/builder/register.rb +27 -19
- data/lib/ecoportal/api/graphql/builder/template.rb +80 -0
- data/lib/ecoportal/api/graphql/builder/template_builder.rb +174 -0
- data/lib/ecoportal/api/graphql/builder.rb +17 -14
- data/lib/ecoportal/api/graphql/compat/filter_translator.rb +142 -0
- data/lib/ecoportal/api/graphql/compat/page_reference.rb +23 -0
- data/lib/ecoportal/api/graphql/compat/pages.rb +212 -0
- data/lib/ecoportal/api/graphql/compat/registers.rb +84 -0
- data/lib/ecoportal/api/graphql/compat/response.rb +35 -0
- data/lib/ecoportal/api/graphql/compat/search_results.rb +33 -0
- data/lib/ecoportal/api/graphql/compat/stage_collection.rb +70 -0
- data/lib/ecoportal/api/graphql/compat/stage_view.rb +76 -0
- data/lib/ecoportal/api/graphql/compat.rb +17 -0
- data/lib/ecoportal/api/graphql/concerns/data_field_access.rb +71 -0
- data/lib/ecoportal/api/graphql/concerns/deprecation.rb +20 -0
- data/lib/ecoportal/api/graphql/concerns/fragment_definitions.rb +21 -28
- data/lib/ecoportal/api/graphql/concerns/page_compat.rb +51 -0
- data/lib/ecoportal/api/graphql/concerns/snake_camel_access.rb +60 -0
- data/lib/ecoportal/api/graphql/concerns.rb +14 -10
- 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 -0
- data/lib/ecoportal/api/graphql/connection/pages_workflow_command.rb +13 -0
- data/lib/ecoportal/api/graphql/connection/person_member.rb +11 -11
- data/lib/ecoportal/api/graphql/connection/preset_view.rb +11 -0
- data/lib/ecoportal/api/graphql/connection/preview_page.rb +11 -0
- data/lib/ecoportal/api/graphql/connection.rb +17 -13
- data/lib/ecoportal/api/graphql/diff/change.rb +59 -0
- data/lib/ecoportal/api/graphql/diff/command_synthesizer.rb +329 -0
- data/lib/ecoportal/api/graphql/diff/cross_object_diff.rb +165 -0
- data/lib/ecoportal/api/graphql/diff/deploy.rb +121 -0
- data/lib/ecoportal/api/graphql/diff/id_resolver.rb +64 -0
- data/lib/ecoportal/api/graphql/diff/pairing/candidate.rb +32 -0
- data/lib/ecoportal/api/graphql/diff/pairing/engine.rb +173 -0
- data/lib/ecoportal/api/graphql/diff/pairing/ledger.rb +119 -0
- data/lib/ecoportal/api/graphql/diff/pairing/signals.rb +104 -0
- data/lib/ecoportal/api/graphql/diff/strategy.rb +113 -0
- data/lib/ecoportal/api/graphql/diff/version_diff.rb +332 -0
- data/lib/ecoportal/api/graphql/diff.rb +34 -0
- data/lib/ecoportal/api/graphql/file_upload/client.rb +192 -0
- data/lib/ecoportal/api/graphql/file_upload.rb +10 -0
- data/lib/ecoportal/api/graphql/fragment/action.rb +1 -1
- data/lib/ecoportal/api/graphql/fragment/action_category.rb +1 -1
- data/lib/ecoportal/api/graphql/fragment/contractor_entity.rb +1 -1
- data/lib/ecoportal/api/graphql/fragment/field_configuration.rb +38 -0
- data/lib/ecoportal/api/graphql/fragment/force.rb +34 -0
- data/lib/ecoportal/api/graphql/fragment/location_draft.rb +53 -53
- data/lib/ecoportal/api/graphql/fragment/location_node.rb +26 -26
- data/lib/ecoportal/api/graphql/fragment/locations_error.rb +1 -1
- data/lib/ecoportal/api/graphql/fragment/page.rb +85 -0
- data/lib/ecoportal/api/graphql/fragment/page_task.rb +39 -0
- data/lib/ecoportal/api/graphql/fragment/pages/common_page_union.rb +396 -0
- data/lib/ecoportal/api/graphql/fragment/pages.rb +15 -0
- data/lib/ecoportal/api/graphql/fragment/pages_workflow.rb +172 -0
- data/lib/ecoportal/api/graphql/fragment/pagination.rb +1 -1
- data/lib/ecoportal/api/graphql/fragment/template.rb +51 -0
- data/lib/ecoportal/api/graphql/fragment.rb +40 -27
- data/lib/ecoportal/api/graphql/input/action/update.rb +14 -14
- data/lib/ecoportal/api/graphql/input/contractor_entity/update.rb +41 -16
- data/lib/ecoportal/api/graphql/input/contractor_entity.rb +14 -14
- data/lib/ecoportal/api/graphql/input/delta_input.rb +16 -0
- data/lib/ecoportal/api/graphql/input/location_structure/apply_commands.rb +47 -47
- data/lib/ecoportal/api/graphql/input/location_structure/draft/add_commands.rb +49 -49
- data/lib/ecoportal/api/graphql/input/location_structure/update_command.rb +27 -27
- data/lib/ecoportal/api/graphql/input/page/archive.rb +14 -0
- data/lib/ecoportal/api/graphql/input/page/build_from_template.rb +13 -0
- data/lib/ecoportal/api/graphql/input/page/create_draft.rb +13 -0
- data/lib/ecoportal/api/graphql/input/page/create_from_template.rb +18 -0
- data/lib/ecoportal/api/graphql/input/page/delete_draft.rb +13 -0
- data/lib/ecoportal/api/graphql/input/page/publish_draft.rb +13 -0
- data/lib/ecoportal/api/graphql/input/page/review_task.rb +14 -0
- data/lib/ecoportal/api/graphql/input/page/unarchive.rb +14 -0
- data/lib/ecoportal/api/graphql/input/page/update.rb +140 -0
- data/lib/ecoportal/api/graphql/input/page.rb +26 -0
- data/lib/ecoportal/api/graphql/input/preset_view/create.rb +18 -0
- data/lib/ecoportal/api/graphql/input/preset_view/permission.rb +16 -0
- data/lib/ecoportal/api/graphql/input/preset_view/update.rb +16 -0
- data/lib/ecoportal/api/graphql/input/preset_view.rb +14 -0
- data/lib/ecoportal/api/graphql/input/register/create.rb +18 -0
- data/lib/ecoportal/api/graphql/input/register/update.rb +15 -0
- data/lib/ecoportal/api/graphql/input/register.rb +13 -0
- data/lib/ecoportal/api/graphql/input/search_conf/ai_generator.rb +234 -0
- data/lib/ecoportal/api/graphql/input/search_conf.rb +436 -0
- data/lib/ecoportal/api/graphql/input/variable_binding.rb +20 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_action_tag.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_binding.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_comment_tagging_user_group.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_default_direct_strategy_user.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_default_strategy.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_direct_strategy_user.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_field.rb +27 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_force.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_gauge_field_stop.rb +19 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_linked_field_config.rb +23 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_linked_helper.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_operation.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_operation_direct_strategy_user.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_operation_strategy.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_action_type.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_filter.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_people_field.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_task_config.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_user.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_scheduled_callback.rb +23 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_scheduled_callback_action.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_section.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_select_field_option.rb +19 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_stage.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_stage_section.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_stage_tag.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_strategy.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_task.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_task_assignment_user_group.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_workflow_callback.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/collapse_section.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_binding.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_creator_permissions.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_default_strategy.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_field_configuration.rb +21 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_force.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_gauge_field_stop.rb +19 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_linked_field_config.rb +19 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_linked_helper.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_operation.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_operation_strategy.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_page.rb +28 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_page_creator_permissions.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_reminder.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_required_sign_offs.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_restrict_comment_tagging.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_restrict_task_assignment.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_scheduled_callback.rb +22 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_section_header.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_select_field_option.rb +19 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_stage.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_strategy.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_task_due.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_trigger.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/expand_section.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/contractor_entities.rb +24 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/cross_reference.rb +23 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/date.rb +20 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/gauge.rb +20 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/image_gallery.rb +20 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/location_field.rb +24 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/people.rb +24 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/plain_text.rb +20 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/rich_text.rb +20 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/select.rb +20 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/signature.rb +20 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/table.rb +25 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/move_field.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/move_stage.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_action_tag.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_binding.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_callback.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_comment_tagging_user_group.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_default_direct_strategy_user.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_default_strategy.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_direct_strategy_user.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_field.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_force.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_gauge_field_stop.rb +17 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_linked_field_config.rb +17 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_linked_helper.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_operation.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_operation_direct_strategy_user.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_operation_strategy.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_action_type.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_filter.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_people_field.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_task_config.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_user.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_scheduled_callback.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_section.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_select_field_option.rb +17 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_stage.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_stage_section.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_stage_tag.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_strategy.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_task.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_task_assignment_user_group.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_task_due.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_task_priority_level.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/reorder_forces.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/reorder_section.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command.rb +251 -0
- data/lib/ecoportal/api/graphql/input.rb +24 -16
- data/lib/ecoportal/api/graphql/interface/base_page.rb +100 -58
- data/lib/ecoportal/api/graphql/interface/location_structure/command.rb +30 -30
- data/lib/ecoportal/api/graphql/interface/location_structure/nodes.rb +27 -28
- data/lib/ecoportal/api/graphql/logic/base_model.rb +2 -0
- data/lib/ecoportal/api/graphql/logic/base_query.rb +45 -2
- data/lib/ecoportal/api/graphql/logic/connection.rb +34 -34
- data/lib/ecoportal/api/graphql/logic/input.rb +26 -11
- data/lib/ecoportal/api/graphql/model/ai_summary_version.rb +10 -0
- data/lib/ecoportal/api/graphql/model/organization.rb +65 -55
- data/lib/ecoportal/api/graphql/model/page/basic.rb +14 -0
- data/lib/ecoportal/api/graphql/model/page/phased.rb +82 -20
- data/lib/ecoportal/api/graphql/model/page/task.rb +16 -0
- data/lib/ecoportal/api/graphql/model/page.rb +16 -14
- data/lib/ecoportal/api/graphql/model/page_union.rb +21 -0
- data/lib/ecoportal/api/graphql/model/pages_workflow.rb +20 -0
- data/lib/ecoportal/api/graphql/model/person_member.rb +15 -15
- data/lib/ecoportal/api/graphql/model/preset_view.rb +10 -0
- data/lib/ecoportal/api/graphql/model/preview_page.rb +10 -0
- data/lib/ecoportal/api/graphql/model/register.rb +10 -0
- data/lib/ecoportal/api/graphql/model/template.rb +15 -0
- data/lib/ecoportal/api/graphql/model.rb +32 -22
- data/lib/ecoportal/api/graphql/mutation/action/archive.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/action/create.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/action/update.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/ai_summary/generate.rb +45 -0
- data/lib/ecoportal/api/graphql/mutation/ai_summary/submit_feedback.rb +40 -0
- data/lib/ecoportal/api/graphql/mutation/ai_summary.rb +13 -0
- data/lib/ecoportal/api/graphql/mutation/contractor_entity/create.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/contractor_entity/destroy.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/contractor_entity/update.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/contractor_entity.rb +14 -14
- data/lib/ecoportal/api/graphql/mutation/kickstand/bulk_update_jobs.rb +43 -0
- data/lib/ecoportal/api/graphql/mutation/kickstand/bulk_update_workflows.rb +43 -0
- data/lib/ecoportal/api/graphql/mutation/kickstand/fail_job.rb +39 -0
- data/lib/ecoportal/api/graphql/mutation/kickstand/fail_workflow.rb +39 -0
- data/lib/ecoportal/api/graphql/mutation/kickstand/start_job.rb +39 -0
- data/lib/ecoportal/api/graphql/mutation/kickstand/start_workflow.rb +39 -0
- data/lib/ecoportal/api/graphql/mutation/kickstand/stop_workflow.rb +39 -0
- data/lib/ecoportal/api/graphql/mutation/kickstand.rb +18 -0
- data/lib/ecoportal/api/graphql/mutation/location_structure/apply_commands.rb +3 -3
- data/lib/ecoportal/api/graphql/mutation/location_structure/draft/add_commands.rb +2 -2
- data/lib/ecoportal/api/graphql/mutation/location_structure/draft/create.rb +2 -2
- data/lib/ecoportal/api/graphql/mutation/location_structure/draft/drop_bad_commands.rb +3 -3
- data/lib/ecoportal/api/graphql/mutation/location_structure/draft/publish.rb +3 -3
- data/lib/ecoportal/api/graphql/mutation/page/approve_review_task.rb +40 -0
- data/lib/ecoportal/api/graphql/mutation/page/archive.rb +40 -0
- data/lib/ecoportal/api/graphql/mutation/page/batch_update_review_task.rb +38 -0
- data/lib/ecoportal/api/graphql/mutation/page/build_from_template.rb +50 -0
- data/lib/ecoportal/api/graphql/mutation/page/create_draft.rb +38 -0
- data/lib/ecoportal/api/graphql/mutation/page/create_from_template.rb +43 -0
- data/lib/ecoportal/api/graphql/mutation/page/delete_draft.rb +38 -0
- data/lib/ecoportal/api/graphql/mutation/page/execute_force_commands.rb +69 -0
- data/lib/ecoportal/api/graphql/mutation/page/execute_workflow_commands.rb +52 -0
- data/lib/ecoportal/api/graphql/mutation/page/publish_draft.rb +38 -0
- data/lib/ecoportal/api/graphql/mutation/page/reject_review_task.rb +40 -0
- data/lib/ecoportal/api/graphql/mutation/page/restart_review_task.rb +40 -0
- data/lib/ecoportal/api/graphql/mutation/page/unarchive.rb +40 -0
- data/lib/ecoportal/api/graphql/mutation/page/undo_review_task.rb +40 -0
- data/lib/ecoportal/api/graphql/mutation/page/update.rb +40 -0
- data/lib/ecoportal/api/graphql/mutation/page/update_variable_bindings.rb +44 -0
- data/lib/ecoportal/api/graphql/mutation/page.rb +28 -0
- data/lib/ecoportal/api/graphql/mutation/preset_view/create.rb +35 -0
- data/lib/ecoportal/api/graphql/mutation/preset_view/destroy.rb +34 -0
- data/lib/ecoportal/api/graphql/mutation/preset_view/permission.rb +37 -0
- data/lib/ecoportal/api/graphql/mutation/preset_view/update.rb +35 -0
- data/lib/ecoportal/api/graphql/mutation/preset_view.rb +15 -0
- data/lib/ecoportal/api/graphql/mutation/register/create.rb +35 -0
- data/lib/ecoportal/api/graphql/mutation/register/destroy.rb +35 -0
- data/lib/ecoportal/api/graphql/mutation/register/update.rb +35 -0
- data/lib/ecoportal/api/graphql/mutation/register.rb +14 -0
- data/lib/ecoportal/api/graphql/mutation/smart_fill/generate.rb +36 -0
- data/lib/ecoportal/api/graphql/mutation/smart_fill/submit_feedback.rb +40 -0
- data/lib/ecoportal/api/graphql/mutation/smart_fill.rb +13 -0
- data/lib/ecoportal/api/graphql/mutation/template/create.rb +39 -0
- data/lib/ecoportal/api/graphql/mutation/template/create_related_page.rb +46 -0
- data/lib/ecoportal/api/graphql/mutation/template/destroy_related_page.rb +43 -0
- data/lib/ecoportal/api/graphql/mutation/template/publish.rb +39 -0
- data/lib/ecoportal/api/graphql/mutation/template/unpublish.rb +39 -0
- data/lib/ecoportal/api/graphql/mutation/template/update.rb +43 -0
- data/lib/ecoportal/api/graphql/mutation/template/update_information.rb +43 -0
- data/lib/ecoportal/api/graphql/mutation/template.rb +18 -0
- data/lib/ecoportal/api/graphql/mutation.rb +20 -12
- data/lib/ecoportal/api/graphql/payload/ai_summary_generate.rb +12 -0
- data/lib/ecoportal/api/graphql/payload/contractor_entity.rb +14 -14
- data/lib/ecoportal/api/graphql/payload/execute_workflow_commands.rb +36 -0
- data/lib/ecoportal/api/graphql/payload/force_commands.rb +31 -0
- data/lib/ecoportal/api/graphql/payload/kickstand/bulk_update_jobs.rb +36 -0
- data/lib/ecoportal/api/graphql/payload/kickstand/bulk_update_workflows.rb +36 -0
- data/lib/ecoportal/api/graphql/payload/kickstand/job.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/kickstand/workflow.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/kickstand.rb +15 -0
- data/lib/ecoportal/api/graphql/payload/location_structure/draft/create.rb +33 -34
- data/lib/ecoportal/api/graphql/payload/ok_payload.rb +36 -0
- data/lib/ecoportal/api/graphql/payload/page/archive.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/page/build_from_template.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/page/create_from_template.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/page/draft.rb +26 -0
- data/lib/ecoportal/api/graphql/payload/page/review_task.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/page/review_task_batch.rb +23 -0
- data/lib/ecoportal/api/graphql/payload/page/unarchive.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/page/update.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/page/update_variable_bindings.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/page.rb +20 -0
- data/lib/ecoportal/api/graphql/payload/preset_view.rb +15 -0
- data/lib/ecoportal/api/graphql/payload/register.rb +15 -0
- data/lib/ecoportal/api/graphql/payload/template/create.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/template/create_related_page.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/template/destroy_related_page.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/template/publish.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/template/unpublish.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/template/update.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/template/update_information.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/template.rb +18 -0
- data/lib/ecoportal/api/graphql/payload.rb +23 -12
- data/lib/ecoportal/api/graphql/query/action.rb +1 -1
- data/lib/ecoportal/api/graphql/query/action_categories.rb +1 -1
- data/lib/ecoportal/api/graphql/query/actions.rb +2 -2
- data/lib/ecoportal/api/graphql/query/contractor_entities.rb +1 -1
- data/lib/ecoportal/api/graphql/query/file_upload_signature.rb +76 -0
- data/lib/ecoportal/api/graphql/query/location_structure/draft.rb +62 -62
- data/lib/ecoportal/api/graphql/query/location_structure.rb +61 -61
- data/lib/ecoportal/api/graphql/query/location_structures.rb +57 -57
- data/lib/ecoportal/api/graphql/query/page.rb +45 -0
- data/lib/ecoportal/api/graphql/query/page_delta.rb +47 -0
- data/lib/ecoportal/api/graphql/query/page_with_forces.rb +49 -0
- data/lib/ecoportal/api/graphql/query/pages.rb +59 -0
- data/lib/ecoportal/api/graphql/query/pages_workflow_commands.rb +65 -0
- data/lib/ecoportal/api/graphql/query/register_preset_views.rb +78 -0
- data/lib/ecoportal/api/graphql/query/register_preview_pages.rb +83 -0
- data/lib/ecoportal/api/graphql/query/templates.rb +53 -0
- data/lib/ecoportal/api/graphql/query.rb +27 -16
- data/lib/ecoportal/api/graphql.rb +143 -80
- data/lib/ecoportal/api/graphql_version.rb +5 -5
- metadata +333 -25
- data/.gitignore +0 -24
- data/.markdownlint.json +0 -4
- data/.rspec +0 -3
- data/.rubocop.yml +0 -97
- data/.ruby-version +0 -1
- data/.yardopts +0 -10
- data/Gemfile +0 -6
- data/Rakefile +0 -38
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/bin/setup.ps1 +0 -6
- data/ecoportal-api-graphql.gemspec +0 -40
- 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/loc_structure_get.rb +0 -11
- data/tests/loc_structure_update.rb +0 -51
- data/tests/loc_structures_get.rb +0 -15
- data/tests/local_libs.rb +0 -20
data/CHANGELOG.md
CHANGED
|
@@ -1,477 +1,934 @@
|
|
|
1
|
-
# Change Log
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file.
|
|
4
|
-
|
|
5
|
-
## [1.3.
|
|
6
|
-
|
|
7
|
-
###
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
###
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
- `
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
- `
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
- `
|
|
131
|
-
|
|
132
|
-
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
- `
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
-
|
|
194
|
-
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
###
|
|
204
|
-
|
|
205
|
-
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
- `
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
-
|
|
299
|
-
|
|
300
|
-
## [
|
|
301
|
-
|
|
302
|
-
### Added
|
|
303
|
-
|
|
304
|
-
-
|
|
305
|
-
- `
|
|
306
|
-
- `
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
-
|
|
341
|
-
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
- `
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
- `
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
1
|
+
# Change Log
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
## [1.3.16] - 2026-08-13
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Packaging-only republish of `1.3.15` with an allowlisted gemspec (backported from `2.0.0`).
|
|
10
|
+
Versions `1.3.9`-`1.3.15` shipped internal repository content (`.ai-assistance/` project notes,
|
|
11
|
+
`docs/worklog.md`, architecture docs) to rubygems.org via the old denylist `spec.files`; they
|
|
12
|
+
will be yanked. `1.3.16` is the identical `lib/` code (including the `1.3.15` OozeRedirect
|
|
13
|
+
`executeWorkflowCommands` fix) packaged clean, so the `1.x` line keeps a clean latest release.
|
|
14
|
+
|
|
15
|
+
## [1.3.15] - 2026-07-30
|
|
16
|
+
|
|
17
|
+
**Backwards-compatible.** Every change here fixes a query or mutation document that the live
|
|
18
|
+
schema rejected — i.e. code paths that could not run at all — plus the CI gate that found them.
|
|
19
|
+
Cherry-picked onto the 1.3.x line from `main`, where they landed alongside **breaking** changes
|
|
20
|
+
that are deliberately NOT in this release (see "Deferred to 1.4.0" below).
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- **`FileUpload::Client` authenticated the v2 REST endpoints wrongly.** The ported S3
|
|
25
|
+
register/poll steps sent `Authorization: Bearer <oauth_token>`; those endpoints authenticate via
|
|
26
|
+
`X-ECOPORTAL-API-KEY`, so step 3 404'd and `#upload` never completed. `Ecoportal::API::GraphQL.new`
|
|
27
|
+
accepts an additive `api_key:` (independent of the GraphQL endpoint's own email/pass OAuth),
|
|
28
|
+
`HttpClient#api_key` is public, and the client raises a clear error when it is missing.
|
|
29
|
+
⚠ **Not yet live-verified** — verify against a sandbox org before relying on it.
|
|
30
|
+
- **Three invalid union selections.** `Query::RegisterPresetViews` (`fieldConfigurations`),
|
|
31
|
+
`Query::PageWithForces` (`forces`) and `Query::PagesWorkflowCommands` (`workflow`) selected
|
|
32
|
+
fields directly on a union, which is invalid GraphQL ("Selections can't be made directly on
|
|
33
|
+
unions") — all three queries failed outright. They now select through the members' shared
|
|
34
|
+
interface (`FieldConfigurationInterface` / `BasePageInterface`). Response shapes are unchanged.
|
|
35
|
+
- **`fragment ForceFields` asked for a non-existent `id` on bindings.** `Force.bindings` is
|
|
36
|
+
`[BindingInterface]`, whose only fields are `name` / `referenceId` (+ per-member `reference`),
|
|
37
|
+
so every query spreading the fragment was invalid. Now selects on the interface directly.
|
|
38
|
+
NOTE the read/write asymmetry this exposes: `WorkflowEditBindingInput` / `removeBinding` require
|
|
39
|
+
a binding `id` that no read exposes, so `BindingCollection#delete!(binding)` has no source for it.
|
|
40
|
+
- **7 invalid `PageFields` spreads.** The four review-task mutations return `item: TaskInterface`
|
|
41
|
+
(not a page — the page is reachable via `subject`), `Template::{Create,Destroy}RelatedPage`
|
|
42
|
+
return `RelatedPages`, and `Template::UpdateInformation` returns the narrow `Template` type. New
|
|
43
|
+
`:PageTaskFields` / `:TemplateRelatedPages` / `:TemplateInformation` fragments and read-only
|
|
44
|
+
`Base/Model::Page::Task` + `Base/Model::Template::{RelatedPages,Information}` models; the payload
|
|
45
|
+
`item_class`es pointed at `Model::PageUnion`, which never matched the schema. The template
|
|
46
|
+
mutations that genuinely return a page (`Create`/`Publish`/`Unpublish`/`Update`) are unchanged.
|
|
47
|
+
- **6 payloads selected an `item` their type does not have.** `Page::CreateDraft` → `{ id }`,
|
|
48
|
+
`Page::{DeleteDraft,PublishDraft}` → `{ ok }`, `Page::BatchUpdateReviewTask` → `{ count }` (and
|
|
49
|
+
its own `Payload::Page::ReviewTaskBatch`), `Register::Destroy` → `{ ok }`, `PresetView::Destroy`
|
|
50
|
+
→ `{ clientMutationId errors }`. `Payload::Page::Draft` gained `id`/`ok`, `Payload::Register`
|
|
51
|
+
gained `ok`.
|
|
52
|
+
- **`executeWorkflowCommands` was rendered with arguments it never accepted** — the schema takes a
|
|
53
|
+
single `input: ExecuteWorkflowCommandsInput!`, so the **page-level command bus could not run**.
|
|
54
|
+
Both classes' `#query` already built the right `input` hash; only the documents were wrong.
|
|
55
|
+
- **`Payload::OkPayload` now models `errors`** — it selected them but computed `success?` purely
|
|
56
|
+
from `ok`, silently ignoring a populated errors object.
|
|
57
|
+
|
|
58
|
+
### Added (tooling — no runtime effect)
|
|
59
|
+
|
|
60
|
+
- **`validate-queries` CI job** (`.gitlab-ci.yml`): renders every query + mutation against a
|
|
61
|
+
freshly introspected schema and fails on render failures plus the always-invalid selection
|
|
62
|
+
classes ("must have selections", "can't be made on scalars", "can't be made directly on unions",
|
|
63
|
+
"can't be spread inside"). This gate is what found everything above.
|
|
64
|
+
- **`tests/dump_schema.rb`**: fresh introspection through the gem's own `HttpClient`. Requires
|
|
65
|
+
`SERVER` explicitly (the gem's default host is production). Schema dumps are never committed.
|
|
66
|
+
|
|
67
|
+
### Deferred to 1.4.0 (breaking — intentionally absent here)
|
|
68
|
+
|
|
69
|
+
- The AI-summary rewire (`generateAiSummary` → `generatePageSummary`,
|
|
70
|
+
`submitAiSummaryFeedback` → `submitPageAiSummaryFeedback`, changed `#query` keywords,
|
|
71
|
+
`Base::AiSummaryVersion` field removals) and the removal of the `SmartFill` mutations
|
|
72
|
+
(`smartFillGenerate` / `smartFillSubmitFeedback` do not exist in the schema).
|
|
73
|
+
- The 2026-07-13 `WorkflowCommandInput` schema sync and the polymorphic read-model layer.
|
|
74
|
+
|
|
75
|
+
## [1.3.14] - 2026-07-16
|
|
76
|
+
|
|
77
|
+
Re-issue of the **1.3.13 HttpClient resilience fix** under a fresh version. The `1.3.13`
|
|
78
|
+
artifact published to the gem server (2026-07-11) could not be relied upon to contain the
|
|
79
|
+
fix below — RubyGems versions are immutable and cannot be re-pushed, so the fix ships here
|
|
80
|
+
as `1.3.14`. Functionally identical to the *intended* `1.3.13` (this is `1.3.12` + the
|
|
81
|
+
resilience fix, nothing else). **Backwards-compatible.**
|
|
82
|
+
|
|
83
|
+
Consumers that need the 429/1015 resilience (e.g. bulk `cans-upsert` live runs) must floor
|
|
84
|
+
`ecoportal-api-graphql >= 1.3.14` — a `>= 1.3.13` floor is not sufficient.
|
|
85
|
+
|
|
86
|
+
### Fixed
|
|
87
|
+
|
|
88
|
+
- Same fix as documented under `[1.3.13]` below: `Common::GraphQL::HttpClient#execute` routes
|
|
89
|
+
through the inherited `instrument → with_retry { rate_throttling }` pipeline, so a single
|
|
90
|
+
HTTP 429 (Cloudflare edge rate-limit `1015`) no longer aborts the run.
|
|
91
|
+
|
|
92
|
+
## [1.3.13] - 2026-07-12
|
|
93
|
+
|
|
94
|
+
Reliability: the GraphQL `HttpClient` now inherits the **same request-resilience
|
|
95
|
+
contingencies as the REST clients** instead of a bespoke, divergent request path.
|
|
96
|
+
**Backwards-compatible** — `execute` returns the same parsed body and raises the same
|
|
97
|
+
error classes; only the transport path changed.
|
|
98
|
+
|
|
99
|
+
### Fixed
|
|
100
|
+
|
|
101
|
+
- **`Common::GraphQL::HttpClient#execute` no longer bypasses the inherited
|
|
102
|
+
`Common::Client` pipeline.** It previously issued the POST raw
|
|
103
|
+
(`base_request.post`) and handled the response itself, so GraphQL requests got
|
|
104
|
+
**none** of the resilience baked into `ecoportal-api`'s client over the years —
|
|
105
|
+
a single **HTTP 429** (Cloudflare edge rate-limit, error `1015`) aborted the whole
|
|
106
|
+
run. `execute` now routes through `instrument` → `with_retry { rate_throttling }`,
|
|
107
|
+
gaining for free:
|
|
108
|
+
- **rate-limit backoff** via `rate_throttle_client` (default
|
|
109
|
+
`ExponentialIncreaseProportionalDecrease`) — 429s are throttled + retried, not fatal.
|
|
110
|
+
- **retry on 5xx / connection errors** (`WithRetry`, 5 attempts) + empty-body guard.
|
|
111
|
+
- timeouts, and (deep-)logging / APM instrumentation.
|
|
112
|
+
- `handle_http_response` now consumes the wrapped `Common::Response` (single body
|
|
113
|
+
read — also removes a latent double-read hazard). The GraphQL-errors-in-a-200-body
|
|
114
|
+
path (`ResponseError`) is unchanged.
|
|
115
|
+
This is convergence on the shared base, so any future contingency added to
|
|
116
|
+
`Common::Client` now applies to GraphQL automatically.
|
|
117
|
+
|
|
118
|
+
## [1.3.12] - 2026-07-09
|
|
119
|
+
|
|
120
|
+
Compat-layer correctness for register **field filters** + the native `SearchConf` field-filter DSL.
|
|
121
|
+
**Backwards-compatible** — bug fixes (broken field filters returned 0 results) + additive methods;
|
|
122
|
+
no public return type changed. (The `get_by_name`→collection contract change is intentionally **not**
|
|
123
|
+
in this release — it is a breaking change parked on `feature/model-input-fixes` for a deliberate,
|
|
124
|
+
signed-off future decision.)
|
|
125
|
+
|
|
126
|
+
### Fixed
|
|
127
|
+
|
|
128
|
+
- **`Compat::FilterTranslator`** now routes register **FIELD** filters to the backend-correct ES
|
|
129
|
+
operation (previously emitted the system-key operation → 0 results):
|
|
130
|
+
- Date FIELD (key `date.zXXXX`) → `range_date_filter` + `path: membranes.date` (system date keeps
|
|
131
|
+
`date_filter`).
|
|
132
|
+
- Select FIELD (key `select_str.zXXXX`) → `has_any_filter` / `doesnt_have_any_filter` +
|
|
133
|
+
`path: membranes.select_str` + `field_key: 'selected'` (system option key keeps
|
|
134
|
+
`one_of_filter`/`none_of_filter`).
|
|
135
|
+
- `exact_filter` no longer derives a `membranes.<type>` path for **system** keys
|
|
136
|
+
(`external_id`/`id`/`state`) — a spurious path produced term `membranes.external_id.external_id`
|
|
137
|
+
→ 0 results (silent miss → dup-on-upsert). Register FIELD keys still get the nested path.
|
|
138
|
+
- Verified against the backend filter definitions; catalogued in
|
|
139
|
+
`.ai-assistance/code/filter_contract_matrix.md`.
|
|
140
|
+
|
|
141
|
+
### Added
|
|
142
|
+
|
|
143
|
+
- **`SearchConf` field-filter DSL:** `sc[:'date.zXXXX'].between/since/before` now emits
|
|
144
|
+
`range_date_filter` + `membranes.date` for register Date FIELDs; new `FieldRef#any_of` / `#none_of`
|
|
145
|
+
→ `has_any_filter` / `doesnt_have_any_filter` (path + `field_key`) for register field value
|
|
146
|
+
membership (distinct from `one_of`, which ORs `exact_filter` for system keys).
|
|
147
|
+
- **`get_by_id`** on `DataField::Collection` and `SectionCollection` (v2-compat find-by-id) — fixes
|
|
148
|
+
`NoMethodError` in consumers that resolve a field/section by id.
|
|
149
|
+
|
|
150
|
+
## [1.3.11] - 2026-07-04
|
|
151
|
+
|
|
152
|
+
Template automatic **build & maintenance** engine (backwards-compatible — a self-contained new
|
|
153
|
+
`Diff` module + a build emitter; nothing existing changed). Validated **offline** (specs + fixtures +
|
|
154
|
+
shapes checked against the live schema dump); the live UAT→PROD round trip is pending a sandbox org.
|
|
155
|
+
|
|
156
|
+
### Added
|
|
157
|
+
|
|
158
|
+
- **`genomeSignature`** fetched on every data-field type (added once to the `dataFieldInterface`
|
|
159
|
+
fragment, `@skip(if: $only_content)`) + `passthrough :genomeSignature` on `Base::Page::DataField` —
|
|
160
|
+
a strong-but-fallible field-pairing signal.
|
|
161
|
+
- **`Diff::VersionDiff`** — two same-object (retained-id) template snapshots → an exact structural
|
|
162
|
+
changelog: added/removed/changed/moved for stages, sections, fields (label/type/section-move),
|
|
163
|
+
select options (label/weight), **gauge stops** (add/remove/threshold/color, matched by stop id), and
|
|
164
|
+
typed **`byType` field config** (conservative, only confirmed read↔input-key matches: Gauge `max`;
|
|
165
|
+
Select `dataType/multiple/flat/other/otherDesc`; Date `showTime/pastOnly/todayButton`).
|
|
166
|
+
- **`Diff::Change`** — command-ready change (`op`/`kind`/`id`/`label`/`path`/`attribute`/`before`/
|
|
167
|
+
`after`/`parent_id`/`by_type`) with a human `#description`; `#to_h` is the stable interchange shape.
|
|
168
|
+
- **`Diff::CommandSynthesizer`** — a `Change` set → an ordered `WorkflowCommand` batch (the replayable
|
|
169
|
+
"commit"): moves/renames/config, options, gauge stops, `editFieldConfiguration(byType:)`, with
|
|
170
|
+
**`placeholderId` threading** so dependent intra-batch creates reference not-yet-created nodes.
|
|
171
|
+
Genuinely ambiguous cases (field type change, moves without a target id) are left **UNSUPPORTED** —
|
|
172
|
+
never guessed.
|
|
173
|
+
- **`Diff::Deploy`** — `from_versions(before, after, target_doc:)` / `from_cross_object(...)` produce
|
|
174
|
+
the ordered batch ready for `executeWorkflowCommands`; `#execute!` refuses to run while the honest
|
|
175
|
+
`unsupported` list is non-empty unless `allow_partial: true`; inert until an executor is passed.
|
|
176
|
+
- **`Diff::IdResolver`** — indexes a target doc's stage names + section headings → ids for move
|
|
177
|
+
resolution; duplicate keys resolve to `nil` (never guesses).
|
|
178
|
+
- **`Diff::Pairing::{Engine,Signals,Candidate,Ledger}`** — multi-signal equivalence matching for
|
|
179
|
+
cross-object templates (genome 0.5 + type 0.2 + label 0.2 + options-by-value 0.1, averaged over
|
|
180
|
+
applicable signals; greedy 1:1; auto-accept ≥0.85, ambiguous 0.5–0.85, unmatched <0.5; genome
|
|
181
|
+
mismatch scores 0 but does **not** veto). `Ledger` persists confirmed pairs (consulted first;
|
|
182
|
+
human corrections supersede).
|
|
183
|
+
- **`Diff::Strategy`** — composable diff modalities: pairing (`:id`/`:genome`/`:type_label`/
|
|
184
|
+
`:assisted`) × scope (`:structural`/`:config_only`/`:data_migration`) × move-sensitivity × intent
|
|
185
|
+
(`:changelog`/`:deploy`/`:sync_readiness`). `.default` reproduces exact pre-existing behaviour.
|
|
186
|
+
- **`Diff::CrossObjectDiff`** — diffs two templates with **no shared ids** by building the
|
|
187
|
+
id-correspondence map via `Pairing::Engine` (+ optional `Ledger`), then emitting the same `Change`
|
|
188
|
+
output that feeds `CommandSynthesizer`/`Deploy`. Ambiguous/unmatched held in `#unresolved` for a
|
|
189
|
+
human — never auto-paired.
|
|
190
|
+
- **`Builder::TemplateBuilder`** — a declarative template spec (stages→sections→fields→options→
|
|
191
|
+
config→gauge-stops) → an ordered `WorkflowCommand` batch for `Builder::Template#create/update`,
|
|
192
|
+
using the **same `placeholderId` threading** as the diff synthesizer so build-from-scratch and
|
|
193
|
+
diff-deploy emit through one layer. Emits only verified input `VALID_KEYS`. A field's `description`
|
|
194
|
+
(e.g. a CSV/hidden-field identity token) is emitted as a follow-up `editFieldConfiguration(
|
|
195
|
+
dataFieldId:, description:)` — the correct schema seam, since `WorkflowAddFieldInput` has no
|
|
196
|
+
`description` key.
|
|
197
|
+
- **Stage/section back-refs on added nodes** (`Diff::CommandSynthesizer`) — an added field's `addField`
|
|
198
|
+
now carries `sectionId` (`Change#parent_id`) + `stageId` (new `Change#owner_id`); an added section
|
|
199
|
+
emits a follow-up `addStageSection(stageId:, sectionId:)`. All threaded via `ref()` (parent
|
|
200
|
+
placeholder when created same-batch, else real id; omitted when unknown → historical behaviour
|
|
201
|
+
unchanged). `VersionDiff` records `parent_id`/`owner_id` on added field/section changes.
|
|
202
|
+
|
|
203
|
+
### Fixed
|
|
204
|
+
|
|
205
|
+
- **Fragment references migrated to the `spread :Name` registry convention.** The Action and
|
|
206
|
+
ContractorEntity **mutations** (`create`/`update`/`destroy`, `create`/`update`/`archive`) still used
|
|
207
|
+
the dead `___Const__Fragment` convention, which resolves a Ruby constant `Fragment::<Name>` that no
|
|
208
|
+
longer exists (fragments are a registry now) → `uninitialized constant … Fragment::… (NameError)` at
|
|
209
|
+
render time. Now `spread :Action` / `spread :ContractorEntity`, matching the already-migrated queries.
|
|
210
|
+
(The sibling breakage in eco-helpers' location-command optimizations is fixed in eco-helpers 3.2.17;
|
|
211
|
+
it crashed the live act-gov locations sync.)
|
|
212
|
+
- **Kickstand workflow mutations — bare `DateTime` selection.** `Kickstand::{Start,Stop,Fail}Workflow`
|
|
213
|
+
selected `startedAt`/`stoppedAt`/`failedAt` bare → "Field must have selections". Now
|
|
214
|
+
`{ dateTime timeZone }` (same class as the 1.3.10 LocationStructure fix).
|
|
215
|
+
- **`tests/validate_queries.rb` now renders MUTATIONS too** (was queries only) and **hard-fails on a
|
|
216
|
+
render error** (dead fragment / unresolved constant), not just a soft skip — the offline guard for
|
|
217
|
+
both classes above. It caught the 3 Kickstand bugs immediately.
|
|
218
|
+
|
|
219
|
+
### Schema realities (verified against the live introspection dump)
|
|
220
|
+
|
|
221
|
+
- **`required` cannot be set via the workflow command bus** — there is NO `required` input key anywhere
|
|
222
|
+
in the schema (not on `WorkflowAddFieldInput`, not on `WorkflowEditFieldConfigurationInput` or any of
|
|
223
|
+
its 12 byType sub-inputs). Callers must treat field-`required` as **read-only / out-of-band**
|
|
224
|
+
(ecoportal-qa `:skip`s `required`-readiness by design).
|
|
225
|
+
|
|
226
|
+
### Dependencies
|
|
227
|
+
|
|
228
|
+
- **Requires `ecoportal-api-v2 >= 3.3.3`** (was `>= 3.3.2`). 3.3.2 has a Ruby-3.x `TypeError` in the
|
|
229
|
+
`DoubleModel` cascade (`_cascaded_attributes_trace`) that crashes `as_update`/`DiffService` on any
|
|
230
|
+
model with nested attributes — fixed in v2 3.3.3. Raising the floor stops the broken v2 from
|
|
231
|
+
resolving on consumers.
|
|
232
|
+
|
|
233
|
+
### Known gaps (tracked, not in this release)
|
|
234
|
+
|
|
235
|
+
- Live characterization (UAT→PROD replay + verify) is pending a sandbox org + credentials.
|
|
236
|
+
|
|
237
|
+
## [1.3.10] - 2026-07-03
|
|
238
|
+
|
|
239
|
+
Hotfix (backwards-compatible). Resolves a live failure on the Turners & Growers users sync.
|
|
240
|
+
|
|
241
|
+
### Fixed
|
|
242
|
+
|
|
243
|
+
- **LocationStructure query — `updatedAt` bare selection** → `Field must have selections (field
|
|
244
|
+
'updatedAt' returns DateTime but has no selections)`. `LocationStructureType.updatedAt` returns the
|
|
245
|
+
`DateTime` object (`{ dateTime, timeZone }`), so it must be selected with sub-fields. Fixed in
|
|
246
|
+
`Query::LocationStructure` and `Query::LocationStructure::Draft` (now `updatedAt { dateTime timeZone }`).
|
|
247
|
+
The plural `Query::LocationStructures` does not select it and was unaffected.
|
|
248
|
+
- **Root cause:** the bare selection has existed since 2023 (v0.3.x) but was **never exercised** —
|
|
249
|
+
no spec covered these queries, and the tagtree/users-sync path only began fetching the location
|
|
250
|
+
structure via GraphQL (rather than APIv2) as of the cutover, so it first ran in production.
|
|
251
|
+
- **Regression guard added:** `spec/.../query/location_structure_spec.rb` renders the query blocks
|
|
252
|
+
offline and asserts `updatedAt` carries `{ dateTime timeZone }` — this would have failed in CI.
|
|
253
|
+
- **LocationDraft fragment — `createdAt` over-selection** (found by the full audit below): selected
|
|
254
|
+
`createdAt { dateTime }`, but `Draft.createdAt` is an `ISO8601DateTime` **scalar** → would throw
|
|
255
|
+
`Selections can't be made on scalars` whenever the location-structure **draft** query runs. Now bare
|
|
256
|
+
`createdAt`. Guarded by the same spec.
|
|
257
|
+
|
|
258
|
+
### Added
|
|
259
|
+
|
|
260
|
+
- **`tests/validate_queries.rb`** — offline audit: renders every gem query (auth stubbed, no network),
|
|
261
|
+
assembles its fragments, and validates the full document against a schema introspection JSON. Flags
|
|
262
|
+
the whole bug class — object fields selected bare ("must have selections") and scalars over-selected
|
|
263
|
+
("selections can't be made on scalars"). A full run confirmed these two location fixes are the ONLY
|
|
264
|
+
such issues across all 17 query classes (contractors, actions, pages, register, templates: clean).
|
|
265
|
+
|
|
266
|
+
## [1.3.9] - 2026-07-02
|
|
267
|
+
|
|
268
|
+
APIv2→GraphQL cutover hardening (backwards-compatible). Live-validated on the maintained ooze
|
|
269
|
+
integrations (toocs-coding, cans-upsert).
|
|
270
|
+
|
|
271
|
+
### Fixed
|
|
272
|
+
|
|
273
|
+
- **Faithful dry-run body** — `Compat::Pages#get_body` returns the SAME input `#update`/`#create`
|
|
274
|
+
would send (under the `'page'` key), incl. `dataFields.updates` (invisible to `page.as_update`
|
|
275
|
+
on phased pages). Create previews render as `CreateFromTemplateInput` (marker-based
|
|
276
|
+
`#new_draft?`) instead of mislabelling as updates.
|
|
277
|
+
- **Stage submit/sign-off carries `stageId`** — `Input::Page::Update.from_model` raises if a
|
|
278
|
+
submit/task is requested without a stage; `Compat::StageView` records the viewed stage on the
|
|
279
|
+
page; `compat_stage_id` resolves pinned → active(stage-view) → current. People-field
|
|
280
|
+
permissions are stage-scoped, so a submit must name its stage.
|
|
281
|
+
- **`CrossReference#dirty?`** compares the reference-id SET vs `original_doc` — no phantom
|
|
282
|
+
`referenceIds: []` clears (empty→empty / same→same is not dirty).
|
|
283
|
+
- **`Number`/`Gauge` blank → nil, never `0.0`** — an empty CSV cell no longer coerces to a real
|
|
284
|
+
zero. Shared `DataField#numeric_or_nil`.
|
|
285
|
+
- **`People` reader** falls back to the `people{id}` nodes when `peopleIds` is blank — an append
|
|
286
|
+
can't wipe existing people.
|
|
287
|
+
- **`Compat::Pages#create` resolves `templateId` from the get_new marker**
|
|
288
|
+
(`_compat_source_template_id`), matching the dry-run — fixes a live `templateId: null` failure.
|
|
289
|
+
|
|
290
|
+
### Added
|
|
291
|
+
|
|
292
|
+
- **Exact-match register filter** — `Compat::FilterTranslator` maps a v2 `type: 'exact_filter'`
|
|
293
|
+
(alias `'is_filter'`) → GraphQL `is_filter` (whole-value equality on a field's `.exact` keyword
|
|
294
|
+
subfield), deriving the `membranes.<type>` path. Fixes exact-id existence checks (partial
|
|
295
|
+
`match_filter` missed exact SKUs → duplicate pages). Note: case-insensitive, first-64-chars.
|
|
296
|
+
- **`Builder::Page#archive(clear_external_id:)`** — optionally blanks `externalId` (a separate
|
|
297
|
+
`updatePage`) before archiving, for cleanup of a failed/duplicate creation; default `false`
|
|
298
|
+
keeps it. externalId is the per-org, per-model integration pairing key.
|
|
299
|
+
|
|
300
|
+
## [1.3.8] - 2026-06-12
|
|
301
|
+
|
|
302
|
+
### Added
|
|
303
|
+
|
|
304
|
+
- **Template mutations** — full lifecycle for creating and updating workflow templates:
|
|
305
|
+
- `Mutation::Template::{Create,Update}` — `createPageTemplate` / `updatePageTemplate` (both accept `WorkflowCommandInput` command bus)
|
|
306
|
+
- `Mutation::Template::{Publish,Unpublish}` — `publishTemplate` / `unpublishTemplate`
|
|
307
|
+
- `Mutation::Template::UpdateInformation` — update template `description`, `aiDescription`, `templateType`
|
|
308
|
+
- `Mutation::Template::{CreateRelatedPage,DestroyRelatedPage}` — manage template related-pages
|
|
309
|
+
- `Builder::Template` wired as `api.template`
|
|
310
|
+
- **`updateVariableBindings`** — `Mutation::Page::UpdateVariableBindings` maps named force variable slots to data field IDs on a page; `Input::VariableBinding` value object
|
|
311
|
+
- **Kickstand job mutations** — `Mutation::Kickstand::{StartJob,FailJob,BulkUpdateJobs}`; `Builder::Kickstand` extended with `start_job`, `fail_job`, `bulk_update_jobs`
|
|
312
|
+
|
|
313
|
+
## [1.3.7] - 2026-06-12
|
|
314
|
+
|
|
315
|
+
### Added
|
|
316
|
+
|
|
317
|
+
- **PagesWorkflow space (W1–W5)**
|
|
318
|
+
- `Base::PagesWorkflow` + sub-model tree (`pages_workflow/`): `RegisterField`, `CallbackType`,
|
|
319
|
+
`OperationInterface`, `TriggerInterface`, and supporting types — read model for the
|
|
320
|
+
page-workflow configuration (`autoPageCreationEnabled`, `fields`, `stages`).
|
|
321
|
+
- `Model::PagesWorkflow` with class resolver.
|
|
322
|
+
- **Workflow command bus**: `Input::WorkflowCommandInput` covering ~80 command types under
|
|
323
|
+
`input/workflow_command/`. `Mutation::Page::ExecuteWorkflowCommands` +
|
|
324
|
+
`Payload::ExecuteWorkflowCommands`.
|
|
325
|
+
- Workflow fragments registered for assembly.
|
|
326
|
+
- _Note: the workflow command surface is volatile upstream — designed to absorb change._
|
|
327
|
+
- **Force model / ForceCompat**
|
|
328
|
+
- `Base::Force` (+ `force/` sub-models), Force fragment.
|
|
329
|
+
- `Mutation::Page::ExecuteForceCommands`, `Payload::ForceCommands`, `Query::PageWithForces`.
|
|
330
|
+
- **DataField type hierarchy (Phase E)**
|
|
331
|
+
- Full set of typed `Base::Page::DataField` subclasses: `PlainText`, `RichText`, `DateField`,
|
|
332
|
+
`Number`, `Gauge`, `People`, `Select`, `Checklist`, `TagField`, `Geo`, `Signature`,
|
|
333
|
+
`ContractorEntities`, `CrossReference`, `ImageGallery`, `FileField`, `Mailbox`,
|
|
334
|
+
`ActionsList`, `Law`, `AiSummary`, `Table`, `SmartFill`, dispatched via `TYPE_MAP`/`from_doc`.
|
|
335
|
+
- `DataField::Collection` — `dirty_inputs`, `dirty_additions`, `dirty_deletions`,
|
|
336
|
+
`add`, `mark_for_deletion`.
|
|
337
|
+
- **Register builder & models**
|
|
338
|
+
- `Builder::Register` (+ `register/preset_view`), `Model::Register`,
|
|
339
|
+
`Mutation::Register` (`create`/`update`/`destroy`), `Input::Register`, `Payload::Register`.
|
|
340
|
+
- **Preset views**
|
|
341
|
+
- `Model::PresetView`, `Mutation::PresetView` (`create`/`update`/`destroy`/`permission`),
|
|
342
|
+
`Query::RegisterPresetViews`, `Input::PresetView`, `Payload::PresetView`.
|
|
343
|
+
- **AI mutations**
|
|
344
|
+
- `Mutation::SmartFill` (`generate`/`submit_feedback`).
|
|
345
|
+
- `Mutation::AiSummary` (`generate`/`submit_feedback`), `Model::AiSummaryVersion`,
|
|
346
|
+
`Payload::AiSummaryGenerate`.
|
|
347
|
+
- **Review task & draft lifecycle mutations**
|
|
348
|
+
- Review tasks: `approve`/`reject`/`restart`/`undo`/`batch_update` (`Mutation::Page::*ReviewTask`),
|
|
349
|
+
`Payload::Page::ReviewTask`.
|
|
350
|
+
- Drafts: `Mutation::Page::CreateDraft`/`PublishDraft`/`DeleteDraft`, `Payload::Page::Draft`.
|
|
351
|
+
- Templates: `Mutation::Page::BuildFromTemplate`/`CreateFromTemplate` + payloads.
|
|
352
|
+
- **Queries**
|
|
353
|
+
- `Query::PageDelta` (+ `Base::DeltaResult`, `Input::DeltaInput`).
|
|
354
|
+
- `Query::RegisterPreviewPages` (+ `Base::PreviewPage`).
|
|
355
|
+
- `Query::FileUploadSignature` + file-upload helper.
|
|
356
|
+
- **`Input::SearchConf`** — fluent/chainable filter DSL and `SearchConf.from_description`
|
|
357
|
+
(AI-assisted filter generation from natural language).
|
|
358
|
+
- **Compat layer for `eco-helpers`** — `Compat::Pages` (`#each` cursor-paginated full iteration),
|
|
359
|
+
`Compat::Registers`, `Compat::FilterTranslator`, `Compat::PageReference`,
|
|
360
|
+
`Compat::StageCollection`, `Compat::StageView`, `Compat::SearchResults`, `Compat::Response`.
|
|
361
|
+
- **Concerns** — `SnakeCamelAccess` (camelCase→snake_case delegation), `DataFieldAccess`,
|
|
362
|
+
`PageCompat`, `Deprecation`.
|
|
363
|
+
- `Payload::OkPayload` base payload.
|
|
364
|
+
- **Page read layer (Phase A)**
|
|
365
|
+
- `Fragment::PageFields` — named fragment on `BasePageInterface` covering identity, state,
|
|
366
|
+
lifecycle, and location fields. Includes `__typename` for union dispatch.
|
|
367
|
+
- `Interface::BasePage` — added `passboolean :draft` and `passthrough :externalId`.
|
|
368
|
+
- `Base::Page::Basic < Interface::BasePage` — concrete basic page class.
|
|
369
|
+
- `Base::Page::Phased` — `passarray :stages` (raw array until typed in Phase C).
|
|
370
|
+
- `Model::Page::Basic`, `Model::Page::Phased` — concrete model classes with class resolvers.
|
|
371
|
+
- `Model::PageUnion` — factory module: dispatches `.new(doc)` to `Basic` or `Phased`
|
|
372
|
+
based on `__typename`. Used as `item_class` / `node_class` throughout.
|
|
373
|
+
- `Connection::Page < Logic::Connection` — paginated page connection with `PageUnion` nodes.
|
|
374
|
+
- `Query::Page` (single page by ID), `Query::Pages` (paginated list), `Query::Templates`.
|
|
375
|
+
- `Model::Organization` — wired `query :page`, `query :pages`, `query :templates`.
|
|
376
|
+
- **Page write layer (Phase B)**
|
|
377
|
+
- `Input::Page` — maps `PageInput` fields; owns `PAGE_FIELD_KEYS` as single source of truth.
|
|
378
|
+
- `Input::Page::Update` — maps `UpdatePageInput`; `from_model` builds the nested `page:`
|
|
379
|
+
sub-hash and always injects `patchVer` (a current `patchVer` must be fetched before update).
|
|
380
|
+
- `Input::Page::Archive`, `Input::Page::Unarchive`.
|
|
381
|
+
- `Mutation::Page::Update`/`Archive`/`Unarchive`, `Payload::Page::Update`/`Archive`/`Unarchive`
|
|
382
|
+
(all return a `PageUnion` item), `Builder::Page` (`update`/`archive`/`unarchive`),
|
|
383
|
+
`Ecoportal::API::GraphQL#page` top-level accessor.
|
|
384
|
+
- **Fragment infrastructure**
|
|
385
|
+
- `Fragment::Pages` sub-namespace with `CommonPageUnion` — customer-facing fragment covering
|
|
386
|
+
stages, sections, all 20 data field types, actions, files, and emails. Parametric via
|
|
387
|
+
`$content`, `$only_content`, `$fields`.
|
|
388
|
+
- `FragmentDefinitions.register_namespace(klass)` — cross-namespace fragment discovery without
|
|
389
|
+
polluting the parent `fragments` hash.
|
|
390
|
+
- `BaseQuery#assemble_fragments` — resolves fragment spreads **recursively** (cycle-safe).
|
|
391
|
+
- **`as_input` / diff pipeline**
|
|
392
|
+
- `Common::GraphQL::Model::AsInput#as_input(target_class:)` — delegates to a specified
|
|
393
|
+
`Input` subclass for field reshaping (e.g. `IdDiffInput` for array fields).
|
|
394
|
+
- `Logic::Input.from_model` — builds mutation input from a model diff; injects `patchVer`
|
|
395
|
+
and `clientMutationId`.
|
|
396
|
+
- `Input::ContractorEntity::Update.from_model` — reshapes array fields
|
|
397
|
+
(`associatedPeopleIds`, `leadContractorIds`) into `IdDiffInput` format.
|
|
398
|
+
|
|
399
|
+
### Changed
|
|
400
|
+
|
|
401
|
+
- **`Gemfile`** — override `graphlient` with the fork branch (GraphQL directives support).
|
|
402
|
+
- **DataField dirty detection** — removed the per-field `@_dirty` flag in favour of
|
|
403
|
+
diff-based detection. `DataField` now uses a leaf-specific `DIFF_CLASS` (`LeafDiffService`)
|
|
404
|
+
so its `passarray` attributes are diffed inline instead of being stripped as cascaded keys.
|
|
405
|
+
- **AI generator** — compatibility with the Anthropic Ruby SDK 1.x.
|
|
406
|
+
|
|
407
|
+
### Fixed
|
|
408
|
+
|
|
409
|
+
- **DataField array fields** (`Select`, `People`, `Checklist`, `ContractorEntities`,
|
|
410
|
+
`CrossReference`, `FileField`, `ImageGallery`) — were never reported dirty after a setter,
|
|
411
|
+
so `as_input` returned `nil`. `passarray` keys are *cascaded* attributes and the flat classic
|
|
412
|
+
diff strips them, expecting `diff_reduce` to re-add them by cascading into nested
|
|
413
|
+
`GraphQL::Model` children — but leaf-field arrays are plain hashes/strings, so they vanished.
|
|
414
|
+
Fixed with `DataField::LeafDiffService` (keeps cascaded keys) and by adding the missing
|
|
415
|
+
`array_ids` / `array_id_index` / `array_id_item` helpers to `HashDiffNesting`.
|
|
416
|
+
- **Live AI specs** — resilient to SSL / auth failures in offline environments (skip instead of error).
|
|
417
|
+
- **`HashDiffNesting#dig_path?`** — corrected to use `Hash#key?` rather than `respond_to?(:[])`,
|
|
418
|
+
preventing false positives on non-Hash objects.
|
|
419
|
+
- **`DiffService#classic_diff`** — now returns a flat changed-prop hash (no `api_operation` /
|
|
420
|
+
`change_data` wrapper keys). `as_input` / `as_update` return `nil` when there are no changes.
|
|
421
|
+
- **`assemble_fragments`** — fixed silent bug where a fragment referencing another fragment
|
|
422
|
+
(e.g. `PageFields → ...LocationNode`) would omit the referenced fragment from the query,
|
|
423
|
+
causing a server-side `unknown fragment` error.
|
|
424
|
+
- **`Fragment.assemble`** — fixed silent bug where fragments defined in sub-namespaces
|
|
425
|
+
(e.g. `Fragment::Pages`) were never found, always returning empty.
|
|
426
|
+
|
|
427
|
+
## [1.3.6] - 2026-06-05
|
|
428
|
+
|
|
429
|
+
### Added
|
|
430
|
+
|
|
431
|
+
- **`HttpClient#execute`**: new HTTP dispatch method — POSTs `{ query, variables, operationName }` as
|
|
432
|
+
JSON to `/api/:org_id/graphql` and returns the parsed response hash.
|
|
433
|
+
- **`Common::GraphQL::ResponseError`**: typed exception raised when the GraphQL response body
|
|
434
|
+
contains an `errors` array.
|
|
435
|
+
- **`Fragment.assemble(*syms)`**: class method that returns concatenated named fragment definition
|
|
436
|
+
strings for the given symbols, ready to append to a query document before dispatch.
|
|
437
|
+
- **`Graphlient::Query#spread(name)`** _(graphlient fork)_: DSL helper that emits `...FragmentName`
|
|
438
|
+
in the query string. Replaces the `___Const` convention from graphql-client.
|
|
439
|
+
- **`Client#to_query_string(&block)`** _(graphlient fork)_: builds a full GraphQL query document
|
|
440
|
+
from the DSL block and returns a `String` without touching Faraday or HTTP.
|
|
441
|
+
|
|
442
|
+
### Changed
|
|
443
|
+
|
|
444
|
+
- upgraded ecoportal upstream **gem** dependencies:
|
|
445
|
+
- `ecoportal-api`
|
|
446
|
+
- `ecoportal-api-v2`
|
|
447
|
+
- **`BaseQuery#graphql_query`**: wired to the new dispatch path — builds query string via
|
|
448
|
+
`client.to_query_string`, appends needed named fragment strings, dispatches via
|
|
449
|
+
`client.http_client.execute`. Removes the graphql-client/Faraday dispatch path.
|
|
450
|
+
- **`Common::GraphQL::Client`**: added `attr_accessor :http_client` to carry the HTTP dispatch
|
|
451
|
+
client alongside the DSL client.
|
|
452
|
+
- **`Ecoportal::API::GraphQL#initialize`**: constructs and attaches a `Common::GraphQL::HttpClient`
|
|
453
|
+
instance to `@client.http_client`.
|
|
454
|
+
- **Fragment strings**: all 7 fragment heredocs updated to use named fragment syntax
|
|
455
|
+
(e.g. `fragment Action on Action { ... }`), required for `Fragment.assemble` to emit
|
|
456
|
+
valid named fragment definitions.
|
|
457
|
+
- **`FragmentDefinitions`**: stripped of `client.parse` and `namespace.const_set` — fragment
|
|
458
|
+
strings are now stored as plain Ruby strings. No longer depends on graphql-client for
|
|
459
|
+
fragment loading.
|
|
460
|
+
- **Query/mutation blocks** (12 files): replaced `___Ecoportal__API__GraphQL__Fragment__X`
|
|
461
|
+
spread syntax with `spread :X` throughout all `default_block` and `default_payload_block` procs.
|
|
462
|
+
|
|
463
|
+
### Fixed
|
|
464
|
+
|
|
465
|
+
- **`HttpClient#base_request`**: added `request ||= HTTP` guard for the unmatched `@version` case
|
|
466
|
+
to prevent nil errors.
|
|
467
|
+
- **`HttpClient#api_url`**: use `ENDPOINT_PATH` constant (`external/graphql`) consistently
|
|
468
|
+
instead of an inline hardcoded string.
|
|
469
|
+
|
|
470
|
+
## [1.3.5] - 2026-05-26
|
|
471
|
+
|
|
472
|
+
### Changed
|
|
473
|
+
|
|
474
|
+
- Moved `graphql` endpoint to `external/graphql`
|
|
475
|
+
- Missing env var (i.e. `ORG_ID`) will **raise** now an error (instead of just a print)
|
|
476
|
+
|
|
477
|
+
## [1.3.4] - 2025-09-04
|
|
478
|
+
|
|
479
|
+
### Added
|
|
480
|
+
|
|
481
|
+
- Command execution result: **added** command doc when there's a `results` error.
|
|
482
|
+
- Payload improvements:
|
|
483
|
+
- On `LocationsError.validationErrors`: fetch `property` property.
|
|
484
|
+
- On **results**, `Command` always fetch `__typename` and the other properties.
|
|
485
|
+
|
|
486
|
+
### Changed
|
|
487
|
+
|
|
488
|
+
- Changed base `error_doc`: **consistent property name**
|
|
489
|
+
|
|
490
|
+
### Fixed
|
|
491
|
+
|
|
492
|
+
- Correct fetch on `ok` (sometimes it is `null`: that doesn't mean failed).
|
|
493
|
+
- **Consistent order** on `error?` and `error_doc`.
|
|
494
|
+
- `Draft`
|
|
495
|
+
- **Overlapping** name `ConflictingIds` (vs `LocationsError.conflictingIds`)
|
|
496
|
+
- **Wrong** include on `FetchNested`
|
|
497
|
+
|
|
498
|
+
## [1.3.3] - 2025-08-29
|
|
499
|
+
|
|
500
|
+
### Added
|
|
501
|
+
|
|
502
|
+
- Better error handling
|
|
503
|
+
|
|
504
|
+
### Fixed
|
|
505
|
+
|
|
506
|
+
- Unused parameter/variable `$includeArchivedNodes`
|
|
507
|
+
|
|
508
|
+
## [1.3.2] - 2025-08-19
|
|
509
|
+
|
|
510
|
+
### Added
|
|
511
|
+
|
|
512
|
+
- `Mutation`: allow parameters other than **input**.
|
|
513
|
+
- Location Structure `Draft` models
|
|
514
|
+
- `Interface::LocationStructure::Nodes` for `LocationStructure` and `Draft::Structure`
|
|
515
|
+
- `raw_response` as optional query parameter (for debugging)
|
|
516
|
+
- `Logic::Input` (out of consistency)
|
|
517
|
+
- Fragments:
|
|
518
|
+
- `LocationDraft`
|
|
519
|
+
- `LocationsError`
|
|
520
|
+
- Query to include `draft` list when fetching an **RS**.
|
|
521
|
+
- Location `Draft` queries:
|
|
522
|
+
- `Draft#byId`
|
|
523
|
+
- `Draft#create`
|
|
524
|
+
- `Draft#delete`
|
|
525
|
+
- `Draft#addCommands`
|
|
526
|
+
- `Draft#publish`
|
|
527
|
+
- `Draft#dropBadCommands`
|
|
528
|
+
- Error tracking througout the payload models of location mutations
|
|
529
|
+
|
|
530
|
+
### Changed
|
|
531
|
+
|
|
532
|
+
- Upgrade dependency (`ecoportal-api` **gem**).
|
|
533
|
+
- Moved rescue on fragment definition to `#define` itself.
|
|
534
|
+
- `NodeInterface` moved to `Interface::LocationStructure::Node`
|
|
535
|
+
- Code: Shorten namespace referral.
|
|
536
|
+
- Swap to `Logic::BaseModel`
|
|
537
|
+
- `Mutation` to introduce `:input` required parameter by using parent class.
|
|
538
|
+
|
|
539
|
+
### Fixed
|
|
540
|
+
|
|
541
|
+
- `QueryConnection`: bad code.
|
|
542
|
+
- `conflictingIds` should be array.
|
|
543
|
+
|
|
544
|
+
## [1.3.1] - 2025-06-11
|
|
545
|
+
|
|
546
|
+
### Changed
|
|
547
|
+
|
|
548
|
+
- upgraded gem dependencies
|
|
549
|
+
- **Moded** `Ecoportal::API::GraphQL::Base::Model` to
|
|
550
|
+
- > `Ecoportal::API::GraphQL::BaseModel`
|
|
551
|
+
- **Added** `Interface::LocationNode`
|
|
552
|
+
- **Added** `Interface::BasePage`
|
|
553
|
+
|
|
554
|
+
### Fixed
|
|
555
|
+
|
|
556
|
+
- **Fragments**
|
|
557
|
+
- `Action` fragment to use `PageUnion` (**upgrade**)
|
|
558
|
+
- **Memoize** fragments.
|
|
559
|
+
- Add what fragment failed in the **error**.
|
|
560
|
+
|
|
561
|
+
## [1.2.1] - 2025-05-16
|
|
562
|
+
|
|
563
|
+
### Changed
|
|
564
|
+
|
|
565
|
+
- upgrade `ecoportal-api` gem
|
|
566
|
+
- upgrade `ecoportal-api-v2` gem
|
|
567
|
+
|
|
568
|
+
## [1.1.1] - 2025-05-14
|
|
569
|
+
|
|
570
|
+
### Added
|
|
571
|
+
|
|
572
|
+
- `MemberChanges` helpers for `Base::ContractorEntity`
|
|
573
|
+
- Custom **Diff** logic that can be used in GraphQL content:
|
|
574
|
+
- `Common::GraphQL::Model::Diffable::HashDiffNesting`
|
|
575
|
+
- Reused from `HashDiffPatch` (`ecoportal-api-v2`):
|
|
576
|
+
1. It does not use `patch_ver`, but rather just `id` property alone.
|
|
577
|
+
2. The _operation_ property has been renamed to `api_operation` (to ensure no collisions). And the operation types are symbols, and renamed to: `:delete`, `:update` and `:create`. This can show up to be useful when, for instance, reusing the output of `#as_update` to generate actual input objects (i.e. `#as_input`) that feed some GraphQL query.
|
|
578
|
+
3. The _data_ property has been renamed to `change_data`.
|
|
579
|
+
4. `Hash` **keys** are of type `Symbol`.
|
|
580
|
+
- `Common::GraphQL::Model::Diffable::DiffService`. In a GraphQL context, this aims to be able to implement a function called `#as_input` (equivalent to `#as_update`):
|
|
581
|
+
1. It uses the `HashDiffNesting` helpers.
|
|
582
|
+
2. It has capability to `ignore` certain keys.
|
|
583
|
+
3. It can calculate **diff** excluding nested models (i.e. those that are `root?` and, therefore, not part of the changed target model). This functionality is an optimization to `cascaded_callbacks` throughout the nested models.
|
|
584
|
+
|
|
585
|
+
### Changed
|
|
586
|
+
|
|
587
|
+
- `Common::GraphQL::Model::Diffable` by using `Diffable::DiffService` (with `cascaded_callbacks` implementation).
|
|
588
|
+
- `#as_update`
|
|
589
|
+
- `#dirty?`
|
|
590
|
+
- upgraded `ecoportal-api` gem
|
|
591
|
+
- updraded `ecoportal-api-v2` gem
|
|
592
|
+
|
|
593
|
+
## [0.4.7] - 2025-04-02
|
|
594
|
+
|
|
595
|
+
### Added
|
|
596
|
+
|
|
597
|
+
- `page.id` to Action linked resources.
|
|
598
|
+
|
|
599
|
+
## [0.4.6] - 2025-04-02
|
|
600
|
+
|
|
601
|
+
### Added
|
|
602
|
+
|
|
603
|
+
- `Ecoportal::API::GraphQL::Logic::QueryConnection`
|
|
604
|
+
- **Require** `default_connection_block` to child classes
|
|
605
|
+
- This aims to **not** having have client code having to define the block for `#each`
|
|
606
|
+
|
|
607
|
+
### Changed
|
|
608
|
+
|
|
609
|
+
- upgraded `ecoportal-api` gem
|
|
610
|
+
- upgraded `ecoportal-api-v2` gem
|
|
611
|
+
|
|
612
|
+
## [0.4.5] - 2025-03-14
|
|
613
|
+
|
|
614
|
+
### Added
|
|
615
|
+
|
|
616
|
+
- Query `actionCategories`
|
|
617
|
+
- Mutation **create** `Action`
|
|
618
|
+
|
|
619
|
+
### Changed
|
|
620
|
+
|
|
621
|
+
- `Action` model to have `locations` (**RS** upgrade)
|
|
622
|
+
|
|
623
|
+
## [0.4.4] - 2025-02-23
|
|
624
|
+
|
|
625
|
+
### Changed
|
|
626
|
+
|
|
627
|
+
- Upgraded `ecoportal-api` gem (maintanance)
|
|
628
|
+
- Upgraded `ecoportal-api-v2` gem (to provision `root!` class method)
|
|
629
|
+
- Defined some models that hand on their own as `root!`
|
|
630
|
+
- Refactored `Base::Model` by moving its loggic to `Common::GraphQL`
|
|
631
|
+
|
|
632
|
+
### Fixed
|
|
633
|
+
|
|
634
|
+
- `Ecoportal::API::Common::GraphQL::HashHelpers`
|
|
635
|
+
- Truly make the iterator generic
|
|
636
|
+
|
|
637
|
+
## [0.4.3] - 2024-11-21
|
|
638
|
+
|
|
639
|
+
### Changed
|
|
640
|
+
|
|
641
|
+
- upgrade gems
|
|
642
|
+
- `ecoportal-api`
|
|
643
|
+
- `ecoportal-api-v2`
|
|
644
|
+
- `Ecoportal::API::Common::GraphQL::HttpClient.new` ceased to default `version` to `v1` (now it defaults to `nil`)
|
|
645
|
+
|
|
646
|
+
## [0.4.2] - 2024-10-01
|
|
647
|
+
|
|
648
|
+
### Changed
|
|
649
|
+
|
|
650
|
+
- upgrade gems
|
|
651
|
+
- `ecoportal-api-v2`
|
|
652
|
+
- add explicit dependency onto `ecoportal-api` gem (client)
|
|
653
|
+
|
|
654
|
+
## [0.4.1] - 2024-08-09
|
|
655
|
+
|
|
656
|
+
### Added
|
|
657
|
+
|
|
658
|
+
- `ContractorEntity` added field `externalId`
|
|
659
|
+
|
|
660
|
+
### Changed
|
|
661
|
+
|
|
662
|
+
- gem upgrade `ecoportal-api-v2`
|
|
663
|
+
|
|
664
|
+
## [0.4.0] - 2024-08-01
|
|
665
|
+
|
|
666
|
+
### Changed
|
|
667
|
+
|
|
668
|
+
- require `ruby 3`
|
|
669
|
+
|
|
670
|
+
## [0.3.18] - 2024-05-16
|
|
671
|
+
|
|
672
|
+
### Fixed
|
|
673
|
+
|
|
674
|
+
- `Ecoportal::API::GraphQL::Payload::LocationStructure::CommandExecutionResult`
|
|
675
|
+
- Error is nullable
|
|
676
|
+
|
|
677
|
+
## [0.3.17] - 2024-05-14
|
|
678
|
+
|
|
679
|
+
### Fixed
|
|
680
|
+
|
|
681
|
+
- `field_name` should add up to the path
|
|
682
|
+
|
|
683
|
+
## [0.3.16] - 2024-04-29
|
|
684
|
+
|
|
685
|
+
### Added
|
|
686
|
+
|
|
687
|
+
- Exposed `graphql` `ContractorEntity` `destroy`
|
|
688
|
+
|
|
689
|
+
### Fixed
|
|
690
|
+
|
|
691
|
+
- incorrect loading
|
|
692
|
+
|
|
693
|
+
### Changed
|
|
694
|
+
|
|
695
|
+
- Input for ContractorEntity create moved as `update` (as it wasn't correct)
|
|
696
|
+
|
|
697
|
+
## [0.3.15] - 2024-04-13
|
|
698
|
+
|
|
699
|
+
### Added
|
|
700
|
+
|
|
701
|
+
- `Ecoportal::API::GraphQL::Logic::BaseQuery`
|
|
702
|
+
- `::base_path` class instance var.
|
|
703
|
+
- query to retrieve `currentOrganization.classifications`
|
|
704
|
+
|
|
705
|
+
### Fixed
|
|
706
|
+
|
|
707
|
+
- upgraded `ecoportal-api-v2` gem
|
|
708
|
+
|
|
709
|
+
## [0.3.14] - 2024-03-13
|
|
710
|
+
|
|
711
|
+
### Added
|
|
712
|
+
|
|
713
|
+
- some benchmarking on
|
|
714
|
+
1. core graphql base `query`
|
|
715
|
+
- `#parent_id` to location node model
|
|
716
|
+
|
|
717
|
+
### Changed
|
|
718
|
+
|
|
719
|
+
- upgraded `ecoportal-v2-api` gem
|
|
720
|
+
|
|
721
|
+
### Fixed
|
|
722
|
+
|
|
723
|
+
- Optimized `treeify` and locations structure class
|
|
724
|
+
|
|
725
|
+
## [0.3.13] - 2024-02-03
|
|
726
|
+
|
|
727
|
+
### Changed
|
|
728
|
+
|
|
729
|
+
- upgrade `ecoportal-api-v2`
|
|
730
|
+
|
|
731
|
+
## [0.3.12] - 2024-01-27
|
|
732
|
+
|
|
733
|
+
### Added
|
|
734
|
+
|
|
735
|
+
- Exposed `graphql` `Action` `update` and get a single `action`
|
|
736
|
+
|
|
737
|
+
## [0.3.11] - 2023-09-19
|
|
738
|
+
|
|
739
|
+
### Added
|
|
740
|
+
|
|
741
|
+
- Exposed `graphql` `ContractorEntity` `create` and `update`
|
|
742
|
+
|
|
743
|
+
## [0.3.10] - 2023-08-12
|
|
744
|
+
|
|
745
|
+
### Fixed
|
|
746
|
+
|
|
747
|
+
- `Ecopotal::API::GraphQL::Query::LocationStructure`
|
|
748
|
+
- `query` in basic_block missed an explicitly declared parameter.
|
|
749
|
+
|
|
750
|
+
## [0.3.9] - 2023-08-03
|
|
751
|
+
|
|
752
|
+
### Added
|
|
753
|
+
|
|
754
|
+
- `Ecoportal::API::GraphQL::Logic::BaseQuery`
|
|
755
|
+
- Added support for **default** values.
|
|
756
|
+
|
|
757
|
+
## [0.3.8] - 2023-07-18
|
|
758
|
+
|
|
759
|
+
### Added
|
|
760
|
+
|
|
761
|
+
- Integration for archiving actions.
|
|
762
|
+
- `LocationNodeInterface` -> support for `classifications`
|
|
763
|
+
- `Treeify` to dump more data per node (classifications)
|
|
764
|
+
|
|
765
|
+
### Fixed
|
|
766
|
+
|
|
767
|
+
- Silenced waning messages when redefining `Fragment`s
|
|
768
|
+
|
|
769
|
+
## [0.3.7] - 2023-05-23
|
|
770
|
+
|
|
771
|
+
### Fixed
|
|
772
|
+
|
|
773
|
+
- `Ecoportal::API::Common::GraphQL::Client` adjusted `read_timeout` and `write_timeout` to `90` seconds.
|
|
774
|
+
|
|
775
|
+
## [0.3.6] - 2023-04-17
|
|
776
|
+
|
|
777
|
+
### Changed
|
|
778
|
+
|
|
779
|
+
- Softened max version of **gem** dependencies
|
|
780
|
+
|
|
781
|
+
### Fixed
|
|
782
|
+
|
|
783
|
+
- `Ecoportal::API::GraphQL::Fragment#define` was not removing previous constants
|
|
784
|
+
- Changed check method to be `::const_defined?`
|
|
785
|
+
|
|
786
|
+
## [0.3.5] - 2023-04-03
|
|
787
|
+
|
|
788
|
+
### Fixed
|
|
789
|
+
|
|
790
|
+
- `Ecoportal::API::GraphQL::Helpers::LocationsTree#treeify`
|
|
791
|
+
- Make it real id-case-insensitive (parents in lower case were being missed due to this)
|
|
792
|
+
|
|
793
|
+
## [0.3.4] - 2023-04-03
|
|
794
|
+
|
|
795
|
+
### Added
|
|
796
|
+
|
|
797
|
+
- `Ecoportal::API::Common::GraphQL::AuthService`
|
|
798
|
+
- `#session_token` added **token auto-renew** functionality (when token expires in less than 90 minutes)
|
|
799
|
+
- `#session_token_renewed`
|
|
800
|
+
|
|
801
|
+
### Fixed
|
|
802
|
+
|
|
803
|
+
- Enabled to specify `host` (other than `live.ecoportal.com`) by the user
|
|
804
|
+
|
|
805
|
+
## [0.3.3] - 2023-04-02
|
|
806
|
+
|
|
807
|
+
### Fixed
|
|
808
|
+
|
|
809
|
+
- `Ecoportal::API::GraphQL::Base::LocationNode` **added** attribute `archivedToken`
|
|
810
|
+
|
|
811
|
+
## [0.3.2] - 2023-04-02
|
|
812
|
+
|
|
813
|
+
### Changed
|
|
814
|
+
|
|
815
|
+
- `Ecoportal::API::GraphQL::Helpers::LocationsTree#treeify` added support for `archived_token`
|
|
816
|
+
|
|
817
|
+
## [0.3.1] - 2023-03-09
|
|
818
|
+
|
|
819
|
+
### Changed
|
|
820
|
+
|
|
821
|
+
- Upgraded core gem dependency `ecoportal-api-v2`
|
|
822
|
+
|
|
823
|
+
## [0.2.3] - 2023-02-27
|
|
824
|
+
|
|
825
|
+
### Fixed
|
|
826
|
+
|
|
827
|
+
- Typo in tests LocationsStructures... should read `locationStructures`
|
|
828
|
+
|
|
829
|
+
## [0.2.2] - 2023-02-24
|
|
830
|
+
|
|
831
|
+
### Fixed
|
|
832
|
+
|
|
833
|
+
- Build gem correctly
|
|
834
|
+
|
|
835
|
+
## [0.2.1] - 2023-02-24
|
|
836
|
+
|
|
837
|
+
### Changed
|
|
838
|
+
|
|
839
|
+
- Migrate from TagTrees to **reporting structures** (breaking change)
|
|
840
|
+
|
|
841
|
+
### Added
|
|
842
|
+
|
|
843
|
+
- Basics for reporting structure mutations
|
|
844
|
+
|
|
845
|
+
## [0.1.11] - 2022-11-29
|
|
846
|
+
|
|
847
|
+
### Added
|
|
848
|
+
|
|
849
|
+
- `Ecoportal::API::GraphQL::Base::Mutation`
|
|
850
|
+
- Added `createContractorEntity`
|
|
851
|
+
|
|
852
|
+
### Changed
|
|
853
|
+
|
|
854
|
+
- **upgraded** `graphlient` gem dependency (support for framents)
|
|
855
|
+
- removed patch in this gem
|
|
856
|
+
- Slight internal refactor of `Ecoportal::API::GraphQL::Base::Query`
|
|
857
|
+
- Upgraded `ecoportal-api-v2` **gem** dependency
|
|
858
|
+
|
|
859
|
+
## [0.1.10] - 2022-09-29
|
|
860
|
+
|
|
861
|
+
### Changed
|
|
862
|
+
|
|
863
|
+
- **upgraded** `ecoportal-api-v2` gem dependency
|
|
864
|
+
|
|
865
|
+
### Fixed
|
|
866
|
+
|
|
867
|
+
- Remove debugging message
|
|
868
|
+
|
|
869
|
+
## [0.1.9] - 2022-09-26
|
|
870
|
+
|
|
871
|
+
### Added
|
|
872
|
+
|
|
873
|
+
- `Ecoportal::API::GraphQL::Query::TagTree`
|
|
874
|
+
|
|
875
|
+
### Changed
|
|
876
|
+
|
|
877
|
+
- **upgraded** `ecoportal-api-v2` gem dependency
|
|
878
|
+
- added `Ecoportal::API::Common::GraphQL::QueryIntegration`
|
|
879
|
+
- restructured `Ecoportal::API::GraphQL::Model::Organization` class
|
|
880
|
+
- **Patch** on `Graphlient::Query` for fragments support (**pull request**: <https://github.com/ashkan18/graphlient/pull/94>)
|
|
881
|
+
|
|
882
|
+
## [0.1.8] - 2022-09-23
|
|
883
|
+
|
|
884
|
+
### Added
|
|
885
|
+
|
|
886
|
+
- `currentOrganization.tagTrees` query
|
|
887
|
+
|
|
888
|
+
### Changed
|
|
889
|
+
|
|
890
|
+
- **upgraded** `ecoportal-api-v2` gem dependency
|
|
891
|
+
- Restructured the `Query` inheritance chain to make things simpler
|
|
892
|
+
|
|
893
|
+
## [0.1.6] - 2022-09-19
|
|
894
|
+
|
|
895
|
+
### Fixed
|
|
896
|
+
|
|
897
|
+
- Call to **private** method `remove_const` in `Ecoportal::API::GraphQL::Fragment#define`
|
|
898
|
+
|
|
899
|
+
## [0.1.5] - 2022-09-19
|
|
900
|
+
|
|
901
|
+
### Added
|
|
902
|
+
|
|
903
|
+
- Patch `GraphQL::Query#append_node` so we can use Fragments in blocks using `___` as start of the constant, and `__` for namespace separator
|
|
904
|
+
- Issue/feature request: <https://github.com/ashkan18/graphlient/issues/93>
|
|
905
|
+
- `Ecoportal::API::GraphQL::Fragment#define` provided that client scripts can create their own fragments in their own namespace
|
|
906
|
+
- Exposed `Ecoportal::API::GraphQL#fragments`
|
|
907
|
+
- It will always (re)define in the `Fragment` root namespace
|
|
908
|
+
|
|
909
|
+
## [0.1.4] - 2022-09-16
|
|
910
|
+
|
|
911
|
+
### Fixed
|
|
912
|
+
|
|
913
|
+
- Able to inject connection block to `each`
|
|
914
|
+
- Error handling delegated to parent class (`QueryConnection`)
|
|
915
|
+
- Retrieve `id` on elements of `Array`
|
|
916
|
+
|
|
917
|
+
## [0.1.3] - 2022-09-15
|
|
918
|
+
|
|
919
|
+
### Fixed
|
|
920
|
+
|
|
921
|
+
- Fixed circular reference to `org_id` in `Ecoportal::API::Common::GraphQL::Client`
|
|
922
|
+
|
|
923
|
+
## [0.1.2] - 2022-09-15
|
|
924
|
+
|
|
925
|
+
### Changed
|
|
926
|
+
|
|
927
|
+
- `Ecoportal::API::GraphQL` addded `email` and `pass` parameters on initialization
|
|
928
|
+
- This allows for integration in some client lib
|
|
929
|
+
|
|
930
|
+
## [0.1.0] - 2022-09-15
|
|
931
|
+
|
|
932
|
+
### Added
|
|
933
|
+
|
|
934
|
+
- First commit with some basic structure
|