Change Log

All notable changes to this project will be documented in this file.

[0.10.15] - 2025-08-xx

Added

Changed

Fixed

[0.10.14] - 2025-08-15

Added

  • Person#phone_number

[0.10.12] - 2025-05-30

Added

  • Client#post added named argument params (for the url arguments)

[0.10.11] - 2025-05-15

Changed

  • MAX_START_DELAY to be 120 (it was 60).

Fixed

  • PersonDetails#changed?: ref wasn't being used.
  • Ecoportal::API::V1::Job::Awaiter
    • First timer relay should use ldelay of 1 second if it's first loop.

[0.10.10] - 2025-04-04

Fixed

  • Ecoportal::API::V1::SchemaFieldValue#maybe_multiple
    • To tell what field raised the error: print alt_id in exception.

[0.10.9] - 2025-03-29

Added

  • Ecoportal::API::V1::Person, added usability methods:
    • #archived?
    • archive!
    • unarchive!

Changed

  • Substantial code tidy up

Fixed

  • Ecoportal::API::V1::PersonSchemas#each called without block was loosing the parameters.

[0.10.8] - 2024-12-16

Changed

  • Ecoportal::API::Common::BaseModel tidy up code

Fixed

  • Ecoportal::API::V1::Job::Awaiter::Timer#time_left
    • To include time_left_to_start when not started.
  • Remove call to byebug

[0.10.7] - 2024-11-21

Changed

  • Remove unused code
  • Ecoportal::API::Common::Client.new the version argument doesn't default to v1 but to nil.

Fixed

  • A couple of errors
  • Remove missing api key error log when no client version is specified.

[0.10.6] - 2024-10-28

Added

  • Ecoportal::API::V1::Job::Status
    • added methods started?, progressing? and progress_increase
  • Ecoportal::API::Errors::StartTimeOut specificity on timeout error.

Changed

  • Refactored Ecoportal::API::V1::Awaiter into:
    • Awaiter::Timer: account for last waited, and manage time outs
    • Awaiter::StatusFrequency: next awaiting time

Fixed

  • Portal::API::V1::Awaiter
    • throughput based on progress during last wait
    • this helps to better detect non progressing jobs

[0.10.5] - 2024-10-16

Fixed

  • Ecoportal::API::V1::Job::Awaiter
    • Made it calculate TimeOut always on 0.2 throughput

[0.10.4] - 2024-10-15

Added

Changed

  • Ecoportal::API::Common::Client::TimeOut
    • Const MIN_SIZE changed from 10 to 5 to speed up small requests.
  • Full revamp of Job endpoint

[0.10.3] - 2024-10-01

Changed

  • refactored Client
    • initialized with deep_logging named argumnet
    • previously response_logging

[0.10.2] - 2024-09-27

Added

  • Ecoportal::API::Common::TimeOut to calculate adaptive time outs.

Changed

  • Ecoportal::API::V1::Person#job
    • added adaptative await
    • evaluate true to complete? if progress is that of total count.

[0.10.1] - 2024-08-01

Added

  • Ecoportal::API::V1::Person#brand_id
  • Ecoportal::API::V1::Person#archived

Changed

  • require ruby 3

[0.9.8] - 2024-05-15

Added

  • rubocop

Changed

  • Ecoportal::API::Common::Client#with_retry
    • Make resilient (re-try) to recent silent server errors where the body doesn't parse as JSON.

Fixed

[0.9.7] - 2024-02-03

Changed

  • Ecoportal::API::V1::Person
    • removed property subordinates

[0.9.6] - 2024-02-03

Changed

  • upgraded some gems

Fixed

  • Compatibility with ruby 3
    • replaced Proc.new (with no block) by block in methods

[0.9.5] - 2023-09-05

Fixed

  • Ecoportal::API::V1::Person#as_update missing parameter on super call.

[0.9.4] - 2023-04-17

Changed

  • Softened max version of gem dependencies
  • Upgraded required ruby version

Fixed

  • Ecoportal::API::Common::BaseModel should make a copy of doc on initialize
    • This was affecting reset! as doc was being changed

[0.9.3] - 2023-03-16

Added

  • Ecoportal::API::V1::SchemaFieldValue#clear helper to clear the value

[0.9.1] - 2023-03-09

Added

  • Ecoportal::API::V1::Person#contractor_organization_id support for contractor management
  • Ecoportal::API::Common::BaseModel added doc helper methods:
    • replace_doc! and #replace_original_doc!
  • Ecoportal::API::Internal::Person added methods
    • breaking change, they default to compare with original_doc, while they did it with initial_doc)
    • #new? => to know if this person is being created now (it doesn't exist on server side).
    • #account_added? => to know if this person is getting the account added.
    • #account_removed? => to know if this person is getting their account removed.
  • Ecoportal::API::Common::Client#host expose
  • Ecoportal::API::Internal::Permissions added abilities
    • contractor_management

Fixed

  • Ecoportal::API::V1::PersonDetails.key? should index first.

Changed

  • Ecoportal::API::V1::Person::VALID_TAG_REGEX allow dot . in tags.

[0.8.5] - 2022-02-28

Added

  • Ecoportal::API::V1::PersonDetails#[] to raise a specific error type to allow handling
  • Ecoportal::API::V1::PersonDetails.key? to allow to check if a field exists
  • Ecoportal::API::Internal::Account#force_send_invites support for back-end new method

Fixed

  • Ecoportal::API::V1::People#get fixed typo
  • Ecoportal::API::Common::BaseModel #original_doc and #initial_doc maybe empty for the parent object

Changed

  • Ecoportal::API::V1::People#each limited the GET retries to 5
  • Ecoportal::API::Internal::Account#default_tag=
    • Controls input type to be String or nil
    • Inherent upcase

[0.8.4] - 2021-11-05

Added

  • Ecoportal::API::Internal::Permissions added abilities
    • visitor_management, cross_register_reporting and broadcast_notifications
  • Some yardocs too
    • Some callbacks are done in a non-obvious way and the returned object type was not documented
    • For this reason, some yardocs have been added to some of the parts that have been worked on.

Fixed

  • Ecoportal::API::V1::People#create_job
    • Removed call to BatchOperation#process_response
    • The method was is already called by job_result
    • As a consequence there was a double up of callbacks
    • Fixed line in wrong position
  • Ecoportal::API::V1::People#batch
  • Ecoportal::API::Common::ElasticApmIntegration#unexpected_server_error?
    • No code or code lesser than 100 is a server error as well

Changed

  • Ecoportal::API::Common::Client: changed
    • Logging the response of batches or batch jobs can be handy when debugging the back-end
    • removed method #without_response_logging
    • This change entailed to remove dependencies in Ecoportal::API::V1::People
      • Specifically in methods #batch, #job_result and #create_job
    • @response_logging_enabled to be set in initialization stage (added parameter for .new)

[0.8.3] - 2021-05-24

Added

  • Ecoportal::API::Errors namespace
    • Ecoportal::API::Errors::Base base error class.
    • Ecoportal::API::Errors::TimeOut error when an api request fails with time out.
    • This serves the purpose to allow a client script to re-start the process where it stopped by capturing this specific Error
  • Ecoportal::API::Common::BaseModel::UnlinkedModel added more description to track down the source of the error.
  • Ecoportal::API::Common::BaseModel#reset! added parameter key, which should try to recover doc[key] from original_doc[key]
    • Thanks to this, you are supposed to be able to do things like:
    • person.account = nil && person.reset!("account")
    • person.name = nil && person.reset!("name")
  • Ecoportal::API::V1::People#job methods to provide more information on failure.
  • Specific changes due to eP release 1.5.9.70 (Policy Group Abilities)
    • Ecoportal::API::Internal::Account#permissions_merged
    • Ecoportal::API::Internal::Permissions#person_abilities (new ability)
    • Ecoportal::API::Internal::Account#user_id

Fixed

  • Ecoportal::API::Internal::Account: consistency in setting arrays (uniq! & compact)
    • #policy_group_ids=, #login_provider_ids=, #starred_ids=
  • Ecoportal::API::Common::HashDiff.diff was including empty {} objects
    • This change sacrifices the case account: {} (which will be also removed from as_update), but it should be fine.

Changed

  • Ecoportal::API::V1::People#job to raise specific error on time out API::Errors::TimeOut
  • Specific changes due to eP release 1.5.9.70 (Policy Group Abilities)
    • Ecoportal::API::Internal::Account removed methods: #permissions_preset, #preset and #preset=
    • Ecoportal::API::Internal::Person#account= added support for user_id which should remain unchanged when existing
  • remove from as_update read-only data
    • Ecoportal::API::Common::HashDiff.diff added parameter :ignore (Array)
    • Ecoportal::API::Common::BaseModel#as_update added parameter :ignore
    • Ecoportal::API::V1::Person#as_update added method, which ignores subordinates
    • Ecoportal::API::Internal::Person#as_update added method, which ignores user_id, permissions_merged and prefilter
    • Ecoportal::API::Internal::Account#as_update added method, which ignores user_id, permissions_merged and prefilter
    • Ecoportal::API::Common::Client native support for elastic-apm
    • Via new module Ecoportal::API::Common::ElasticApmIntegration with method log_unexpected_server_error, which will only log an UnexpectedServerError to ElasticAPM if
      1. There's a correct configuration: environmental variables ELASTIC_APM_KEY and ELASTIC_APM_ACCOUNT_ID are defined
      2. The Response from the server gave code in the range 5xx (which are those under server responsibility)
    • Ecoportal::API::Common::Client added retry logics when response.status == 5xx

[0.8.2] - 2021-02-24

Fixed

  • Ecoportal::API::V1::Person#filter_tags= should ignore nil values

Changed

  • removed all the namespace under Ecoportal::API::V2 as that is managed by ecoportal-api-oozes gem
  • Ecoportal::API::V1::People.get should return a Person object
    • observe that it was returning the WrappedResponse (an Enumerable helper that works better when getting multiple people).

[0.7.5] - 2021-02-12

Fixed

  • pretty_print method was colliding with pp module:
    • renamed to Ecoportal::API::Common::BaseModel#print_pretty
    • renamed to Ecoportal::API::Common::BatchReponse#print_pretty
    • renamed to Ecoportal::API::Common::Reponse#print_pretty
    • renamed to Ecoportal::API::Common::WrappedResponse#print_pretty

Changed

  • forgot to change Ecoportal::API::VERSION during last release

[0.7.4] - 2021-01-2

Fixed

  • changed compact to compact!:
    • Ecoportal::API::V1::Person#filter_tags=
    • Ecoportal::API::Internal::Account#policy_group_ids=
    • Ecoportal::API::Internal::Account#login_provider_ids=
    • Ecoportal::API::Internal::Account#starred_ids=

Changed

Added

Fixed

  • Ecoportal::API::V1::Person#email=: was not showing the incorrect value in the error message
  • added compact to remove null values on:
    • Ecoportal::API::V1::Person#filter_tags=
    • Ecoportal::API::Internal::Account#policy_group_ids=
    • Ecoportal::API::Internal::Account#login_provider_ids=
    • Ecoportal::API::Internal::Account#starred_ids=

[0.7.2] - 2020-10-19

Added

  • Ecoportal::API::V1::Person#email=:
    • do a minimum validation (no blanks in the email)
    • set in lower case (as this is how it's in the server)

Fixed

  • Ecoportal::API::V1::People#each: when silent it shouldn't print a blank line
  • fixed so they return empty array [] when nil:
    • Ecoportal::API::V1::Person#filter_tags
    • Ecoportal::API::Internal::Account#policy_group_ids
    • Ecoportal::API::Internal::Account#login_provider_ids
    • Ecoportal::API::Internal::Account#starred_ids

Changed

  • made it so some methods the Array with uniq values:
    • Ecoportal::API::V1::Person#filter_tags=
    • Ecoportal::API::Internal::Account#policy_group_ids=
  • made it so it only updates the keys defined in the Hash passed to the setter:
    • Ecoportal::API::Internal::Account#permissions_custom=
    • Ecoportal::API::Internal::Account#preferences=

[0.7.1] - 2020-09-30

Added

  • Ecoportal::API::Internal::Permissions: update for new ability tasks of ecoPortal release 1.5.3
  • Ecoportal::API::V1::People#each: added keyword argument silent: to display download progress

Fixed

  • Ecoportal::API::V1::People#each: when no block provided, it was creating an Enumarator without preserving the parameters (i.e. :q or per_page were lost)

[0.7.0] - 2020-09-11

Added

  • added hook, private method body_data for child classes to define behaviour on response.body to
    • Ecoportal::API::V1::People
    • Ecoportal::API::Common::BatchOperation

Changed

  • Ecoportal::API::Internal::Permissions: update for new abilities of ecoPortal release 1.5.2
    • decoupled abilities: person_core into person_core_create, person_core_edit

[0.6.0] - 2020-07-14

Added

  • Ecoportal::API::Common::BaseModel#initial_doc: #consolidate! modifies original_doc
    • this helper allows to know what was the initial document the object was created with
  • Ecoportal::API::Common::BaseModel#as_update: added parameter (default: :last => compare with original_doc)
    • calling it with :total will compare the current doc with the initial_doc

Changed

  • Ecoportal::API::Internal::Permissions: update for new abilities of ecoPortal release 1.5.0
    • added abilities: person_core, person_account, person_details
    • removed ability: people
  • renamed print to pretty_print to avoid overriding $stdout.print, on:
    • Ecoportal::API::Common::BaseModel
    • Ecoportal::API::Common::BatchReponse
    • Ecoportal::API::Common::Response
    • Ecoportal::API::Common::WrappedResponse

Fixed

  • Ecoportal::API::Internal::Preferences: kiosk settings should default to false (nil)

[0.5.8] - 2020-06-23

Fixed

  • Ecoportal::API::V1::Person#filter_tags=: original_doc["filter_tags"] is nil when creating a person
  • Ecoportal::API::Internal::Account#policy_group_ids=: original_doc["account"] is nil when creating a person

[0.5.7] - 2020-06-22

Added

  • Ecoportal::API::V1::PersonSchema: added enable_tags & tags properties
  • Ecoportal::API::Internal::Preferences: added missing fields for kiosk

Changed

  • Ecoportal::API::V1::People::JOB_TIMEOUT: from 1 minute to 3 minutes
  • Ecoportal::API::V1::Person#filter_tags=: will preserve the original order of the matching tags
    • this change is to prevent as_update to generate false update positives
  • Ecoportal::API::Internal::Account#policy_group_ids=: will preserve the original order of the matching ids
    • this change is to prevent as_update to generate false update positives

Fixed

  • Ecoportal::API::Internal::Preferences: access doc using string keys (not with symbol keys)

[0.5.6] - 2020-06-08

Added

  • this CHANGELOG.md file
  • person model: freemium core property