# Migration Guide
The following guide assumes a valid v0.9.x config.json file. All changes
listed below will need to be implemented in order to migrate to Airnode v0.10.x.
This document is written in a way that will preserve existing behavior with
earlier Airnode versions.
The document also mentions changes to user facing services related to Airnode, such as airnode-deployer, airnode-admin, etc., and new features.
# Migration
# Summary
- ois[n].oisFormatupdated to "1.4.0".
- nodeSettings.nodeVersionupdated to "0.10.1".
- Field - chains[n].authorizers.crossChainRequesterAuthorizerswas added.
- Fields - nodeSettings.httpGateway.apiKeyand- nodeSettings.httpSignedDataGateway.apiKeywere removed.
- Field - nodeSettings.heartbeat.idwas removed.
- Command - airnode-deployer remove-with-deployment-detailsno longer exists. It was replaced by a command- airnode-deployer remove <deployment ID>.
# Details
- ois[n].oisFormat
Updated to "1.4.0"
{
-  "oisFormat": "1.2.0"
+  "oisFormat": "1.4.0"
}
2
3
4
- nodeSettings.nodeVersion
Updated to "0.10.1"
{
-  "nodeVersion": "0.9.2"
+  "nodeVersion": "0.10.1"
}
2
3
4
- A new field chains[n].authorizers.crossChainRequesterAuthorizerswas added, allowing for cross-chain request authorization. Even if not used, the field needs to be in the config file and set to an empty array.
{
   "authorizers": {
-     "requesterEndpointAuthorizers": []
+     "requesterEndpointAuthorizers": [],
+     "crossChainRequesterAuthorizers": []
   },
}
2
3
4
5
6
7
- Fields nodeSettings.httpGateway.apiKeyandnodeSettings.httpSignedDataGateway.apiKeywere removed from the gateways configurations. Gateway URLs now contain a randomly generated UUID serving as an authentication mechanism. This change is relevant only for those using the HTTP Gateways feature.
{
   "httpGateway": {
      "enabled": true,
-     "apiKey": "${HTTP_GATEWAY_API_KEY}",
      "maxConcurrency": 20,
      "corsOrigins": []
   },
   "httpSignedDataGateway": {
      "enabled": true,
-     "apiKey": "${HTTP_SIGNED_DATA_GATEWAY_API_KEY}",
      "maxConcurrency": 20,
      "corsOrigins": []
   },
}
2
3
4
5
6
7
8
9
10
11
12
13
14
- Field nodeSettings.heartbeat.idwas removed from the heartbeat configuration. The ID is no longer needed to recognize which Airnode is sending the heartbeat request as the payload is signed by the Airnode and the Airnode's public key can be recovered from the signature. This change is relevant only for those using the Heartbeat feature.
{
   "heartbeat": {
      "enabled": true,
      "apiKey": "${HEARTBEAT_API_KEY}",
-     "id": "${HEARTBEAT_ID}",
      "url": "${HEARTBEAT_URL}"
   },
}
2
3
4
5
6
7
8
- The command airnode-deployer remove-with-deployment-detailsno longer exists and was replaced by a new commandairnode-deployer remove <deployment ID>. In order to remove the Airnode deployment with this command, you need to provide a deployment ID. You can find deployment ID in thereceipt.jsonfile for a given deployment or viaairnode-deployer listcommand. You can still remove the Airnode deployment with theairnode-deployer remove-with-receiptcommand as before.
# New features
- Skipping API calls to just run pre/post processing, see the OIS documentation.
- There are two new reserved parameters available,
_gasPriceand_minConfirmations. You can read more about how and what are they used for in the documentation.
- We now support a new type of authorizers, cross-chain authorizers. Read more about when it makes sense to use it and how in the documentation.
- Airnode's Deployer CLI went through multiple changes, improving the user
experience. There are four additional commands,
list,info,rollbackandfetch-filesto help you interact with your deployments more easily. You can read all about the new features in the documentation.
- In order to provide a better sense of Airnode behavior and improve the
visibility of request logs within cloud provider monitoring services, the log
level specified by nodeSettings.logLevelwithinconfig.jsonhas been changed fromINFOtoDEBUGforairnode-examplesintegrations. Similarly, integration deployment commands are now run with the--debugflag.

