[[release_notes_85]]
=== 8.5 Release notes

[discrete]
[[release_notes_852]]
=== 8.5.2 Release notes

[discrete]
==== API Bugfix

Fixes `security.create_service_token` API, uses `POST` when token name isn't present.
Thanks https://github.com/carlosdelest[@carlosdelest] for reporting in https://github.com/elastic/elasticsearch-ruby/pull/1961[#1961].

[discrete]
[[release_notes_851]]
=== 8.5.1 Release notes

[discrete]
==== Bugfixes

Fixes bug when instantiating client with `api_key`: When passing in `api_key` and `transport_options` that don't include headers to the client, the `api_key` code would overwrite the arguments passed in for `transport_options`. This was fixed in https://github.com/elastic/elasticsearch-ruby/pull/1941/files[this Pull Request].
Thanks @svdasein for reporting in https://github.com/elastic/elasticsearch-ruby/issues/1940[#1940].

[discrete]
[[release_notes_850]]
=== 8.5.0 Release notes

- Tested versions of Ruby for 8.5.0: Ruby (MRI) 2.7, 3.0 and 3.1, JRuby 9.3.

[discrete]
==== Client

With the latest release of `elastic-transport` - `v8.1.0` - this gem now supports Faraday v2. Elasticsearch Ruby has an open dependency on `elastic-transport` (`'elastic-transport', '~> 8'`), so when you upgrade your gems, `8.1.0` will be installed. This supports both Faraday v1 and Faraday v2. The main change on dependencies when using Faraday v2 is all adapters, except for the default `net_http` one, have been moved out of Faraday into separate gems. This means if you're not using the default adapter and you migrate to Faraday v2, you'll need to add the adapter gems to your Gemfile.

These are the gems required for the different adapters with Faraday 2, instead of the libraries on which they were based:

[source,ruby]
------------------------------------
# HTTPCLient
gem 'faraday-httpclient'

# NetHTTPPersistent
gem 'faraday-net_http_persistent'

# Patron
gem 'faraday-patron'

# Typhoeus
gem 'faraday-typhoeus'
------------------------------------

Things should work fine if you migrate to Faraday 2 as long as you include the adapter (unless you're using the default one `net-http`), but worst case scenario, you can always lock the version of Faraday in your project to 1.x:
gem 'faraday', '~> 1'

Be aware if migrating to Faraday v2 that it requires at least Ruby `2.6`, unlike Faraday v1 which requires `2.4`.

*Troubleshooting*

If you see a message like:

[source,ruby]
------------------------------------
:adapter is not registered on Faraday::Adapter (Faraday::Error)
------------------------------------
Then you probably need to include the adapter library in your gemfile and require it.

Please https://github.com/elastic/elasticsearch-ruby/issues[submit an issue] if you encounter any problems.

[discrete]
==== API

[discrete]
===== New APIs

- `machine_learning.clear_trained_model_deployment_cache` - Clear the cached results from a trained model deployment (Beta).
- `security.bulk_update_api_keys` - Updates the attributes of multiple existing API keys.

[discrete]
===== API Changes

- `rollup.rollup` renamed to `indices.downsample`. The method now receives the `index` to downsample (Required) and instead of `rollup_index`, use target_index as the index to store downsampled data.

- `security.get_api_key` and `security.query_api_keys` add `:with_limited_by` flag to show the limited-by role descriptors of API Keys.
- `security.get_user` adds `:with_profile_uid` flag to retrieve profile uid (if exists) associated to the user.
- `security.get_user_profile` now retrieves user profiles for given unique ID(s). `:uid` is now a list of comma-separated list of unique identifier for user profiles.
- `text_structure.find_structure` adds `:ecs_compatibility`, optional parameter to specify the compatibility mode with ECS Grok patterns - may be either 'v1' or 'disabled'.

Machine learning APIs promoted from *Experimental* to *Beta*:

- `machine_learning.clear_trained_model_deployment_cache.rb`
- `machine_learning.infer_trained_model.rb`
- `machine_learning.put_trained_model_definition_part.rb`
- `machine_learning.put_trained_model_vocabulary.rb`
- `machine_learning.start_trained_model_deployment.rb`
- `machine_learning.stop_trained_model_deployment.rb`

Security usef profile APIs promoted from *Experimental* to *Stable*:

- `security/activate_user_profile`
- `security/disable_user_profile`
- `security/enable_user_profile`
- `security/get_user_profile`
- `security/has_privileges_user_profile`
- `security/suggest_user_profile`
- `security/update_user_profile_data`
