API Documentation

The club has an API that allows the upload of QSOs from a member's logbook. The API has a single endpoint for QSO upload, and authentication is via a header X-API-Key that must be sent with the request, containing the member's API key generated via the profile page.

POST https://qo100dx.club/api/qso

This endpoint accepts either application/json or text/plain data.

In the examples bellow, the fields in bold are mandatory, and the same rules apply to regular file upload. All the field names comply with the ADIF specification.

JSON

For application/json the request must be formed as a JSON object with properties corresponding to the required ADIF fields.
Example:

    {
        "QSO_DATE": "20210405",
        "TIME_ON": "104258",
        "STATION_CALLSIGN": "AB1CDE",
        "CALL": "FG2HIJ",
        "MODE": "SSB",
        "BAND": "13cm",
        "SAT_NAME": "QO-100",
        "PROP_MODE": "SAT",
        "GRIDSQUARE": "IM58",
        "VUCC_GRIDS": "IM58,IM59",
        "MY_GRIDSQUARE": "IM58",
        "MY_VUCC_GRIDS": "IM58,IM59"
    }
Plain Text

For text/plain the request is in text format and must conform to the ADI format as described in the ADIF specification.
Example:

    
    <QSO_DATE:8>20210405
    <TIME_ON:6>104258
    <STATION_CALLSIGN:6>AB1CDE
    <CALL:6>FG2HIJ
    <MODE:3>SSB
    <BAND:4>13cm
    <SAT_NAME:6>QO-100
    <PROP_MODE:3>SAT
    <GRIDSQUARE:4>IM58
    <VUCC_GRIDS:9>IM58,IM59
    <MY_GRIDSQUARE:4>IM58
    <MY_VUCC_GRIDS:9>IM58,IM59
    <EOR>
Response

In case of success the server returns a 200 HTTP status code and an empty response.

In case of error the appropriate HTTP status code is returned, in some cases with an error message. If the request had the application/json content type, the response will be a JSON structure with a single property with the error messages, example:

{
    'errors' => [
        "Can't decode JSON data"
    ]
}

The possible returned codes are:

Code Explanation
405 Method Not Allowed The API only supports POST requests and it has received some other verb.
406 Not Acceptable Content type must be either application/json or text/plain.
401 Unauthorized Either the API key wasn't supplied in the X-API-Header or is not valid. Reasons for not being valid include invalid or deleted key, or user not found.
400 Bad Request More information is supplied in the response, reasons include a malformed JSON/ADI record, mandatory fields missing, etc.