[role="xpack"]
[[migration-api-deprecation]]
=== Deprecation Info APIs

The deprecation API is to be used to retrieve information about different
cluster, node, and index level settings that use deprecated features that will
be removed or changed in the next major version.

[float]
==== Request

`GET /_xpack/migration/deprecations` +

`GET /<index_name>/_xpack/migration/deprecations`

//=== Description

[float]
==== Path Parameters

`index_name`::
  (string) Identifier for the index. It can be an index name or a wildcard
  expression. When you specify this parameter, only index-level deprecations for
  the specified indices are returned.

//=== Query Parameters

//=== Authorization

[float]
==== Examples

To see the list of offenders in your cluster, submit a GET request to the
`_xpack/migration/deprecations` endpoint:

[source,js]
--------------------------------------------------
GET /_xpack/migration/deprecations
--------------------------------------------------
// CONSOLE
// TEST[skip:cannot assert tests have certain deprecations]

Example response:


["source","js",subs="attributes,callouts,macros"]
--------------------------------------------------
{
  "cluster_settings" : [
    {
      "level" : "info",
      "message" : "Network settings changes",
      "url" : "{ref-60}/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal",
      "details" : "templates using `template` field: watches,.monitoring-alerts,.watch-history-6,.ml-notifications,security-index-template,triggered_watches,.monitoring-es,.ml-meta,.ml-state,.monitoring-logstash,.ml-anomalies-,.monitoring-kibana"
    }
  ],
  "node_settings" : [ ],
  "index_settings" : {
    ".monitoring-es-6-2017.07.21" : [
      {
        "level" : "info",
        "message" : "Coercion of boolean fields",
        "url" : "{ref-60}/breaking_60_mappings_changes.html#_coercion_of_boolean_fields",
        "details" : "[[type: doc, field: spins], [type: doc, field: mlockall], [type: doc, field: node_master], [type: doc, field: primary]]"
      }
    ]
  }
}
--------------------------------------------------
// NOTCONSOLE

The response breaks down all the specific forward-incompatible settings that you
should resolve before upgrading your cluster. Any offending settings are
represented as a deprecation warning.

The following is an example deprecation warning:

["source","js",subs="attributes,callouts,macros"]
--------------------------------------------------
{
  "level" : "info",
  "message" : "This is the generic descriptive message of the breaking change",
  "url" : "{ref-60}/breaking_60_indices_changes.html",
  "details" : "more information, like which nodes, indices, or settings are to blame"
}
--------------------------------------------------
// NOTCONSOLE

As is shown, there is a `level` property that describes the significance of the
issue.

|=======
|none | Everything is good.
|info | An advisory note that something has changed. No action needed.
|warning | You can upgrade directly, but you are using deprecated functionality
which will not be available in the next major version.
|critical | You cannot upgrade without fixing this problem.
|=======

The `message` property and the optional `details` property provide descriptive
information about the deprecation warning. The `url` property provides a link to
the Breaking Changes Documentation, where you can find more information about
this change.

Any cluster-level deprecation warnings can be found under the `cluster_settings`
key. Similarly, any node-level warnings are found under `node_settings`. Since
only a select subset of your nodes might incorporate these settings, it is
important to read the `details` section for more information about which nodes
are affected. Index warnings are sectioned off per index and can be filtered
using an index-pattern in the query.

The following example request shows only index-level deprecations of all
`logstash-*` indices:

[source,js]
--------------------------------------------------
GET /logstash-*/_xpack/migration/deprecations
--------------------------------------------------
// CONSOLE
// TEST[skip:cannot assert tests have certain deprecations]
