Migrating from the Wazuh API 3.X

Wazuh API 4.0 introduces several new endpoints and also modifies or removes some of the old ones. The biggest change for all existing endpoints is the new response format. Endpoint responses have been changed according to the new RBAC standard and will no longer have items and totalitems fields. Most responses will have the following structure instead:

{
   "data": {
      "affected_items": [],
      "total_affected_items": 0,
      "total_failed_items": 0,
      "failed_items": [],
   },
   "message": "",
   "error": 0
}

Migrating users

The Wazuh API users are not migrated when upgrading the Wazuh API from 3.X to 4.0. There are numerous security changes to the Wazuh API in 4.0 and it is not advisable. However, using the following API calls it is easy to create new users and assign the administrator role to it (substitute <username> and <password>):

Create new user (POST /security/users)

# curl -k -X POST "https://localhost:55000/security/users" -H  "Authorization: Bearer $TOKEN"  -H  "Content-Type: application/json" -d "{\"username\":\"<username>\",\"password\":\"<password>\"}"
{
  "data": {
    "affected_items": [
      {
        "id": 3,
        "username": "<wazuh>",
        "allow_run_as": false,
        "roles": []
      }
    ],
    "total_affected_items": 1,
    "total_failed_items": 0,
    "failed_items": []
  },
  "message": "User was successfully created",
  "error": 0
}

Assign administrator role (POST /security/users/{user_id}/roles)

# curl -k -X POST "https://localhost:55000/security/users/3/roles?role_ids=1" -H  "Authorization: Bearer $TOKEN"
{
  "data": {
    "affected_items": [
      {
        "id": 3,
        "username": "<wazuh>",
        "allow_run_as": false,
        "roles": [
          1
        ]
      }
    ],
    "total_affected_items": 1,
    "total_failed_items": 0,
    "failed_items": []
  },
  "message": "All roles were linked to user <wazuh>",
  "error": 0
}

Equivalence table

Wazuh API 4.0 introduces several changes to existing endpoints. It is therefore important to review those changes when migrating to 4.0.

The following tables contain the equivalencies between old API 3.x and API 4.0 endpoints:

Active Response

Action

API 3.x

API 4.0

Changes

Run an AR command in the agent

PUT /active-response/{agent_id}

PUT /active-response

The new Active Response endpoint runs commands in all agents by default.

Use the agents_list parameter to apply the commands to only one agent or a list of agents.

Agents

Action

API 3.x usage

API 4.0 usage

Changes

Delete agents

DELETE /agents

DELETE /agents

Removed ids query parameter.

Use the agents_list parameter instead of ids to indicate which agents must be deleted.

If no agents_list is provided no agents will be removed. In order to remove all agents, it must be specified with the all keyword.

Delete an agent

DELETE /agents/{agent_id}

DELETE /agents?agents_list=agent_id

Use the agents_list parameter to indicate which agents must be deleted.

Remove all agents groups

DELETE /agents/{agent_id}/group

DELETE /agents/{agent_id}/group

Added groups_list parameter in query to specify an array of group's ID to remove from the agent.

Removes the agent from all groups by default or a list of them if groups_list parameter is found.

Remove a single group of an agent

DELETE /agents/{agent_id}/group/{group_id}

DELETE /agents/{agent_id}/group/{group_id}

No changes.

Remove a single group of multiple agents

DELETE /agents/group/{group_id}

DELETE /agents/group?group_id=id

Use the agents_list parameter to indicate which agents the group should be removed from.

Delete a list of groups

DELETE /agents/groups

DELETE /groups

The new endpoint can delete all groups or a list of them.

Use the groups_list to choose groups to delete. If no groups_list is provided no groups will be removed. In order to remove all groups, it must be specified with the all keyword.

Remove a group

DELETE /agents/groups/{group_id}

DELETE /groups?groups_list=group_id

The new endpoint can delete all groups or a list of them.

Use the groups_list to choose groups to delete. If no groups_list is provided no agents will be removed. In order to remove all groups, it must be specified with the all keyword.

Get all agents

GET /agents

GET /agents

Return information about all available agents or a list of them.

Added parameter agents_list in query used to specify a list of agent IDs (separated by comma) to get the information from.

Added parameter registerIP in query used to filter by the IP used when registering the agent.

With this new endpoint, you won't get a 400 response in agent name cannot be found, you will get a 200 response with 0 items in the result.

Get an agent

GET /agents/{agent_id}

GET /agents?agents_list=agent_id

Use the agents_list parameter to indicate which agents to get the information from.

Get active configuration

GET /agents/{agent_id}/config/{component}/{configuration}

GET /agents/{agent_id}/config/{component}/{configuration}

No changes.

Get sync status of agent

GET /agents/{agent_id}/group/is_sync

GET /agents/{agent_id}/group/is_sync

No changes.

Get agent key

GET /agents/{agent_id}/key

GET /agents/{agent_id}/key

No changes.

Get upgrade result from agent

GET /agents/{agent_id}/upgrade_result

GET /agents/{agent_id}/upgrade_result

No changes.

Get groups

GET /agents/groups

GET /groups

The new endpoint works the same way by default.

Removed q parameter in query.

Get agents in a group

GET /agents/groups/{group_id}

GET /groups?groups_list=group_id

Use the groups_list parameter to indicate which groups to get the information from.

To get all agents in a group use GET /groups/{group_id}/agents.

Get group configuration

GET /agents/groups/{group_id}/configuration

GET /groups/{group_id}/configuration

The new endpoint works the same way by default.

Get group files

GET /agents/groups/{group_id}/files

GET /groups/{group_id}/files

The new endpoint works the same way by default.

Get a file in group

GET /agents/groups/{group_id}/files/{filename}

GET /groups/{group_id}/files/{file_name}/json or GET /groups/{group_id}/files/{file_name}/xml

The new endpoint allows the user to get the specified group file parsed to JSON or XML.

Get an agent by its name

GET /agents/name/{agent_name}

GET /agents?name=agent_name

Use the name parameter to indicate which agent to get the information from.

Get agents without group

GET /agents/no_group

GET /agents/no_group

No changes.

Get outdated agents

GET /agents/outdated

GET /agents/outdated

Added search parameter in query used to look for elements with the specified string.

Get distinct fields in agents

GET /agents/stats/distinct

GET /agents/stats/distinct

No changes.

Get agents summary

GET /agents/summary

GET /agents/summary/status

The new Endpoint works the same way by default.

Get OS summary

GET /agents/summary/os

GET /agents/summary/os

Removed offset parameter in query. Removed limit parameter in query. Removed sort parameter in query. Removed search parameter in query. Removed q parameter in query.

Add agent

POST /agents

POST /agents

Renamed force parameter in request body to force_time.

Add a list of agents to a group

POST /agents/group/{group_id}

PUT /agents/group

Use PUT instead of POST and specify the group id using the group_id parameter.

Put configuration file (agent.conf) into a group

POST /agents/groups/{group_id}/configuration

PUT /groups/{group_id}/configuration

The new endpoint works the same way but using PUT.

Upload file into a group

POST /agents/groups/{group_id}/files/{file_name}

PUT /groups/{group_id}/configuration

The new endpoint is used to update the group configuration. Use PUT instead of POST.

Insert agent

POST /agents/insert

POST /agents/insert

Renamed force parameter in request body to force_time.

Restart a list of agents

POST /agents/restart

PUT /agents/restart

Works the same way but using PUT instead of POST.

Add agent group

PUT /agents/{agent_id}/group/{group_id}

PUT /agents/{agent_id}/group/{group_id}

No changes.

Restart an agent

PUT /agents/{agent_id}/restart

PUT /agents/{agent_id}/restart

No changes.

Upgrade agent using online repository

PUT /agents/{agent_id}/upgrade

PUT /agents/{agent_id}/upgrade

Changed parameter type force in request body from integer to boolean.

Upgrade agent using custom file

PUT /agents/{agent_id}/upgrade_custom

PUT /agents/{agent_id}/upgrade_custom

No changes.

Add agent (quick method)

PUT /agents/{agent_name}

POST /agents/insert/quick?agent_name=name

Use POST instead of PUT and the agent_name parameter to specify the name of the new agent.

Create a group

PUT /agents/groups/{group_id}

POST /groups?group_id=group_id

Use POST instead of PUT and the group_id parameter to specify the name of the new group.

Restart agents which belong to a group

PUT /agents/groups/{group_id}/restart

PUT /agents/group/{group_id}/restart

The new endpoint works the same way by default.

Restart all agents

PUT /agents/restart

PUT /agents/restart

Added agents_list parameter in query to specify which agents must be restarted.

Restarts all agents by default or a list of them if agents_list parameter is used.

Cache

Action

API 3.x

API 4.0

Changes

Delete cache index

DELETE /cache

None

Not needed anymore. Cache is managed by the cluster.

Clear group cache

DELETE /cache/{group}

None

Not needed anymore. Cache is managed by the cluster.

Get cache index

GET /cache

None

Not needed anymore. Cache is managed by the cluster.

Return cache configuration

GET /cache/config

GET /cluster/api/config

The current cache configuration for any API can now be retrieved with the cluster endpoint.

Ciscat

Action

API 3.x usage

API 4.0 usage

Changes

Get CIS-CAT results from an agent

GET /ciscat/{agent_id}/results

GET /ciscat/{agent_id}/results

No changes.

Cluster

Action

API 3.x usage

API 4.0 usage

Changes

Delete a remote file in a cluster node

DELETE /cluster/{node_id}/files

DELETE /cluster/{node_id}/files

No changes.

Get active configuration in node node_id

GET /cluster/{node_id}/config/{component}/{configuration}

GET /cluster/{node_id}/configuration/{component}/{configuration}

No changes.

Get node node_id’s configuration

GET /cluster/{node_id}/configuration

GET /cluster/{node_id}/configuration

No changes.

Check Wazuh configuration in a cluster node

GET /cluster/{node_id}/configuration/validation

GET /cluster/configuration/validation?nodes_list=node_id

Use this endpoint to check if Wazuh configuration is correct for al cluster nodes or use nodes_list parameter to check only for a list of nodes.

Get local file from any cluster node

GET /cluster/{node_id}/files

GET /cluster/{node_id}/files

Removed validation parameter in query. Use GET /cluster/configuration/validation?nodes_list=node_id instead if validation is needed.

Get node_id’s information

GET /cluster/{node_id}/info

GET /cluster/{node_id}/info

No changes.

Get ossec.log from a specific node in cluster.

GET /cluster/{node_id}/logs

GET /cluster/{node_id}/logs

Renamed category parameter in query to tag. Renamed type_log parameter in query to level.

Get summary of ossec.log from a specific node in cluster.

GET /cluster/{node_id}/logs/summary

GET /cluster/{node_id}/logs/summary

No changes.

Get node node_id’s stats

GET /cluster/{node_id}/stats

GET /cluster/{node_id}/stats

Changed response in order to use an affected_items and failed_items response type.

Changed date format from YYYYMMDD to YYYY-MM-DD for date parameter in query.

Get node node_id’s analysisd stats

GET /cluster/{node_id}/stats/analysisd

GET /cluster/{node_id}/stats/analysisd

Changed response in order to use an affected_items and failed_items response type.

Get node node_id’s stats per hour

GET /cluster/{node_id}/stats/hourly

GET /cluster/{node_id}/stats/hourly

Changed response in order to use an affected_items and failed_items response type.

Get node node_id’s remoted stats

GET /cluster/{node_id}/stats/remoted

GET /cluster/{node_id}/stats/remoted

Changed response in order to use an affected_items and failed_items response type.

Get node node_id’s stats per week

GET /cluster/{node_id}/stats/weekly

GET /cluster/{node_id}/stats/weekly

Changed response in order to use an affected_items and failed_items response type.

Parameter hours changed to averages in response body.

Get node node_id’s status

GET /cluster/{node_id}/status

GET /cluster/{node_id}/status

No changes.

Get the cluster configuration

GET /cluster/config

GET /cluster/local/config

Use the cluster/local/config endpoint instead. This will get the current configuration of the node receiving the request.

Check Wazuh configuration in all cluster nodes

GET /cluster/configuration/validation

GET /cluster/configuration/validation

Added nodes_list parameter in query.

Return whether the Wazuh configuration is correct or not in all cluster nodes or a list of them if parameter nodes_list is used.

Show cluster health

GET /cluster/healthcheck

GET /cluster/healthcheck

Renamed node parameter in query to nodes_list.

Get local node info

GET /cluster/node

GET /cluster/nodes?agents_list=agent_id

Use the agents_list parameter to indicate which agents to get the information from.

Get nodes info

GET /cluster/nodes

GET /cluster/nodes

Get information about all nodes in the cluster or a list of them

Added nodes_list parameter in query used to specify which nodes to get the information from.

Get node info

GET /cluster/nodes/{node_name}

GET /cluster/nodes?nodes_list=node_id

Use the nodes_list parameter to indicate which nodes to get the information from.

Get info about cluster status

GET /cluster/status

GET /cluster/status

No changes.

Update local file at any cluster node

POST /cluster/{node_id}/files

PUT /cluster/{node_id}/files

Use PUT instead of POST.

Restart a specific node in cluster

PUT /cluster/{node_id}/restart

PUT /cluster/restart?nodes_list=node_id

Use the nodes_list parameter to indicate the nodes to restart.

Restart all nodes in cluster

PUT /cluster/restart

PUT /cluster/restart

Added nodes_list parameter in query

Restarts all nodes in the cluster by default or a list of them if nodes_list is found.

Decoders

Action

API 3.x usage

API 4.0 usage

Changes

Get all decoders

GET /decoders

GET /decoders

Added decoder_names parameter in query used to specify a list of decoder's names to get.

Added select parameter in query.

Renamed file parameter in query to filename.

Renamed path parameter in query to relative_dirname.

Get decoders by name

GET /decoders/{decoder_names}

GET /decoders?decoder_names=name

Use the decoder_names parameter to indicate which decoder to get the information from.

Get all decoders files

GET /decoders/files

GET /decoders/files

Removed download parameter. Use GET /decoders/files/{filename}/download instead.

Renamed file parameter in query to filename.

Renamed path parameter in query to relative_dirname.

Get all parent decoders

GET /decoders/parents

GET /decoders/parents

Added select parameter in query.

Experimental

Action

API 3.x usage

API 4.0 usage

Changes

Clear syscheck database

DELETE /experimental/syscheck

DELETE /experimental/syscheck

Added agents_list parameter in query.

If no agents_list is provided no agent syschecks will be removed. In order to remove all agent syschecks, it must be specified with the all keyword.

Get CIS-CAT results

GET /experimental/ciscat/results

GET /experimental/ciscat/results

Added agents_list parameter in query.

Removed agent_id parameter in query

Get hardware info of all agents

GET /experimental/syscollector/hardware

GET /experimental/syscollector/hardware

Added agents_list parameter in query.

Renamed ram_free parameter in query to ram.free and changed its type to integer.

Renamed ram_total parameter in query to ram.total and changed its type to integer.

Renamed cpu_cores parameter in query to cpu.cores and changed its type to integer.

Renamed cpu_mhz parameter in query to cpu.mhz and changed its type to number.

Renamed cpu_name parameter in query to cpu.name.

Get network address info of all agents

GET /experimental/syscollector/netaddr

GET /experimental/syscollector/netaddr

Added agents_list parameter in query.

Get network interface info of all agents

GET /experimental/syscollector/netiface

GET /experimental/syscollector/netiface

Added agents_list parameter in query.

Changed the type of mtu parameter to integer.

Renamed tx_packets parameter in query to tx.packets and changed its type to integer.

Renamed rx_packets parameter in query to rx.packets and changed its type to integer.

Renamed tx_bytes parameter in query to tx.bytes and changed its type to integer.

Renamed rx_bytes parameter in query to rx.bytes and changed its type to integer.

Renamed tx_errors parameter in query to tx.errors and changed its type to integer.

Renamed rx_errors parameter in query to rx.errors and changed its type to integer.

Renamed tx_dropped parameter in query to tx.dropped and changed its type to integer.

Renamed rx_dropped parameter in query to rx.dropped and changed its type to integer.

Get network protocol info of all agents

GET /experimental/syscollector/netproto

GET /experimental/syscollector/netproto

Added agents_list parameter in query.

Get os info of all agents

GET /experimental/syscollector/os

GET /experimental/syscollector/os

Added agents_list parameter in query.

Renamed os_name parameter in query to os.name.

Renamed os_version parameter in query to os.version.

Get packages info of all agents

GET /experimental/syscollector/packages

GET /experimental/syscollector/packages

Added agents_list parameter in query.

Get ports info of all agents

GET /experimental/syscollector/ports

GET /experimental/syscollector/ports

Added agents_list parameter in query.

Renamed local_ip parameter to local.ip.

Renamed local_port parameter to local.port.

Renamed remote_ip parameter to remote.ip.

Get processes info of all agents

GET /experimental/syscollector/processes

GET /experimental/syscollector/processes

Added agents_list parameter in query.

Lists

Action

API 3.x usage

API 4.0 usage

Changes

Get all lists

GET /lists

GET /lists

Added filename parameter in query used to filter by filename.

Added select parameter in query.

Renamed path parameter in query to relative_dirname.

Get paths from all lists

GET /lists/files

GET /lists/files

Added filename parameter in query used to filter by filename.

Added relative_dirname parameter in query used to filter by relative directory name.

Manager

Action

API 3.x usage

API 4.0 usage

Changes

Delete a local file

DELETE /manager/files

DELETE /manager/files

No changes.

Get manager active configuration

GET /manager/config/{component}/{configuration}

GET /manager/configuration/{component}/{configuration}

No changes.

Get manager configuration

GET /manager/configuration

GET /manager/configuration

No changes.

Check Wazuh configuration

GET /manager/configuration/validation

GET /manager/configuration/validation

No changes.

Get local file

GET /manager/files

GET /manager/files

Removed validation parameter in query. Use GET /manager/configuration/validation instead if needed.

Get manager information

GET /manager/info

GET /manager/info

Parameter openssl_support in response is now a boolean.

Get ossec.log

GET /manager/logs

GET /manager/logs

Renamed category parameter in query to tag. Renamed type_log parameter in query to level.

Get summary of ossec.log

GET /manager/logs/summary

GET /manager/logs/summary

Return a summary of the last 2000 wazuh log entries instead of the last three months.

Get manager stats

GET /manager/stats

GET /manager/stats

Changed response in order to use an affected_items and failed_items response type.

Changed date format from YYYYMMDD to YYYY-MM-DD for date parameter in query.

Get analysisd stats

GET /manager/stats/analysisd

GET /manager/stats/analysisd

Changed response in order to use an affected_items and failed_items response type.

Get manager stats per hour

GET /manager/stats/hourly

GET /manager/stats/hourly

Changed response in order to use an affected_items and failed_items response type.

Get remoted stats

GET /manager/stats/remoted

GET /manager/stats/remoted

Changed response in order to use an affected_items and failed_items response type.

Get manager stats per week

GET /manager/stats/weekly

GET /manager/stats/weekly

Changed response in order to use an affected_items and failed_items response type.

Parameter hours changed to averages in response body.

Get manager status

GET /manager/status

GET /manager/status

No changes.

Update local file

POST /manager/files

PUT /manager/files

The new endpoint works the same way but using PUT.

Restart Wazuh manager

PUT /manager/restart

PUT /manager/restart

No changes.

Rootcheck

Action

API 3.x usage

API 4.0 usage

Changes

Clear rootcheck database

DELETE /rootcheck

None

Deprecated.

Clear rootcheck database of an agent

DELETE /rootcheck/{agent_id}

None

Deprecated.

Get rootcheck database

GET /rootcheck/{agent_id}

None

Deprecated.

Get rootcheck CIS requirements

GET /rootcheck/{agent_id}/cis

None

Deprecated.

Get last rootcheck scan

GET /rootcheck/{agent_id}/last_scan

None

Deprecated.

Get rootcheck pci requirements

GET /rootcheck/{agent_id}/pci

None

Deprecated.

Run rootcheck scan in all agents

PUT /rootcheck

None

Deprecated.

Run rootcheck scan in an agent

PUT /rootcheck/{agent_id}

None

Deprecated.

Rules

Action

API 3.x usage

API 4.0 usage

Changes

Get all rules

GET /rules

GET /rules

Added rule_ids parameter in query.

Added select parameter in query.

Renamed file parameter to filename.

Renamed pci parameter in query to pci_dss.

Get rules by id

GET /rules/{rule_id}

GET /rules?rule_ids=rule_id

Use the rules_id parameter to specify which rules to get the information from.

Get files of rules

GET /rules/files

GET /rules/files

Renamed path parameter in query to relative_dirname.

Renamed file parameter in query to filename.

Removed download parameter in query. Use GET /rules/files/{file}/download instead.

Get rule gdpr requirements

GET /rules/gdpr

GET /rules/requirement/gdpr

Use the new GET /rules/requirement endpoint.

Get rule gpg13 requirements

GET /rules/gpg13

GET /rules/requirement/gpg13

Use the new GET /rules/requirement endpoint.

Get rule groups

GET /rules/groups

GET /rules/groups

No changes.

Get rule hipaa requirements

GET /rules/hipaa

GET /rules/requirement/hipaa

Use the new GET /rules/requirement endpoint.

Get rule nist-800-53 requirements

GET /rules/nist-800-53

GET /rules/requirement/nist-800-53

Use the new GET /rules/requirement endpoint.

Get rule pci requirements

GET /rules/pci

GET /rules/requirement/pci_dss

Use the new GET /rules/requirement endpoint.

Get rule tsc requirements

GET /rules/tsc

GET /rules/requirement/tsc

Use the new GET /rules/requirement endpoint.

Get rule mitre requirements

GET /rules/mitre

GET /rules/requirement/mitre

Use the new GET /rules/requirement endpoint.

Security Assesment Configuration

Action

API 3.x usage

API 4.0 usage

Changes

Get security configuration assessment (SCA) database

GET /sca/{agent_id}

GET /sca/{agent_id}

No changes.

Get security configuration assessment (SCA) checks database

GET /sca/{agent_id}/checks/{policy_id}

GET /sca/{agent_id}/checks/{policy_id}

No changes.

Summary

Action

API 3.x usage

API 4.0 usage

Changes

Get a full summary of agents

GET /summary/agents

GET /overview/agents

Use the new GET /overview/agents endpoint instead.

Syscheck

Action

API 3.x usage

API 4.0 usage

Changes

Clear syscheck database of an agent

DELETE /syscheck/{agent_id}

DELETE /syscheck/{agent_id}

No changes.

Get syscheck files

GET /syscheck/{agent_id}

GET /syscheck/{agent_id}

No changes.

Get last syscheck scan

GET /syscheck/{agent_id}/last_scan

GET /syscheck/{agent_id}/last_scan

No changes.

Run syscheck scan in all agents

PUT /syscheck

PUT /syscheck

No changes.

Run syscheck scan in an agent

PUT /syscheck/{agent_id}

PUT /syscheck

Use the agents_list parameter to indicate which agents must run a syscheck scan.

Syscollector

Action

API 3.x usage

API 4.0 usage

Changes

Get hardware info

GET /syscollector/{agent_id}/hardware

GET /syscollector/{agent_id}/hardware

No changes.

Get hotfixes info

GET /syscollector/{agent_id}/hotfixes

GET /syscollector/{agent_id}/hotfixes

No changes.

Get network address info of an agent

GET /syscollector/{agent_id}/netaddr

GET /syscollector/{agent_id}/netaddr

No changes.

Get network interface info of an agent

GET /syscollector/{agent_id}/netiface

GET /syscollector/{agent_id}/netiface

Changed the type of mtu parameter to integer.

Renamed tx_packets parameter in query to tx.packets and changed its type to integer.

Renamed rx_packets parameter in query to rx.packets and changed its type to integer.

Renamed tx_bytes parameter in query to tx.bytes and changed its type to integer.

Renamed rx_bytes parameter in query to rx.bytes and changed its type to integer.

Renamed tx_errors parameter in query to tx.errors and changed its type to integer.

Renamed rx_errors parameter in query to rx.errors and changed its type to integer.

Renamed tx_dropped parameter in query to tx.dropped and changed its type to integer.

Renamed rx_dropped parameter in query to rx.dropped and changed its type to integer.

Get network protocol info of an agent

GET /syscollector/{agent_id}/netproto

GET /syscollector/{agent_id}/netproto

No changes.

Get os info

GET /syscollector/{agent_id}/os

GET /syscollector/{agent_id}/os

No changes.

Get packages info

GET /syscollector/{agent_id}/packages

GET /syscollector/{agent_id}/packages

No changes.

Get ports info of an agent

GET /syscollector/{agent_id}/ports

GET /syscollector/{agent_id}/ports

Added process parameter used to filter by process name.

Renamed local_ip parameter to local.ip.

Renamed local_port parameter to local.port.

Renamed remote_ip parameter to remote.ip.

Get processes info

GET /syscollector/{agent_id}/processes

GET /syscollector/{agent_id}/processes

No changes.