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
CategoryRoundobjects representing scheduled rounds for this category. EachCategoryRoundcontains:StartAt(Required) - Date and time when the round starts (e.g.,"2025-07-23T10:00:00")Type(Optional) - Round type. Omit (or set tonull) 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) -
MaleorFemale - 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": "---"
}