ArduinoJSON define as extern
For an extern the whole definition has to match the &quot;master&quot; definition.
So if you have:
StaticJsonDocument&lt;JSON_SIZE_IOT&gt; paramJSON;

then you extern has to be:
extern StaticJsonDocument&lt;JSON_SIZE_IOT&gt; paramJSON;

Of course you have to make sure your JSON_SIZE_IOT is the same for both - so it's best if that comes from a common source.
This is known as explicit instantiation declaration and you can read more about it in the Class template C++ reference.