so maybe the upload is that same 52 byte archive record?
Why not? I can imagine the thought process that if you already have a concise format for all the key data that your weather station can generate then why reinvent the wheel, especially when you have C++ (or whatever) modules on-hand that already build and parse the records. BICBW.
The binary upload format resembles the station formats but isn't quite the same. Uploading from 3rd party software is very doable but how Davis would react to that is unclear.
All uploads are HTTP PUT's and include an 11 byte header that contains the packet type and authentication info. There are packet types for setup, loops, archive records, hilows, etc.
I would describe an upload loop packet as "loop 1.5". It's a total of 120 bytes and consists of the header, nearly an entire unmodified station loop 1 packet (just a few useless leading and trailing bytes stripped) and the unique fields from a station loop 2 packet picked out.
An upload archive packet is very straight forward. It's the header, 1 byte indicating the number of records being sent, and the 52 byte records follow.
I'm really tempted to write a stand-alone uploader...