Documentation packages

On this page we have put together three different documentation packages, depending on what function you represent.
The numbered items are actions you need to take, some may be optional. Unnumbered items are just information

Race Organiser Package

The information below are intended for race organisers that are or want to be on our site. There are many perks of being added to our site. You get added exposure, and athletes can use your race to qualify for the championships. Furthermore it is a great archive where your participants can see results from years back and compare how they are doing in your course. It is also possible to use our list for seeding your race. This is particuarly good to avoid queues on your race.

If you are interested in having your race on our page, contact your national federation as they can add your race. If there are any issues or you can't get hold of your national federation, please write us at ranking@ocrrunner.com
Please note that your race must comply with the FISO regulations and rules to be included.

To be able to identify athletes in the result lists there must be a field for AthleteID in your registration process. This is very important as the organizer of the event otherwise can't use the results for the ranking list

Talk to your registration page provider and timing provider to include this information. Below is an example of how this may look on a registration page:

Image of ranking example

The link should open a new tab or window and direct the user to our registration page at https://ranking.ocrrunner.com/register-participant

After the race you submit your file (template) on this site: , you have to log in using the credentials that you got in the email from us. If you can't find the email, ask your national federation as they got a copy.

The cost of submission for 2025 is a flat fee of €50 per race and €1.0 per athlete, the season of 2024 is free of charge. The rates are updated annually according to HICP. This cover our costs to develop and run the website.

The results file must be correctly submitted at latest 5 working days after the race. This is an obligation towards the participants who want to know their results. Late submissions incur a fee of €100

One of the many perks of the ranking list is to be able to use it for seeding. Having a way to compare athletes gives the ability to set the standard of the competetors beforehand.

We are currently implementing a way to easier generate a seeded list from your start lists. Registration pages can use our API as stated below. If you are in need of seeding before we are done with the new implementation, contact us at ranking@ocrrunner.com

It is your responsibility to ensure that the data you submit is correct. If you determine that the compaint is legitimate and there is a fault in the data, please contact us at ranking@ocrrunner.com. If there are any errors on our part we will fix them at no cost. If there are errors because of a fault in your submitted lists that require recalculation, there will be a fee of €50.

National federation package

The information below are intended for representatives from national OCR federations that are or want to be on our lists. There are many benefits of joining us. It is easy for athletes to see their progress, and to have a fair assessment of their performance. It is also a race archive. Furthermore you can use our site to export qualified athletes for the championships automatically using predefined limits.

Athletes from your nation will only be visible on the ranking list if the national federation has registered with us.

To register, send an email to ranking@ocrrunner.com, stating your nationality, your role, contact information etc.

Once validated we will create an account for your national federation so that you can add upcoming races to our list.

After registering, you will get a log-in and be able to add upcoming races via this page. This is a very simple process where you add information about the race.

Image of registration process

After submitting the information about the race, we will review and approve your application. When approved, a log-in will be created for that particular race and sent to you and the race organiser.

Image of ranking example

After the race, the organiser will use this log-in to submit the results. Detailed information about this can be found in the Documentation for Race Organisers in the menu above.

When an athlete registers through our site they receive a unique AthleteID. This AthleteID is what should be used when registering for races. Athlete IDs are uniform and follow the same standard. This is the best way to ensure functionality when registering for races in all countries. A person from Sweden can then register using their ID in Italy. It also ensures that registration pages can use the same means of verification. This will help in all race registration, especially for the championships.

Having a unified identification system is good for the entire sport, and we suggest that you use the AthleteID for your national athletes. If you already have licence numbers that you use, we can help you convert them into AthleteID. Please contact us at ranking@ocrrunner.com

The Athlete ID is in the following structure

NATYYGXXC

NAT - Represents the athlete's nationality using the IOC country code standard. These are three-letter abbreviations that identify each country.
YY - The last two digits of the athlete’s birth year. For example, if an athlete was born in 1995, this part of the ID would be "95".
G - Indicates the athlete’s gender, where odd numbers are used for men and even numbers are used for women.
XX - Represents a unique identifier for individuals who share the same birth year and gender. This helps differentiate between multiple athletes who might otherwise have the same preceding code.
C - A checksum, which is a digit used to verify the integrity of the Athlete ID. This helps ensure the ID has been typed or processed correctly, preventing errors such as misreads or number swaps.

Using our lists for qualification makes it easier for you as you do not need to compile lists of qualified athletes. We do that for you. Click here to see the page for Sweden, where the qualified athletes are clearly visible.

One of the many perks of the ranking list is to be able to use it for qualification. Having a way to compare athletes gives the ability to set the standard of the competetors beforehand.

Analysis have shown that there is a strong correlation between ranking score and championship performance. For manual handling you can use the sorting functionality on our site. It is also possible to export your national participants to a file through the nation portal.

It is important that every race organiser you add to our lists have read and understood our organisation documentation above. All the organiser need to do is submit results lists (formatted with AthleteID) to us within 5 working days of the race.

Registration site documentation package

This page is meant for sites that handle registration of OCR races. Below is information on how to make the registering process seamless and ensure that the correct information is gathered.

To be able to identify athletes in the result lists there must be a field for AthleteID in your registration process. This is very important as the organizer of the event otherwise can't use the results for the ranking list

Below is an example of how this may look on a registration page.

Image of ranking example

The link should open a new tab or window and direct the user to our registration page at https://ranking.ocrrunner.com/wp-content/themes/onecom-moments/register-participant.php

If you want access to our API, contact us at ranking@ocrrunner.com to get credentials. Below is the API documentation

API Endpoints

1. Get Participant Data

When to use: When you want to fetch data to auto-fill in your registration, or when you want to validate if the AthleteID has been inputed correctly

Endpoint: /wp-json/custom-api/v1/participant

Method: GET

Header: API-Key: YourPersonalAPIKey

Parameters: AthleteID (string) of the participant

Response: JSON object containing participant data (ID, firstname, lastname, club, birthdate and score rounded to 2 decimals) or an error message. Everything is lowercase except ID

Example response if ID exists:

{
    "ID": "SE031013",
    "firstName": "lucas",
    "lastName": "gardebrand",
    "club": "gripen ocr if",
    "birthdate": "1997-01-01",
    "score": "164.04"
}
                    

Example response if ID doesn't exist:

{
    "message": "No results found"
}
                    

2. Get All Participants Score only

When to use: When you want to seed a race and handle the lookup yourself.

Endpoint: /wp-json/custom-api/v1/participants

Method: GET

Header: API-Key: YourPersonalAPIKey

Response: JSON array of ID and Scores sorted in ascending order, or an error message.

[{
    "ID": "NED003201",
    "score": "2.06"
}, {
    "ID": "SWE000341",
    "score": "2.21"
},
....                    

3. Get All Participants

When to use: When you need all information about every athlete. Not recommended due to large data size.

Endpoint: /wp-json/custom-api/v1/participants

Method: GET

Header: API-Key: YourPersonalAPIKey

Response: JSON array of participant data (ID, firstname, lastname, club, birthdate and score rounded to 2 decimals) or an error message. Everything is lowercase except ID. Sorted by Score in acending order

[{
    "ID": "NED003201",
    "firstName": "nameOfAthlete1",
    "lastName": "nameOfAthlete1",
    "club": "-",
    "birthdate": "1900-01-01",
    "score": "2.06"
}, {
    "ID": "SWE000421",
    "firstName": "nameOfAthlete2",
    "lastName": "nameOfAthlete2",
    "club": "-",
    "birthdate": "1900-01-01",
    "score": "2.21"
},
....
                

AthleteID Breakdown

The AthleteID is composed of the following sections:

  • Section 1: The IOC code of the athlete's nationality (e.g., SWE, NED, USA, etc.).
  • Section 2: The last two digits of the athlete's birth year.
  • Section 3: Digit representing the gender, even for women, odd for men.
  • Section 4: A two-digit sequence number starting from 01.
  • Section 4: A one-digit checksum number
You can use the information above to validate that the user have inputted the right information, i.e. gender, birthyear and AthleteID

Steps to Calculate the Checksum

  • Generate a string from the first five digits of the provided AthleteID
  • Multiply each digit with 2 and 1 alternating, and sum the result.
  • Take the modulus 10 value of the sum, the result is the checksum digit.

For example, if a person has entered AthleteID SWE9703108 on your site, the checksum string to use is "97101":

1. "9" * 2 = 18     -> checkSumCalcVal = 18
2. "7" * 1 = 7      -> checkSumCalcVal = 25
3. "1" * 2 = 2      -> checkSumCalcVal = 27
4. "0" * 1 = 0      -> checkSumCalcVal = 27
5. "1" * 2 = 2      -> checkSumCalcVal = 29

The sum of each multiplication in the example above is 29. The modulus 10 value of 29 is 9. The last digit of the AthleteID should therefore be 9.

We then know that the Athlete has inputed their ID wrong.

Example Code in Python

    def calculate_checksum(checksum_string):

    checksum_calc_val = 0
    counter = 0

    # Iterate over the characters in the checksum string
    for char in checksum_string:
        current_int = int(char)
        if counter % 2 == 0:
            checksum_calc_val += 2 * current_int
        else:
            checksum_calc_val += current_int
        counter += 1

    # Calculate the checksum digit
    check_digit = checksum_calc_val % 10

    return check_digit