1. First Transmission before beginning a contest =============================================== { "Call":"VA2WA", "Contest":"NAQP-CW", "StationInfo":{ "Call":"VA2WA", "Name":"Victor", "Addr1":"1185 rue de Blois", "Addr2":"", "AddrCity":"Boucherville", "AddrState":"QC", "AddrZip":"J4B 7Z5", "AddrCountry":"CANADA", "GridSquare":"FN36QA", "ARRLSect":"QC", "State":"QC", "Club":"Contest Group du Quebec", "IARUZone":4, "CQZone":5 }, "ContestInfo":{ "OperatorCategory":"SINGLE-OP", "BandCategory":"ALL", "PowerCategory":"HIGH", "ModeCategory":"CW", "OverlayCategory":"", "Operators":"VA2WA", "StationCategory":"FIXED", "AssistedCategory":"ASSISTED", "TransmitterCategory":"ONE", "TimeCategory":"" }, "RecentlyLogged":, "RecentlyEdited":, "RecentlyDeleted":, "TimeStamp":"2019-10-21 20:59:45" } ============================================================ 2. Empty log no changes in StationInfo and in ContestInfo. "Heartbeat" ping. (We need constantly see if a station is still online). { "Call":"VA2WA", "Contest":"NAQPCW", "TS":"2019-10-21 20:59:45" } ============================================================ 3. New one QSO, no changes in StationInfo and in ContestInfo { "Call":"VA2WA", "Contest":"NAQP-CW", "RecentlyLogged":{ "Time":"2019-10-21 20:59:44", "TxFq":"1402500", "Mode":"CW", "Call":"K5ZD", "Tx1":"VIC", "Tx2":"QC", "Tx3":"", "Rx1":"RANDY", "Rx2":"MD", "Rx3":"", "RadioNr":"1", "IsRun":"1" }, "RecentlyEdited":, "RecentlyDeleted":, "TS":"2019-10-21 20:59:45" } or even shorter (Rx3, Tx3 are skipped since are not defined) { "Call":"VA2WA", "Contest":"NAQP-CW", "RecentlyLogged":{ "Time":"2019-10-21 20:59:44", "TxFq":"1402500", "Mode":"CW", "Call":"K5ZD", "Tx1":"VIC", "Tx2":"QC", "Rx1":"RANDY", "Rx2":"MD", "RadioNr":"1", "IsRun":"1" }, "TS":"2019-10-21 20:59:45" } ============================================================ 4. New QSOs, no changes in the StationInfo and in the ContestInfo { "Call":"VA2WA", "Contest":"NAQP-CW", "RecentlyLogged":[{ "Time":"2019-10-21 20:59:44", "TxFq":"1402500", "Mode":"CW", "Call":"VE2FK", "Tx1":"VIC", "Tx2":"QC", "Rx1":"CLAUDE", "Rx2":"QC", "RadioNr":"1", "IsRun":"0" }, { "Time":"2019-10-21 20:59:44", "TxFq":"1402500", "Mode":"CW", "Call":"VA2EW", "Tx1":"VIC", "Tx2":"QC", "Tx3":"", "Rx1":"GILLES", "Rx2":"QC", "RadioNr":"1", "IsRun":"1" }], "TS":"2019-10-21 21:07:45" } ============================================================== 4. Two new QSOs, one QSO edited, one QSO deleted no changes in StationInfo and in ContestInfo (Rx3, Tx3 are skipped since are not defined) { "Call":"VA2WA", "Contest":"NAQP-CW", "RecentlyLogged":[{ "Time":"2019-10-21 20:59:44", "TxFq":"1402500", "Mode":"CW", "Call":"VE3ON", "Tx1":"VIC", "Tx2":"QC", "Rx1":"ALEX", "Rx2":"ON", "RadioNr":"1", "IsRun":"1" }, { "Time":"2019-10-21 20:59:44", "TxFq":"1402500", "Mode":"CW", "Call":"VA2CZ", "Tx1":"VIC", "Tx2":"QC", "Rx1":"PIERRE", "Rx2":"QC", "RadioNr":"1", "IsRun":"1" }], "RecentlyEdited":{ "exTimeStamp":"2019-10-21 20:59:44", "exTxFq":"1402500", "exCall":"K5ZD", "Call":"K5ZD", "TimeStamp":"2019-10-21 20:59:44", "TxFq":"1402500", "Mode":"CW", "Call":"K5ZD", "Tx1":"VIC", "Tx2":"QC", "Rx1":"RANDY", "Rx2":"MA", "RadioNr":"1", "IsRun":"1" }, "RecentlyDeleted":{ "Time":"2019-10-21 20:59:44", "TxFq":"1402500", "Call":"VE2FK" }, "TS":"2019-10-21 21:14:05" } ======================================================================== 5. Request on deleting all the QSO's (in case of general error or just before whole log resynchronization) { "Call":"VA2WA", "Contest":"NAQP-CW", "RecentlyDeleted":{ "Time":"All" }, "TS":"2019-10-21 21:35:11" } ============================================================== 6. Changes in StationInfo or/and in ContestInfo (StatioInfo and ContestInfo should always be presented both) (Addr2, OverlayCategory and TimeCategory are skipped since are not defined) { "Call":"VA2WA", "Contest":"NAQPCW", "StationInfo":{ "Call":"VA2WA", "Name":"Victor", "Addr1":"1185 rue de Blois", "AddrCity":"Boucherville", "AddrState":"QC", "AddrZip":"J4B 7Z5", "AddrCountry":"CANADA", "GridSquare":"FN36QA", "ARRLSect":"QC", "State":"QC", "Club":"Contest Group du Quebec", "IARUZone":4, "CQZone":5 }, "ContestInfo":{ "ContestName":"NAQPCW", "OperatorCategory":"SINGLE-OP", "BandCategory":"ALL", "PowerCategory":"HIGH", "ModeCategory":"CW", "Operators":"VA2WA", "StationCategory":"FIXED", "AssistedCategory":"ASSISTED", "TransmitterCategory":"ONE" }, "TimeStamp":"2019-10-21 20:59:45" } ============================================================ 1 If some parameters are not in use or empty (undefined) they could be skipped in a posting. For example if contest has just one exchange there no need to send "Tx2", "Tx3" and "Rx2", "Rx3" in "RecentlyLogged" and "RecentlyEdited". In "ContestInfo", "OverlayCategory" and "TimeCategory" also could be skipped if not defined. Etc. 2 May be that wouldn't make any sense to send "RadioNr" and "IsRun" for a single operator since that could have some value only for checking Multi Operator category. 3 Frequency is an Integer value rounded by 100 Hz. For example 14,255.000 => 1425500. 1,830.330 => 183033. 4. The "StationInfo" and "ContestInfo" should be sent once in the first posting. After that no needs to send it every time as we do for Real Time scoring. Anyway they both should be sent in case if some value has been changed after that first posting 5. The "StationInfo", "ContestInfo" and "RecentlyLogged" parameters could be extended if needed. For example a new parameter "RoverQTH" could be added for ARRL VHF. 6. The RTC API is not Cabrillo even we use some of commonly used Cabrillo definitions. So the follwoing values can be recognized: "OperatorCategory": SINGLE-OP, MULTI-OP, CHECKLOG "AssistedCategory": ASSISTED, NON-ASSISTED "ModeCategory": CW, PHONE, MIXED, RTTY, PSK, FT8, FT4, DIGI "BandCategory":ALL,160M,80M,40M,20M,15M,10M,6M,2M "PowerCategory":"HIGH", "TransmitterCategory":ONE,TWO,UNLIMITED 7. For MULTY category there are two parametrs RadioNr and IsRun neded for a band change violation check" RadioNr for MULTI-SINGLE (as in CQWW) uses 0 for run station and 1 for mult station RadioNr for MULTI-TWO uses the tx id of 0 or 1 to indicate which station is making the QSOs RadioNr for MULTI-UNLIMITED uses the station number to indicate which station is making the QSOs. RadioNr - the number of radio in the Multi station which has logged that particular QSO. It could be 1,2,3 etc. IsRun - means that QSO has been made on the RUN freq or by S/P. It could be either 0 or 1. 8. We use Cabrillo contest id as a "Contest" identifier ============================================================= There are 3 types of RTC server response: 1) All data has been received: { "Status":"OK", "TimeStamp" :"2019-10-21 21:19:33" } 2) Something went wrong: { "Status":"Error", "Description":"Contest is not identified", "TimeStamp" :"2019-10-21 21:19:33" } { "Status":"Error", "Description":"Contest is not active", "TimeStamp" :"2019-10-21 21:19:33" } { "Status":"Error", "Description":"Contest is closed", "TimeStamp" :"2019-10-21 21:19:33" } { "Status":"Error", "Description":"Wrong Data", "TimeStamp" :"2019-10-21 21:19:33" } 2) Request on the whole log syncronyzation: { "Status":"ResyncLog", "TimeStamp" :"2019-10-21 21:19:33" }