To answer your original question, the .assert file is actually made up of multiple different assertions, so to build that file you will need to manually get each and every assertion for a given snap. I don’t know for sure off the top of my head but I think the full set of assertion types that could be included in the .assert file is:
where if the snap is published by Canonical, there will not be an account key, because it will be the same account as the account-key assertion. To get one such assertion from the assertion service, you can use the following
snap known command:
snap known --direct snap-declaration snap-id=OZ7LxjGo2W76qWvpNpiklbRtCA4u84L3 series=16
where currently --direct means go straight to the store, or you can also use --remote to first proxy via snapd, but in your case probably --direct is better.
Unfortunately there is not a simple equivalent cURL call to the
snap known command above due to the complexities surrounding the assertion service, but the
snap known command should be very lightweight in terms of bandwidth usage so hopefully it works for you.