Online scoring XML specification

Here is an example of XML postings generated by N1MM+:


<?xml version="1.0"?>
<dynamicresults>
<contest>ARRL-FIELD-DAY</contest>
<call>VA2WA</call>
<ops>VA2WA, VE2FK</ops>
<soft>N1MM Logger+</soft>
<version>1.0.7099.0</verions>
<class power="LOW" assisted = "NON-ASSISTED" transmitter="UNLIMITED" ops="MULTI-OP" bands="ALL" mode="MIXED" overlay="N/A"></class>
<club>Contest Group du Quebec</club>
<qth>
<dxcccountry>VE</dxcccountry>
<cqzone>5</cqzone>
<iaruzone>4</iaruzone>
<arrlsection>QC</arrlsection>
<stprvoth>QC</stprvoth>
<grid6>FN36QA</grid6>
</qth>
<breakdown>
<qso band="20" mode="CW">177</qso>
<point band="20" mode="CW">290</point>
<qso band="20" mode="PH">21</qso>
<point band="20" mode="PH">20</point>
<qso band="15" mode="CW">82</qso>
<point band="15" mode="CW">136</point>
<qso band="15" mode="PH">3</qso>
<point band="15" mode="PH">3</point>
<qso band="10" mode="CW">1</qso>
<point band="10" mode="CW">2</point>
<qso band="10" mode="PH">1</qso>
<point band="10" mode="PH">1</point>
<qso band="40" mode="CW">67</qso>
<point band="40" mode="CW">100</point>
<qso band="40" mode="PH">4</qso>
<point band="40" mode="PH">4</point>
<qso band="total" mode="ALL">356</qso>
<point band="total" mode="ALL">556</point>
</breakdown>
<score>1112</score>
<timestamp>2018-06-24 08:11:32</timestamp>
</dynamicresults>

another one with one multiplier:

 <?xml version="1.0"?>
<dynamicresults>
<contest>CW-Ops</contest>
<call>K3WJV</call>
<ops>K3WJV</ops>
<class power="HIGH" assisted = "ASSISTED" transmitter="ONE" ops="SINGLE-OP" bands="ALL" mode="CW" overlay="N/A">
</class> <club>Frankford Radio Club</club> <qth> <dxcccountry>K</dxcccountry> <cqzone>5</cqzone> <iaruzone>8</iaruzone> <arrlsection>EPA</arrlsection>
<stprvoth>PA</stprvoth>
<grid6>FN11KW</grid6> </qth>
<breakdown>
<qso band="20" mode="CW">77</qso>
<mult band="20" mode="CW" type="state">72</mult>
<point band="20" mode="CW">77</point>
<qso band="15" mode="CW">16</qso>
<mult band="15" mode="CW" type="state">16</mult>
<point band="15" mode="CW">16</point>
<qso band="40" mode="CW">39</qso>
<mult band="40" mode="CW" type="state">29</mult>
<point band="40" mode="CW">39</point>
<qso band="total" mode="ALL">132</qso>
<mult band="total" mode="ALL" type="state">117</mult>
<point band="total" mode="ALL">132</point>
</breakdown> <score>15444</score>
<timestamp>2018-06-20 19:58:31</timestamp>
</dynamicresults>

with two multipliers:

<?xml version="1.0"?>
<dynamicresults>
<contest>CQ-WW-SSB</contest>
<call>K7RL</call>
<ops>K7RL</ops>
<class power="HIGH" assisted = "NON-ASSISTED" transmitter="ONE" ops="SINGLE-OP" bands="ALL" mode="SSB" overlay="N/A"></class>
<club> </club>
<qth>
<dxcccountry>K</dxcccountry>
<cqzone>3</cqzone>
<iaruzone>6</iaruzone>
<arrlsection>WWA</arrlsection>
<stprvoth>WA</stprvoth>
<grid4>CN88</grid4>
</qth> <breakdown>
<qso band="160" mode="PH">28</qso>
<mult band="160" mode="PH" type="zone">9</mult>
<mult band="160" mode="PH" type="country">8</mult>
<point band="160" mode="PH">45</point>
<qso band="20" mode="PH">1413</qso>
<mult band="20" mode="PH" type="zone">36</mult>
<mult band="20" mode="PH" type="country">118</mult>
<point band="20" mode="PH">3632</point>
<qso band="15" mode="PH">180</qso>
<mult band="15" mode="PH" type="zone">18</mult>
<mult band="15" mode="PH" type="country">40</mult>
<point band="15" mode="PH">408</point>
<qso band="10" mode="PH">2</qso>
<mult band="10" mode="PH" type="zone">1</mult>
<mult band="10" mode="PH" type="country">2</mult>
<point band="10" mode="PH">2</point>
<qso band="80" mode="PH">109</qso>
<mult band="80" mode="PH" type="zone">19</mult>
<mult band="80" mode="PH" type="country">33</mult>
<point band="80" mode="PH">215</point>
<qso band="40" mode="PH">669</qso>
<mult band="40" mode="PH" type="zone">29</mult>
<mult band="40" mode="PH" type="country">71</mult>
<point band="40" mode="PH">1626</point>
<qso band="total" mode="ALL">2401</qso>
<mult band="total" mode="ALL" type="zone">112</mult>
<mult band="total" mode="ALL" type="country">272</mult>
<point band="total" mode="ALL">5928</point>
</breakdown>
<score>2276352</score>
<timestamp>2018-10-29 13:19:47</timestamp></dynamicresults>


and a short one without bands breakdown:

<?xml version="1.0"?>
<dynamicresults>
<contest>CQ-WW-SSB</contest>
<call>NR9Q</call> <ops>NR9Q</ops>
<class power="HIGH" assisted = "ASSISTED" transmitter="ONE" ops="SINGLE-OP" bands="ALL" mode="SSB" overlay="N/A"></class>
<club>Society of Midwest Contesters</club>
<qth>
<dxcccountry>K</dxcccountry>
<cqzone>4</cqzone>
<iaruzone>8</iaruzone>
<arrlsection>IL</arrlsection>
<stprvoth>IL</stprvoth>
<grid6>EN40IC</grid6>
</qth>
<breakdown>
<qso band="total" mode="ALL">20</qso>
<mult band="total" mode="ALL" type="zone">13</mult>
<mult band="total" mode="ALL" type="country">17</mult>
<point band="total" mode="ALL">49</point>
</breakdown> <score>1470</score>
<timestamp>2018-10-29 13:20:27</timestamp>
</dynamicresults>

The elements properties values are pre-defined:


<class power="LOW" assisted = "NON-ASSISTED" transmitter="UNLIMITED" ops="MULTI-OP" bands="ALL" mode="MIXED" overlay="N/A"></class>  

power        LOW, HIGH, QRP

assisted    NON-ASSISTED, ASSISTED

transmitter  UNLIMITED, TWO, ONE

ops            MULTI-OP, SINGLE-OP  **

bands ALL, 160M, 80M, 40M, 20M, 15M, 10M, 6M, 2M, 1.25M, 0.70M, 0.33M, 0.23M, 0.13M, 009M, 0.05M, 0.03M etc.

mode          MIXED, CW, PH, RTTY, PSK, FT8, DIGI

overlay      N/A, TB-WIRES, ROCKY, CLASSIC, WIRE-ONLY


** some loggers provide different operators category coding:


ops             = SINGLE-OP, MULTI-ONE, MULTI-TWO, MULTI-MULTI


If so way the transmitter could be TWO or ONE makes sense only for SINGLE-OP to declare SO2R or SO1R.

  1. It’s important to have summary at the end:
<qso band="total" mode="ALL">20</qso> 
<mult band="total" mode="ALL" type="zone">13</mult>
<mult band="total" mode="ALL" type="country">17</mult>
<point band="total" mode="ALL">49</point>

2. Contest id and multipliers attributes :  https://contestonlinescore.com/settings/. It’s based on N1MM Cabrillo Contest ID list.


3. XML post should be sent with Basic HTTP Authentication providing a callsign as a username and a password


4. Our posting gateway URL: https://contestonlinescore.com/post/

5. The score posting output is provided over HTML in json:

 {"status":200,"status_message":"OK-Full"}  if successful

or if posting not accepted:

{"status":404,"status_message":"Error! Contest is closed or is not valid"}
{"status":405,"status_message":"Error! Empty call"}