Import format

Flymark file format is a JSON document. It includes competition configuration which will automatically set up all relations for scrutineers and speed up their process.

Objects

You will need to use the following objects

Competition

The root object of our format is an object with competition details.

 public class CompetitionExportDto
    {
        public CompetitionExportDto()
        {
            Sections = new List<SectionDto>();
        }

        public string Name { get; set; }
        public string EnglishName { get; set; }
        public DateTime DateFrom { get; set; }
        public DateTime DateTo { get; set; }
        public string CompetitionKey { get; set; }
        public List<SectionDto> Sections { get; set; }
        public string CompetitionTypeText { get; set; }
        public string City { get; set; }
        public string Organisation { get; set; }
        public string License { get; set; }
        public string Provider { get;set; }
    }
  • CompetitionKey (Optional) - Coming from Flymark dance so leave it blank
  • CompetitionTypeText (Optional) - eg. International Ballroom Competition
  • Name (Required) - Competition name
  • EnglishName (Required) - International competition name
  • DateFrom (Required) - Date when competition starts. format 2018-10-06T00:00:00
  • DateTo (Required): Date when competition ends. format 2018-10-06T00:00:00
  • City (Required) - City name
  • Organisation (Required) - Name of an organisation
  • Provider (Required) - Specify your SYSTEM name. We store external system IDs for categories, dances, dancers, and trainers which will be used later if your system needs export.
  • Sections (Required) - List of sections. Scrutineers can import all at once or they can import section by section.

Section

    public class SectionDto
    {
        public SectionDto()
        {
            Categories = new List<CategoryProgramDto>();
        }
        public string Name { get; set; }
        public string EnglishName { get;set; }
        public int ExternalId { get; set; }
        public List<CategoryProgramDto> Categories { get; set; }
    }
  • Name (Required) - Section name, e.g. 10:00, Перше відділення, Sec
  • EnglishName (Required) - Section name translated to English. If your main language is English then please duplicate the value.
  • ExternalId (Optional) - If you wish to get it back with Flymark export
  • Categories (Required) - List of categories with their entries and dance configurations.

Category

    public enum CategoryKolo
    {
        None = 0,
        Final = 1,
        Final12 = 2,
        Final14 = 3,
        Final18 = 4,
        Final16 = 5,
        Final32 = 6,
        Final64 = 7,
        Final128 = 8,
        Final256 = 9,
    }
    
   public class CategoryRound
    {
        public DateTime StartAt { get; set; }
        [JsonConverter(typeof(StringEnumConverter))]
        public CategoryRoundType Type { get; set; }
    }
    
     public class CategoryProgramDto
    {
        public List<CategoryRound> Rounds { get; set; } = [];
        public string CategoryName { get; set; }
        public int ExternalId { get; set; }
        public string CategoryEnglishName { get; set; }
        public string ProgramName { get; set; }
        public string ProgramEnglishName { get; set; }
        public int CategoryRegistrationMode { get; set; }
        public List<DancesDto> Dances { get; set; }
        public List<List<int>> FirstRoundHeats { get; set; } = new List<List<int>>();
        public List<RegistrationDto> Registrations { get; set; } = new();
    }
  • Rounds (Optional) - Array of CategoryRound objects representing scheduled rounds for this category. Each CategoryRound contains:
    • StartAt (Required) - Date and time when the round starts (e.g., "2025-07-23T10:00:00")
    • Type (Optional) - Round type. Omit (or set to null) for non-category items like awards or ceremonies. For competition rounds, use one of: Final, Final12, Final14, Final16, Final18, Final32, Final64, Final128, Final256
  • CategoryName (Required) - Category name
  • ExternalId (Optional) - External system category ID ( Please note we don't have ExternalProgramId option because we expect ExternalId to be the link between category and program)
  • CategoryEnglishName (Required) - Translated category name
  • ProgramName (Required) - Program name ( Please note that we will create a program in our software and configure dances. This also means that the same program name can't have different dances)
  • ProgramEnglishName (Required) - Translated name
  • FirstRoundHeats (Optional) - Category heats [[123, 324, 43], [48, 50]]
  • CategoryRegistrationMode (Required) - Please use a number from the list below to identify the category type:
    • Solo = 0
    • Duo = 1,
    • Trio = 2,
    • SmallGroup = 3,
    • Formation = 4,
    • Production = 5,
    • Other = 100
  • Dances
  • Registrations

Registration

    public class RegistrationDto
    {
        public RegistrationDto()
        {
            Trainers = new List<TrainerDto>();
        }

        public int? Number { get; set; }
        public List<DancerDto> Dancers { get; set; }
        public ClubDto Club { get; set; }
        public List<TrainerDto> Trainers { get; set; }
        public string FirstName { get; set; }
        public bool IsConfirmed { get; set; }
        public string CompositionName { get; set; }
    }
  • Number (Optional) - If you have couple numbers please provide them; if not, our software will generate them
  • Dancers (Min one is required) - List of dancers in entry. Please note that at the time of writing (16/11/2018) we have a limitation that we will import a maximum of 2 dancers to our scrutineer software, but this limitation will be removed in future versions. Full support for modern dance will be provided.
  • Club (Required)
  • Trainers (Min one is required)
  • IsConfirmed (Optional) - Whether the registration is confirmed
  • CompositionName (Optional) - If your system uses composition names, include them here.

Dancer / Participant

    public class DancerDto
    {
        public int ExternalId { get; set; }
        public string LastName { get; set; }
        public string FirstName { get; set; }
        public DateTime Birthday { get; set; }
        public SexDto? Sex { get; set; }
        public string City { get; set; }
        public string Country { get; set; }
    }
  • ExternalId (Optional)
  • LastName (Required)
  • FirstName (Required)
  • Birthday (Required) - e.g. 2011-07-18T00:00:00
  • Sex (Required) - Male or Female
  • City (Required)
  • Country (Required)

Club

    public class ClubDto
    {
        public int ExternalId { get; set; }
        public string Name { get; set; }
        public string City { get; set; }
    }
  • ExternalId (Optional)
  • Name (Required)
  • City (Required)

Trainer

    public class TrainerDto
    {
        public int ExternalId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public DateTime? Birthday { get; set; }
        public string City { get; set; }
        public string Country { get; set; }
    }
  • ExternalId (Optional)
  • FirstName (Required)
  • LastName (Required)
  • Birthday (Optional)
  • City (Required)
  • Country (Required)

Dance

    public class DancesDto
    {
        public int ExternalId { get; set; }
        public string Name { get; set; }
        public string EnglishName { get; set; }
        public string Abbreviation { get; set; }
        public int Number { get; set; }
    }
  • ExternalId (Optional)
  • Name (Required)
  • EnglishName (Required)
  • Abbreviation (Required)
  • Number (Required) - We use this number to determine sort order

Example of competition.exp

{
  "Name": "Golden Step",
  "EnglishName": "Golden Step",
  "DateFrom": "2018-10-06T00:00:00",
  "DateTo": "2018-10-06T00:00:00",
  "Provider": "FlymarkDance",
  "RegistrationEndDate": "2018-10-04T00:00:00",
  "Sections": [
    {
      "Name": "09:30",
      "ExternalId": 2567,
      "Categories": [
        {
          "Rounds": [
            {
              "StartAt": "2025-09-29T10:00:00",
              "Type": "Final12"
            },
            {
              "StartAt": "2025-09-29T11:00:00",
              "Type": "Final"
            }
          ],
          "FirstRoundHeats": [
            [
              99,
              65,
              34
            ],
            [
              30,
              19,
              14
            ]
          ],
          "CategoryName": "Діти Соло Дебют",
          "ExternalId": 29158,
          "CategoryEnglishName": "Children Solo Debut",
          "ProgramName": "W-C",
          "ProgramEnglishName": "W-C",
          "CategoryRegistrationMode": 0,
          "Dances": [
            {
              "ExternalId": 6854,
              "Name": "Повільний вальс",
              "EnglishName": "Slow Waltz",
              "Abbreviation": "W",
              "Number": 1
            },
            {
              "ExternalId": 6855,
              "Name": "Ча-ча-ча",
              "EnglishName": "Cha-cha-cha",
              "Abbreviation": "C",
              "Number": 6
            }
          ],
          "Registrations": [
            {
              "Number": 25,
              "Dancers": [
                {
                  "ExternalId": 81394,
                  "LastName": "Прізвище",
                  "FirstName": "Імя",
                  "Birthday": "2011-07-18T00:00:00",
                  "Sex": 1,
                  "City": "Київ",
                  "Country": "Україна"
                }
              ],
              "Club": {
                "Name": "Ask dance",
                "City": "Київ"
              },
              "Trainers": [
                {
                  "ExternalId": 1552,
                  "FirstName": "Імя",
                  "LastName": "Тренера",
                  "Birthday": null,
                  "City": "Київ",
                  "Country": "Україна"
                }
              ],
              "FirstName": null,
              "IsConfirmed": true,
              "CompositionName": null
            }
          ]
        }
      ]
    },
    {
      "Name": "16:00",
      "ExternalId": 2569,
      "Categories": [
        {
          "CategoryName": "Дорослі Open",
          "CategoryId": 29180,
          "CategoryEnglishName": "Adult Open",
          "ProgramName": "ST",
          "ProgramEnglishName": "ST",
          "CategoryRegistrationMode": 1,
          "Dances": [
            {
              "ExternalId": 6854,
              "Name": "Повільний вальс",
              "EnglishName": "Slow Waltz",
              "Abbreviation": "W",
              "Number": 1
            },
            {
              "ExternalId": 6857,
              "Name": "Квікстеп",
              "EnglishName": "Quickstep",
              "Abbreviation": "Q",
              "Number": 5
            },
            {
              "ExternalId": 6858,
              "Name": "Танго",
              "EnglishName": "Tango",
              "Abbreviation": "T",
              "Number": 2
            },
            {
              "ExternalId": 6859,
              "Name": "Віденський вальс",
              "EnglishName": "V. Waltz",
              "Abbreviation": "VW",
              "Number": 3
            },
            {
              "ExternalId": 6860,
              "Name": "Фокстрот",
              "EnglishName": "Foxtrot",
              "Abbreviation": "F",
              "Number": 4
            }
          ],
          "Registrations": [
            {
              "Number": 289,
              "Dancers": [
                {
                  "ExternalId": 105223,
                  "LastName": "Lastname",
                  "FirstName": "Firstname",
                  "Birthday": "1996-03-28T00:00:00",
                  "Sex": 0,
                  "City": "Kyiv",
                  "Country": "Ukraine"
                },
                {
                  "ExternalId": 91832,
                  "LastName": "Lastname",
                  "FirstName": "FirstName",
                  "Birthday": "2000-04-10T00:00:00",
                  "Sex": 1,
                  "City": "Kyiv",
                  "Country": "Ukraine"
                }
              ],
              "Club": {
                "Name": "Tango",
                "City": "Minsk"
              },
              "Trainers": [
                {
                  "ExternalId": 11128,
                  "FirstName": "FirstName",
                  "LastName": "LastName",
                  "Birthday": null,
                  "City": "Lviv",
                  "Country": "Ukraine"
                }
              ],
              "FirstName": null,
              "IsConfirmed": true,
              "CompositionName": null
            }
          ]
        }
      ]
    }
  ],
  "CompetitionTypeText": "International Dance Festival",
  "City": "Київ",
  "Organisation": "---"
}