Reading it again, I'm still not sure I understand.
I think what you want is to mark a place on the map, where the player needs to obtain an item. Not sure how that works, but look at the Sapienza mission for an example. You might need to add a modded brick to the level, then you can set your own id in the brick and use that in the contract.
I do not think there is a way to do that by only editing the contract json, as weapons are not unique.