swagger

package
v1.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 17, 2025 License: MIT Imports: 0 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ArchDataResponse

type ArchDataResponse struct {
	NationalID   string                    `json:"national_id" example:"27353728"`
	FirstName    *string                   `json:"first_name,omitempty" example:"Jane"`
	LastName     *string                   `json:"last_name,omitempty" example:"Doe"`
	Initials     *string                   `json:"initials,omitempty" example:"JD"`
	DateOfBirth  *string                   `json:"date_of_birth,omitempty" example:"1995-07-21"`
	Height       *float64                  `json:"height,omitempty" example:"1.72"`
	Weight       *float64                  `json:"weight,omitempty" example:"65.4"`
	Measurements []ArchMeasurementResponse `json:"measurements"`
}

type ArchDataUpsertRequest

type ArchDataUpsertRequest struct {
	NationalID   string                  `json:"national_id" example:"27353728"`
	FirstName    *string                 `json:"first_name,omitempty" example:"Jane"`
	LastName     *string                 `json:"last_name,omitempty" example:"Doe"`
	Initials     *string                 `json:"initials,omitempty" example:"JD"`
	DateOfBirth  *string                 `json:"date_of_birth,omitempty" example:"1995-07-21"`
	Height       *float64                `json:"height,omitempty" example:"1.72"`
	Weight       *float64                `json:"weight,omitempty" example:"65.4"`
	Measurements []ArchMeasurementUpsert `json:"measurements,omitempty"`
}

type ArchMeasurementResponse

type ArchMeasurementResponse struct {
	MeasurementGroupID int32   `json:"measurement_group_id" example:"2024010101"`
	MeasurementID      *int32  `json:"measurement_id,omitempty" example:"42"`
	Discipline         *string `json:"discipline,omitempty" example:"Sprint 100m"`
	SessionName        *string `json:"session_name,omitempty" example:"Morning session"`
	Place              *string `json:"place,omitempty" example:"Helsinki"`
	RaceID             *int32  `json:"race_id,omitempty" example:"123"`
	StartTime          *string `json:"start_time,omitempty" example:"2024-01-01T09:00:00Z"`
	StopTime           *string `json:"stop_time,omitempty" example:"2024-01-01T09:15:00Z"`
	NbSegments         *int32  `json:"nb_segments,omitempty" example:"5"`
	Comment            *string `json:"comment,omitempty" example:"Felt strong today."`
}

type ArchMeasurementUpsert

type ArchMeasurementUpsert struct {
	MeasurementGroupID int32   `json:"measurement_group_id" example:"2024010101"`
	MeasurementID      int32   `json:"measurement_id" example:"42"`
	Discipline         *string `json:"discipline,omitempty" example:"Sprint 100m"`
	SessionName        *string `json:"session_name,omitempty" example:"Morning session"`
	Place              *string `json:"place,omitempty" example:"Helsinki"`
	RaceID             *int32  `json:"race_id,omitempty" example:"123"`
	StartTime          *string `json:"start_time,omitempty" example:"2024-01-01T09:00:00Z"`
	StopTime           *string `json:"stop_time,omitempty" example:"2024-01-01T09:15:00Z"`
	NbSegments         *int32  `json:"nb_segments,omitempty" example:"5"`
	Comment            *string `json:"comment,omitempty" example:"Felt strong today."`
}

type ArchRaceReportUpsertRequest

type ArchRaceReportUpsertRequest struct {
	SporttiID  string `json:"sportti_id" example:"27578816"`
	SessionID  int32  `json:"session_id" example:"1842"`
	RaceReport string `json:"race_report" example:"<!DOCTYPE html><html><head><title>Race</title></head><body><h1>Report</h1></body></html>"`
}

type ArchinisisStatusResponse

type ArchinisisStatusResponse struct {
	Connected bool `json:"connected" example:"true"`
}

type ArchinisisTokenDetails

type ArchinisisTokenDetails struct {
	SportID      int    `json:"sport_id" example:"51678043"`
	SuomisportID string `json:"suomisport_id" example:"138538"`
}

type ArchinisisTokenInput

type ArchinisisTokenInput struct {
	UserID  string                 `json:"user_id" example:"208e2ffb-ac68-4980-a8b6-b7e0136e4172"`
	Details ArchinisisTokenDetails `json:"details"`
}

type CoachtechData

type CoachtechData struct {
	Example  string `json:"example" example:"example_data"`
	Example1 string `json:"example1" example:"example_data_1"`
	Example2 string `json:"example2" example:"example_data_2"`
	Example3 string `json:"example3" example:"example_data_3"`
	Example4 string `json:"example4" example:"example_data_4"`
}

type CoachtechInsertInput

type CoachtechInsertInput struct {
	UserID      string        `json:"user_id" example:"1c2f6ad2-dc8c-4c44-85e2-381d70b093ef"`
	CoachtechID int32         `json:"coachtech_id" example:"123"`
	SummaryDate string        `json:"summary_date" example:"2025-07-14"`
	TestID      string        `json:"test_id" example:"endurance_test_1"`
	Data        CoachtechData `json:"data"`
}

type CoachtechStatusResponse

type CoachtechStatusResponse struct {
	Data bool `json:"data" example:"true"`
}

type ConflictError

type ConflictError struct {
	Error1 string `json:"error" example:"record already exists"`
}

type ConflictResponse

type ConflictResponse struct {
	Errors []ConflictError `json:"errors"`
}

409 - Tietoevry

type DailyActivity

type DailyActivity struct {
	Day           string `json:"day" example:"2023-12-01"`
	Steps         int    `json:"steps" example:"6653"`
	TotalCalories int    `json:"total_calories" example:"4272"`
	SedentaryTime int    `json:"sedentary_time" example:"27480"`
}

type DatesResponse

type DatesResponse struct {
	Dates []string `json:"dates" example:"2024-02-25,2024-02-26,2024-03-25"`
}

Oura

type DeviceData

type DeviceData struct {
	Sleep []SleepSample `json:"sleep"`
}

type DeviceInfoConnectedNoData

type DeviceInfoConnectedNoData struct {
	Connected  bool `json:"connected" example:"true"`
	DataExists bool `json:"data_exists" example:"false"`
}

type DeviceInfoConnectedWithData

type DeviceInfoConnectedWithData struct {
	Connected  bool `json:"connected" example:"true"`
	DataExists bool `json:"data_exists" example:"true"`
}

type DeviceInfoNotConnectedNoData

type DeviceInfoNotConnectedNoData struct {
	Connected  bool `json:"connected" example:"false"`
	DataExists bool `json:"data_exists" example:"false"`
}

type DeviceStatusResponse

type DeviceStatusResponse struct {
	Garmin DeviceInfoConnectedWithData  `json:"garmin"`
	Oura   DeviceInfoConnectedNoData    `json:"oura"`
	Polar  DeviceInfoNotConnectedNoData `json:"polar"`
	Suunto DeviceInfoConnectedWithData  `json:"suunto"`
}

type FISAthlete

type FISAthlete struct {
	Fiscode   *int32  `json:"fiscode,omitempty" example:"342001"`
	Sporttiid *int32  `json:"sporttiid,omitempty" example:"123456"`
	Firstname *string `json:"firstname,omitempty" example:"Iivo"`
	Lastname  *string `json:"lastname,omitempty" example:"Niskanen"`
}

type FISAthleteItem

type FISAthleteItem struct {
	Firstname *string `json:"firstname,omitempty" example:"Iivo"`
	Lastname  *string `json:"lastname,omitempty" example:"Niskanen"`
	Fiscode   *int32  `json:"fiscode,omitempty" example:"342001"`
}

type FISAthleteResultCC

type FISAthleteResultCC struct {
	Recid          int32   `json:"recid" example:"12345"`
	Raceid         *int32  `json:"raceid,omitempty" example:"98765"`
	Position       *string `json:"position,omitempty" example:"1.00000"`
	Timetot        *string `json:"timetot,omitempty" example:"26:30.2"`
	Competitorid   *int32  `json:"competitorid,omitempty" example:"11111"`
	Racedate       *string `json:"racedate,omitempty" example:"2025-02-15"`
	Seasoncode     *int32  `json:"seasoncode,omitempty" example:"2025"`
	Disciplinecode *string `json:"disciplinecode,omitempty" example:"DSPR"`
	Catcode        *string `json:"catcode,omitempty" example:"WC"`
	Place          *string `json:"place,omitempty" example:"Oslo"`
}

type FISAthleteResultJP

type FISAthleteResultJP struct {
	Raceid         *int32  `json:"raceid,omitempty" example:"234567"`
	Position       *int32  `json:"position,omitempty" example:"1"`
	Racedate       *string `json:"racedate,omitempty" example:"2025-01-25"`
	Seasoncode     *int32  `json:"seasoncode,omitempty" example:"2025"`
	Disciplinecode *string `json:"disciplinecode,omitempty" example:"LH"`
	Catcode        *string `json:"catcode,omitempty" example:"WC"`
	Place          *string `json:"place,omitempty" example:"Planica"`

	Posr1     *string `json:"posr1,omitempty" example:"1"`
	Speedr1   *string `json:"speedr1,omitempty" example:"88.5"`
	Distr1    *string `json:"distr1,omitempty" example:"138.0"`
	Judptsr1  *string `json:"judptsr1,omitempty" example:"57.0"`
	Windr1    *string `json:"windr1,omitempty" example:"-0.5"`
	Windptsr1 *string `json:"windptsr1,omitempty" example:"1.2"`
	Gater1    *string `json:"gater1,omitempty" example:"8"`

	Posr2     *string `json:"posr2,omitempty" example:"1"`
	Speedr2   *string `json:"speedr2,omitempty" example:"88.0"`
	Distr2    *string `json:"distr2,omitempty" example:"137.0"`
	Judptsr2  *string `json:"judptsr2,omitempty" example:"56.5"`
	Windr2    *string `json:"windr2,omitempty" example:"-0.3"`
	Windptsr2 *string `json:"windptsr2,omitempty" example:"0.8"`
	Gater2    *string `json:"gater2,omitempty" example:"8"`

	Totrun1 *string `json:"totrun1,omitempty" example:"135.5"`
	Totrun2 *string `json:"totrun2,omitempty" example:"134.4"`
}

type FISAthleteResultNK

type FISAthleteResultNK struct {
	Recid          int32   `json:"recid" example:"70001"`
	Raceid         *int32  `json:"raceid,omitempty" example:"8801"`
	Position       *int32  `json:"position,omitempty" example:"1"`
	Racedate       *string `json:"racedate,omitempty" example:"2025-02-15"`
	Seasoncode     *int32  `json:"seasoncode,omitempty" example:"2025"`
	Distance       *string `json:"distance,omitempty" example:"10km"`
	Hill           *int32  `json:"hill,omitempty" example:"109"`
	Disciplinecode *string `json:"disciplinecode,omitempty" example:"NC"`
	Catcode        *string `json:"catcode,omitempty" example:"WC"`
	Place          *string `json:"place,omitempty" example:"Seefeld"`

	Posr1     *string `json:"posr1,omitempty" example:"1"`
	Speedr1   *string `json:"speedr1,omitempty" example:"89.5"`
	Distr1    *string `json:"distr1,omitempty" example:"135.0"`
	Judptsr1  *string `json:"judptsr1,omitempty" example:"56.0"`
	Windr1    *string `json:"windr1,omitempty" example:"-0.8"`
	Windptsr1 *string `json:"windptsr1,omitempty" example:"2.5"`
	Gater1    *string `json:"gater1,omitempty" example:"10"`
	Totrun1   *string `json:"totrun1,omitempty" example:"134.0"`

	Poscc      *string `json:"poscc,omitempty" example:"2"`
	Timetot    *string `json:"timetot,omitempty" example:"00:24:10.2"`
	Timetotint *int32  `json:"timetotint,omitempty" example:"1450"`
	Pointsjump *string `json:"pointsjump,omitempty" example:"135.0"`
}

type FISAthleteResultsCCResponse

type FISAthleteResultsCCResponse struct {
	Results []FISAthleteResultCC `json:"results"`
}

type FISAthleteResultsJPResponse

type FISAthleteResultsJPResponse struct {
	Results []FISAthleteResultJP `json:"results"`
}

type FISAthleteResultsNKResponse

type FISAthleteResultsNKResponse struct {
	Results []FISAthleteResultNK `json:"results"`
}

type FISAthletesResponse

type FISAthletesResponse struct {
	Athletes []FISAthleteItem `json:"athletes"`
}

type FISCategoriesCCResponse

type FISCategoriesCCResponse struct {
	Categories []string `json:"categories" swaggertype:"array,string" example:"WC,WSC,COC"`
}

type FISCategoriesJPResponse

type FISCategoriesJPResponse struct {
	Categories []string `json:"categories" swaggertype:"array,string" example:"WC,COC,WSC"`
}

type FISCategoriesNKResponse

type FISCategoriesNKResponse struct {
	Categories []string `json:"categories" swaggertype:"array,string" example:"WC,WSC,COC"`
}

type FISCompetitor

type FISCompetitor struct {
	Competitorid   *int32  `json:"competitorid,omitempty" example:"123456"`
	Personid       *int32  `json:"personid,omitempty" example:"98765"`
	Ipcid          *int32  `json:"ipcid,omitempty" example:"0"`
	Type           *string `json:"type,omitempty" example:"ATHLETE"`
	Sectorcode     *string `json:"sectorcode,omitempty" example:"CC"`
	Fiscode        *int32  `json:"fiscode,omitempty" example:"342001"`
	Lastname       *string `json:"lastname,omitempty" example:"Niskanen"`
	Firstname      *string `json:"firstname,omitempty" example:"Iivo"`
	Gender         *string `json:"gender,omitempty" example:"M"`
	Birthdate      *string `json:"birthdate,omitempty" example:"1992-01-12"`
	StatusDate     *string `json:"status_date,omitempty" example:"2025-10-27T08:30:00Z"`
	Dateofcreation *string `json:"dateofcreation,omitempty" example:"2025-10-20"`
	Lastupdate     *string `json:"lastupdate,omitempty" example:"2025-10-27T08:30:00Z"`
	Nationcode     *string `json:"nationcode,omitempty" example:"FIN"`
	Nationalcode   *string `json:"nationalcode,omitempty" example:"246"`
	Skiclub        *string `json:"skiclub,omitempty" example:"Ounasvaara Hiihtoseura"`
	Association    *string `json:"association,omitempty" example:"FIN"`
	Status         *string `json:"status,omitempty" example:"ACTIVE"`
}

type FISCompetitorFull

type FISCompetitorFull struct {
	Competitorid int32   `json:"competitorid" example:"123456"`
	Personid     *int32  `json:"personid,omitempty" example:"98765"`
	Ipcid        *int32  `json:"ipcid,omitempty" example:"0"`
	Type         *string `json:"type,omitempty" example:"ATH"`
	Sectorcode   *string `json:"sectorcode,omitempty" example:"CC"`
	Fiscode      *int32  `json:"fiscode,omitempty" example:"342001"`
	Lastname     *string `json:"lastname,omitempty" example:"Niskanen"`
	Firstname    *string `json:"firstname,omitempty" example:"Iivo"`
	Gender       *string `json:"gender,omitempty" example:"M"`
	Birthdate    *string `json:"birthdate,omitempty" example:"1992-01-12"` // YYYY-MM-DD

	Nationcode   *string `json:"nationcode,omitempty" example:"FIN"`
	Nationalcode *string `json:"nationalcode,omitempty" example:"FIN"`
	Skiclub      *string `json:"skiclub,omitempty" example:"Lahti Ski Club"`
	Association  *string `json:"association,omitempty" example:"Finnish Ski Association"`

	Status             *string `json:"status,omitempty" example:"ACTIVE"`
	StatusOld          *string `json:"status_old,omitempty"`
	StatusBy           *string `json:"status_by,omitempty" example:"FIS"`
	StatusDate         *string `json:"status_date,omitempty" example:"2024-05-01T00:00:00Z"`
	Statusnextlist     *string `json:"statusnextlist,omitempty"`
	Alternatenamecheck *string `json:"alternatenamecheck,omitempty"`

	Fee            *float64 `json:"fee,omitempty" example:"0"`
	Dateofcreation *string  `json:"dateofcreation,omitempty" example:"2010-11-05"`
	Createdby      *string  `json:"createdby,omitempty" example:"admin"`

	Injury      *int32 `json:"injury,omitempty" example:"0"`
	Version     *int32 `json:"version,omitempty" example:"1"`
	Compidmssql *int32 `json:"compidmssql,omitempty"`
	Carving     *int32 `json:"carving,omitempty"`
	Photo       *int32 `json:"photo,omitempty"`
	Notallowed  *int32 `json:"notallowed,omitempty"`

	Natteam   *string `json:"natteam,omitempty" example:"FIN-A"`
	Tragroup  *string `json:"tragroup,omitempty"`
	Published *int32  `json:"published,omitempty" example:"1"`
	Doped     *string `json:"doped,omitempty"`
	Team      *int32  `json:"team,omitempty"`

	PhotoBig     *int32  `json:"photo_big,omitempty"`
	Data         *string `json:"data,omitempty"`
	Lastupdateby *string `json:"lastupdateby,omitempty"`
	Disciplines  *string `json:"disciplines,omitempty"`
	Lastupdate   *string `json:"lastupdate,omitempty" example:"2024-10-01T12:34:56Z"`
	Deletedat    *string `json:"deletedat,omitempty"`

	Categorycode *string `json:"categorycode,omitempty"`
	Classname    *string `json:"classname,omitempty"`
	Classcode    *string `json:"classcode,omitempty"`
}

FISCompetitorFull represents a full competitor record as exposed by the API.

type FISCompetitorNationCountItem

type FISCompetitorNationCountItem struct {
	Nationcode  string `json:"nationcode" example:"FIN"`
	Competitors int64  `json:"competitors" example:"123"`
}

type FISCompetitorNationCountsResponse

type FISCompetitorNationCountsResponse struct {
	Sectorcode *string                        `json:"sectorcode,omitempty" example:"CC"`
	Gender     *string                        `json:"gender,omitempty" example:"M"`
	Agemin     *int32                         `json:"agemin,omitempty" example:"18"`
	Agemax     *int32                         `json:"agemax,omitempty" example:"35"`
	Nations    []FISCompetitorNationCountItem `json:"nations"`
}

type FISCompetitorSearchResponse

type FISCompetitorSearchResponse struct {
	Competitor FISCompetitorFull `json:"competitors"`
}

type FISCompetitorSeasonCatcodeItem

type FISCompetitorSeasonCatcodeItem struct {
	Seasoncode int32   `json:"seasoncode" example:"2025"`
	Catcode    *string `json:"catcode,omitempty" example:"WC"`
}

type FISCompetitorSeasonsCatcodesResponse

type FISCompetitorSeasonsCatcodesResponse struct {
	Competitorid int32                            `json:"competitorid" example:"123456"`
	Sector       string                           `json:"sector" example:"CC"`
	Items        []FISCompetitorSeasonCatcodeItem `json:"items"`
}

type FISDisciplinesCCResponse

type FISDisciplinesCCResponse struct {
	Disciplines []string `json:"disciplines" swaggertype:"array,string" example:"SP,DI,PU"`
}

type FISDisciplinesJPResponse

type FISDisciplinesJPResponse struct {
	Disciplines []string `json:"disciplines" swaggertype:"array,string" example:"NH,LH,FH"`
}

type FISDisciplinesNKResponse

type FISDisciplinesNKResponse struct {
	Disciplines []string `json:"disciplines" swaggertype:"array,string" example:"NH,LH,GH"`
}

type FISInsertAthleteExample

type FISInsertAthleteExample struct {
	Fiscode   int32   `json:"fiscode" example:"342001"`
	Sporttiid *int32  `json:"sporttiid,omitempty" example:"123456"`
	Firstname *string `json:"firstname,omitempty" example:"Iivo"`
	Lastname  *string `json:"lastname,omitempty" example:"Niskanen"`
}

type FISInsertCompetitorExample

type FISInsertCompetitorExample struct {
	Competitorid       int32   `json:"competitorid" example:"123456"`
	Personid           *int32  `json:"personid,omitempty" example:"98765"`
	Ipcid              *int32  `json:"ipcid,omitempty" example:"0"`
	Fiscode            *int32  `json:"fiscode,omitempty" example:"342001"`
	Birthdate          *string `json:"birthdate,omitempty" example:"1992-01-12"`             // YYYY-MM-DD
	StatusDate         *string `json:"status_date,omitempty" example:"2025-10-27T08:30:00Z"` // RFC3339
	Fee                *string `json:"fee,omitempty" example:"10.00000"`
	Dateofcreation     *string `json:"dateofcreation,omitempty" example:"2025-10-20"` // YYYY-MM-DD
	Injury             *int32  `json:"injury,omitempty" example:"0"`
	Version            *int32  `json:"version,omitempty" example:"1"`
	Compidmssql        *int32  `json:"compidmssql,omitempty" example:"0"`
	Carving            *int32  `json:"carving,omitempty" example:"0"`
	Photo              *int32  `json:"photo,omitempty" example:"0"`
	Notallowed         *int32  `json:"notallowed,omitempty" example:"0"`
	Published          *int32  `json:"published,omitempty" example:"1"`
	Team               *int32  `json:"team,omitempty" example:"0"`
	PhotoBig           *int32  `json:"photo_big,omitempty" example:"0"`
	Lastupdate         *string `json:"lastupdate,omitempty" example:"2025-10-27T08:30:00Z"` // RFC3339
	Statusnextlist     *string `json:"statusnextlist,omitempty" example:"A"`
	Alternatenamecheck *string `json:"alternatenamecheck,omitempty" example:"OK"`
	Deletedat          *string `json:"deletedat,omitempty" example:""`
	Doped              *string `json:"doped,omitempty" example:"NO"`
	Createdby          *string `json:"createdby,omitempty" example:"admin@fis.int"`
	Categorycode       *string `json:"categorycode,omitempty" example:"SEN"`
	Classname          *string `json:"classname,omitempty" example:"Senior"`
	Data               *string `json:"data,omitempty" example:"{}"`
	Lastupdateby       *string `json:"lastupdateby,omitempty" example:"system"`
	Disciplines        *string `json:"disciplines,omitempty" example:"DISTANCE,SPRINT"`
	Type               *string `json:"type,omitempty" example:"ATHLETE"`
	Sectorcode         *string `json:"sectorcode,omitempty" example:"CC"` // JP/NK/CC
	Classcode          *string `json:"classcode,omitempty" example:"A"`
	Lastname           *string `json:"lastname,omitempty" example:"Niskanen"`
	Firstname          *string `json:"firstname,omitempty" example:"Iivo"`
	Gender             *string `json:"gender,omitempty" example:"M"`
	Natteam            *string `json:"natteam,omitempty" example:"FIN-A"`
	Nationcode         *string `json:"nationcode,omitempty" example:"FIN"`
	Nationalcode       *string `json:"nationalcode,omitempty" example:"246"`
	Skiclub            *string `json:"skiclub,omitempty" example:"Ounasvaara Hiihtoseura"`
	Association        *string `json:"association,omitempty" example:"FIN"`
	Status             *string `json:"status,omitempty" example:"ACTIVE"`
	StatusOld          *string `json:"status_old,omitempty" example:""`
	StatusBy           *string `json:"status_by,omitempty" example:"FIS"`
	Tragroup           *string `json:"tragroup,omitempty" example:"A"`
}

type FISInsertRaceCCExample

type FISInsertRaceCCExample struct {
	Raceid            int32   `json:"raceid" validate:"required" example:"123456"`
	Eventid           *int32  `json:"eventid,omitempty" example:"7890"`
	Seasoncode        *int32  `json:"seasoncode,omitempty" example:"2025"`
	Racecodex         *int32  `json:"racecodex,omitempty" example:"1001"`
	Disciplineid      *string `json:"disciplineid,omitempty" example:"DIST"`
	Disciplinecode    *string `json:"disciplinecode,omitempty" example:"SP"`
	Catcode           *string `json:"catcode,omitempty" example:"WC"`
	Catcode2          *string `json:"catcode2,omitempty"`
	Catcode3          *string `json:"catcode3,omitempty"`
	Catcode4          *string `json:"catcode4,omitempty"`
	Gender            *string `json:"gender,omitempty" example:"M"`
	Racedate          *string `json:"racedate,omitempty" format:"date" example:"2025-02-14"`
	Starteventdate    *string `json:"starteventdate,omitempty" format:"date" example:"2025-02-13"`
	Description       *string `json:"description,omitempty" example:"World Cup Sprint"`
	Place             *string `json:"place,omitempty" example:"Lahti"`
	Nationcode        *string `json:"nationcode,omitempty" example:"FIN"`
	Receiveddate      *string `json:"receiveddate,omitempty" format:"date-time"`
	Validdate         *string `json:"validdate,omitempty" format:"date-time"`
	Td1id             *int32  `json:"td1id,omitempty"`
	Td1name           *string `json:"td1name,omitempty"`
	Td1nation         *string `json:"td1nation,omitempty"`
	Td1code           *int32  `json:"td1code,omitempty"`
	Td2id             *int32  `json:"td2id,omitempty"`
	Td2name           *string `json:"td2name,omitempty"`
	Td2nation         *string `json:"td2nation,omitempty"`
	Td2code           *int32  `json:"td2code,omitempty"`
	Calstatuscode     *string `json:"calstatuscode,omitempty"`
	Procstatuscode    *string `json:"procstatuscode,omitempty"`
	Displaystatus     *string `json:"displaystatus,omitempty"`
	Fisinterncomment  *string `json:"fisinterncomment,omitempty"`
	Webcomment        *string `json:"webcomment,omitempty"`
	Pursuit           *string `json:"pursuit,omitempty"`
	Masse             *string `json:"masse,omitempty"`
	Relay             *string `json:"relay,omitempty"`
	Distance          *string `json:"distance,omitempty"`
	Hill              *string `json:"hill,omitempty"`
	Style             *string `json:"style,omitempty"`
	Qualif            *string `json:"qualif,omitempty"`
	Finale            *string `json:"finale,omitempty"`
	Homol             *string `json:"homol,omitempty"`
	Published         *int32  `json:"published,omitempty" example:"1"`
	Validforfispoints *int32  `json:"validforfispoints,omitempty" example:"1"`
	Usedfislist       *string `json:"usedfislist,omitempty"`
	Tolist            *string `json:"tolist,omitempty"`
	Discforlistcode   *string `json:"discforlistcode,omitempty"`
	Calculatedpenalty *string `json:"calculatedpenalty,omitempty"`
	Appliedpenalty    *string `json:"appliedpenalty,omitempty"`
	Appliedscala      *string `json:"appliedscala,omitempty"`
	Penscafixed       *string `json:"penscafixed,omitempty"`
	Version           *int32  `json:"version,omitempty"`
	Nationraceid      *int32  `json:"nationraceid,omitempty"`
	Provraceid        *int32  `json:"provraceid,omitempty"`
	Msql7evid         *int32  `json:"msql7evid,omitempty"`
	Mssql7id          *int32  `json:"mssql7id,omitempty"`
	Topbanner         *string `json:"topbanner,omitempty"`
	Bottombanner      *string `json:"bottombanner,omitempty"`
	Gallery           *string `json:"gallery,omitempty"`
	Indi              *int32  `json:"indi,omitempty"`
	Team              *int32  `json:"team,omitempty"`
	Tabcount          *int32  `json:"tabcount,omitempty"`
	Columncount       *int32  `json:"columncount,omitempty"`
	Level             *string `json:"level,omitempty"`
	Hloc1             *string `json:"hloc1,omitempty"`
	Hloc2             *string `json:"hloc2,omitempty"`
	Hloc3             *string `json:"hloc3,omitempty"`
	Hcet1             *string `json:"hcet1,omitempty"`
	Hcet2             *string `json:"hcet2,omitempty"`
	Hcet3             *string `json:"hcet3,omitempty"`
	Live              *int32  `json:"live,omitempty"`
	Livestatus1       *string `json:"livestatus1,omitempty"`
	Livestatus2       *string `json:"livestatus2,omitempty"`
	Livestatus3       *string `json:"livestatus3,omitempty"`
	Liveinfo1         *string `json:"liveinfo1,omitempty"`
	Liveinfo2         *string `json:"liveinfo2,omitempty"`
	Liveinfo3         *string `json:"liveinfo3,omitempty"`
	Passwd            *string `json:"passwd,omitempty"`
	Results           *int32  `json:"results,omitempty"`
	Pdf               *int32  `json:"pdf,omitempty"`
	Noepr             *int32  `json:"noepr,omitempty"`
	Tddoc             *int32  `json:"tddoc,omitempty"`
	Timingreport      *int32  `json:"timingreport,omitempty"`
	SpecialCupPoints  *int32  `json:"special_cup_points,omitempty"`
	SkipWcsl          *int32  `json:"skip_wcsl,omitempty"`
	Validforowg       *int32  `json:"validforowg,omitempty"`
	Lastupdate        *string `json:"lastupdate,omitempty" format:"date-time" example:"2025-02-14T18:30:00Z"`
}

type FISInsertRaceJPExample

type FISInsertRaceJPExample struct {
	Raceid            int32   `json:"raceid" validate:"required" example:"234567"`
	Eventid           *int32  `json:"eventid,omitempty" example:"8901"`
	Seasoncode        *int32  `json:"seasoncode,omitempty" example:"2025"`
	Racecodex         *int32  `json:"racecodex,omitempty" example:"2001"`
	Disciplineid      *string `json:"disciplineid,omitempty" example:"HS140"`
	Disciplinecode    *string `json:"disciplinecode,omitempty" example:"LH"`
	Catcode           *string `json:"catcode,omitempty" example:"WC"`
	Catcode2          *string `json:"catcode2,omitempty"`
	Catcode3          *string `json:"catcode3,omitempty"`
	Catcode4          *string `json:"catcode4,omitempty"`
	Gender            *string `json:"gender,omitempty" example:"M"`
	Racedate          *string `json:"racedate,omitempty" format:"date" example:"2025-01-25"`
	Starteventdate    *string `json:"starteventdate,omitempty" format:"date" example:"2025-01-24"`
	Description       *string `json:"description,omitempty" example:"World Cup HS140 Individual"`
	Place             *string `json:"place,omitempty" example:"Planica"`
	Nationcode        *string `json:"nationcode,omitempty" example:"SLO"`
	Receiveddate      *string `json:"receiveddate,omitempty" format:"date-time" example:"2025-01-20T10:00:00Z"`
	Td1id             *int32  `json:"td1id,omitempty"`
	Td1name           *string `json:"td1name,omitempty" example:"John Doe"`
	Td1nation         *string `json:"td1nation,omitempty" example:"AUT"`
	Td1code           *int32  `json:"td1code,omitempty" example:"101"`
	Td2id             *int32  `json:"td2id,omitempty"`
	Td2name           *string `json:"td2name,omitempty" example:"Jane Doe"`
	Td2nation         *string `json:"td2nation,omitempty" example:"GER"`
	Td2code           *int32  `json:"td2code,omitempty" example:"102"`
	Calstatuscode     *string `json:"calstatuscode,omitempty" example:"OFF"`
	Procstatuscode    *string `json:"procstatuscode,omitempty" example:"P"`
	Pursuit           *string `json:"pursuit,omitempty"`
	Masse             *string `json:"masse,omitempty"`
	Relay             *string `json:"relay,omitempty"`
	Distance          *string `json:"distance,omitempty"`
	Hill              *int32  `json:"hill,omitempty" example:"140"`
	Style             *string `json:"style,omitempty" example:"CLASSIC"`
	Qualif            *string `json:"qualif,omitempty" example:"Q"`
	Finale            *string `json:"finale,omitempty"`
	Homol             *string `json:"homol,omitempty"`
	Webcomment        *string `json:"webcomment,omitempty"`
	Displaystatus     *string `json:"displaystatus,omitempty" example:"OK"`
	Fisinterncomment  *string `json:"fisinterncomment,omitempty"`
	Published         *int32  `json:"published,omitempty" example:"1"`
	Validforfispoints *int32  `json:"validforfispoints,omitempty" example:"1"`
	Usedfislist       *string `json:"usedfislist,omitempty"`
	Tolist            *string `json:"tolist,omitempty"`
	Discforlistcode   *string `json:"discforlistcode,omitempty"`
	Calculatedpenalty *string `json:"calculatedpenalty,omitempty"`
	Appliedpenalty    *string `json:"appliedpenalty,omitempty"`
	Appliedscala      *string `json:"appliedscala,omitempty"`
	Penscafixed       *string `json:"penscafixed,omitempty"`
	Version           *int32  `json:"version,omitempty" example:"1"`
	Nationraceid      *int32  `json:"nationraceid,omitempty"`
	Provraceid        *int32  `json:"provraceid,omitempty"`
	Msql7evid         *int32  `json:"msql7evid,omitempty"`
	Mssql7id          *int32  `json:"mssql7id,omitempty"`
	Topbanner         *string `json:"topbanner,omitempty"`
	Bottombanner      *string `json:"bottombanner,omitempty"`
	Gallery           *string `json:"gallery,omitempty"`
	Indi              *int32  `json:"indi,omitempty" example:"1"`
	Team              *int32  `json:"team,omitempty" example:"0"`
	Tabcount          *int32  `json:"tabcount,omitempty"`
	Columncount       *int32  `json:"columncount,omitempty"`
	Level             *string `json:"level,omitempty" example:"WC"`
	Hloc1             *string `json:"hloc1,omitempty" format:"date-time" example:"2025-01-25T15:00:00Z"`
	Hloc2             *string `json:"hloc2,omitempty" format:"date-time" example:"2025-01-25T15:30:00Z"`
	Hloc3             *string `json:"hloc3,omitempty" format:"date-time" example:"2025-01-25T16:00:00Z"`
	Hcet1             *string `json:"hcet1,omitempty" format:"date-time" example:"2025-01-25T15:00:00Z"`
	Hcet2             *string `json:"hcet2,omitempty" format:"date-time" example:"2025-01-25T15:30:00Z"`
	Hcet3             *string `json:"hcet3,omitempty" format:"date-time" example:"2025-01-25T16:00:00Z"`
	Live              *int32  `json:"live,omitempty" example:"1"`
	Livestatus1       *string `json:"livestatus1,omitempty" example:"LIVE"`
	Livestatus2       *string `json:"livestatus2,omitempty"`
	Livestatus3       *string `json:"livestatus3,omitempty"`
	Liveinfo1         *string `json:"liveinfo1,omitempty"`
	Liveinfo2         *string `json:"liveinfo2,omitempty"`
	Liveinfo3         *string `json:"liveinfo3,omitempty"`
	Passwd            *string `json:"passwd,omitempty"`
	Validdate         *string `json:"validdate,omitempty" format:"date-time"`
	Noepr             *int32  `json:"noepr,omitempty"`
	Tddoc             *int32  `json:"tddoc,omitempty"`
	Timingreport      *int32  `json:"timingreport,omitempty"`
	SpecialCupPoints  *int32  `json:"special_cup_points,omitempty"`
	SkipWcsl          *int32  `json:"skip_wcsl,omitempty"`
	Validforowg       *string `json:"validforowg,omitempty" example:"Y"`
	Lastupdate        *string `json:"lastupdate,omitempty" format:"date-time" example:"2025-01-25T18:30:00Z"`
}

type FISInsertRaceNKExample

type FISInsertRaceNKExample struct {
	Raceid         int32   `json:"raceid" validate:"required" example:"8801"`
	Eventid        *int32  `json:"eventid,omitempty" example:"9001"`
	Seasoncode     *int32  `json:"seasoncode,omitempty" example:"2025"`
	Racecodex      *int32  `json:"racecodex,omitempty" example:"3001"`
	Disciplineid   *string `json:"disciplineid,omitempty" example:"NH10K"`
	Disciplinecode *string `json:"disciplinecode,omitempty" example:"NC"`
	Catcode        *string `json:"catcode,omitempty" example:"WC"`
	Catcode2       *string `json:"catcode2,omitempty"`
	Catcode3       *string `json:"catcode3,omitempty"`
	Catcode4       *string `json:"catcode4,omitempty"`
	Gender         *string `json:"gender,omitempty" example:"M"`
	Racedate       *string `json:"racedate,omitempty" format:"date" example:"2025-02-15"`
	Starteventdate *string `json:"starteventdate,omitempty" format:"date" example:"2025-02-14"`
	Description    *string `json:"description,omitempty" example:"World Cup NH 10 km"`
	Place          *string `json:"place,omitempty" example:"Seefeld"`
	Nationcode     *string `json:"nationcode,omitempty" example:"AUT"`

	Td1id          *int32  `json:"td1id,omitempty" example:"101"`
	Td1name        *string `json:"td1name,omitempty" example:"John Doe"`
	Td1nation      *string `json:"td1nation,omitempty" example:"AUT"`
	Td1code        *int32  `json:"td1code,omitempty" example:"1001"`
	Td2id          *int32  `json:"td2id,omitempty" example:"102"`
	Td2name        *string `json:"td2name,omitempty" example:"Jane Doe"`
	Td2nation      *string `json:"td2nation,omitempty" example:"GER"`
	Td2code        *int32  `json:"td2code,omitempty" example:"1002"`
	Calstatuscode  *string `json:"calstatuscode,omitempty" example:"OFF"`
	Procstatuscode *string `json:"procstatuscode,omitempty" example:"P"`

	Receiveddate *string `json:"receiveddate,omitempty" format:"date-time" example:"2025-02-10T10:00:00Z"`
	Pursuit      *string `json:"pursuit,omitempty"`
	Masse        *string `json:"masse,omitempty"`
	Relay        *string `json:"relay,omitempty"`
	Distance     *string `json:"distance,omitempty" example:"10km"`
	Hill         *int32  `json:"hill,omitempty" example:"109"`
	Style        *string `json:"style,omitempty" example:"FREE"`
	Qualif       *string `json:"qualif,omitempty" example:"Q"`
	Finale       *string `json:"finale,omitempty"`
	Homol        *string `json:"homol,omitempty"`

	Webcomment       *string `json:"webcomment,omitempty"`
	Displaystatus    *string `json:"displaystatus,omitempty" example:"OK"`
	Fisinterncomment *string `json:"fisinterncomment,omitempty"`

	Published         *int32  `json:"published,omitempty" example:"1"`
	Validforfispoints *int32  `json:"validforfispoints,omitempty" example:"1"`
	Usedfislist       *string `json:"usedfislist,omitempty"`
	Tolist            *string `json:"tolist,omitempty"`
	Discforlistcode   *string `json:"discforlistcode,omitempty"`
	Calculatedpenalty *string `json:"calculatedpenalty,omitempty"`
	Appliedpenalty    *string `json:"appliedpenalty,omitempty"`
	Appliedscala      *string `json:"appliedscala,omitempty"`
	Penscafixed       *string `json:"penscafixed,omitempty"`
	Version           *int32  `json:"version,omitempty" example:"1"`
	Nationraceid      *int32  `json:"nationraceid,omitempty" example:"0"`
	Provraceid        *int32  `json:"provraceid,omitempty" example:"0"`
	Msql7evid         *int32  `json:"msql7evid,omitempty" example:"0"`
	Mssql7id          *int32  `json:"mssql7id,omitempty" example:"0"`

	Topbanner    *string `json:"topbanner,omitempty"`
	Bottombanner *string `json:"bottombanner,omitempty"`
	Gallery      *string `json:"gallery,omitempty"`

	Indi        *int32  `json:"indi,omitempty" example:"1"`
	Team        *int32  `json:"team,omitempty" example:"0"`
	Tabcount    *int32  `json:"tabcount,omitempty" example:"0"`
	Columncount *int32  `json:"columncount,omitempty" example:"0"`
	Level       *string `json:"level,omitempty" example:"WC"`

	Hloc1 *string `json:"hloc1,omitempty" format:"date-time" example:"2025-02-15T09:30:00Z"`
	Hloc2 *string `json:"hloc2,omitempty" format:"date-time" example:"2025-02-15T10:00:00Z"`
	Hloc3 *string `json:"hloc3,omitempty" format:"date-time" example:"2025-02-15T10:30:00Z"`
	Hcet1 *string `json:"hcet1,omitempty" format:"date-time" example:"2025-02-15T11:00:00Z"`
	Hcet2 *string `json:"hcet2,omitempty" format:"date-time" example:"2025-02-15T11:30:00Z"`
	Hcet3 *string `json:"hcet3,omitempty" format:"date-time" example:"2025-02-15T12:00:00Z"`

	Live        *int32  `json:"live,omitempty" example:"1"`
	Livestatus1 *string `json:"livestatus1,omitempty" example:"LIVE"`
	Livestatus2 *string `json:"livestatus2,omitempty"`
	Livestatus3 *string `json:"livestatus3,omitempty"`
	Liveinfo1   *string `json:"liveinfo1,omitempty"`
	Liveinfo2   *string `json:"liveinfo2,omitempty"`
	Liveinfo3   *string `json:"liveinfo3,omitempty"`

	Passwd     *string `json:"passwd,omitempty"`

	Validdate    *string `json:"validdate,omitempty" format:"date-time" example:"2025-02-16T00:00:00Z"`
	Noepr        *int32  `json:"noepr,omitempty" example:"0"`
	Tddoc        *int32  `json:"tddoc,omitempty" example:"0"`
	Timingreport *int32  `json:"timingreport,omitempty" example:"0"`

	SpecialCupPoints *int32 `json:"special_cup_points,omitempty" example:"0"`
	SkipWcsl         *int32 `json:"skip_wcsl,omitempty" example:"0"`
	Validforowg      *int32 `json:"validforowg,omitempty" example:"1"`

	Lastupdate *string `json:"lastupdate,omitempty" format:"date-time" example:"2025-02-15T18:30:00Z"`
}

type FISInsertResultCCExample

type FISInsertResultCCExample struct {
	Recid          int32   `json:"recid" example:"12345"`
	Raceid         *int32  `json:"raceid" example:"98765"`
	Competitorid   *int32  `json:"competitorid" example:"11111"`
	Status         *string `json:"status" example:"OK"`
	Reason         *string `json:"reason" example:""`
	Position       *string `json:"position" example:"1.00000"`
	Pf             *int32  `json:"pf" example:"0"`
	Status2        *string `json:"status2" example:""`
	Bib            *string `json:"bib" example:"10.00000"`
	Bibcolor       *string `json:"bibcolor" example:"RED"`
	Fiscode        *int32  `json:"fiscode" example:"1234567"`
	Competitorname *string `json:"competitorname" example:"DOE John"`
	Nationcode     *string `json:"nationcode" example:"NOR"`
	Stage          *string `json:"stage" example:"F"`
	Level          *string `json:"level" example:"WC"`
	Heat           *string `json:"heat" example:"1"`
	Timer1         *string `json:"timer1" example:"03:10.5"`
	Timer2         *string `json:"timer2" example:"06:22.0"`
	Timer3         *string `json:"timer3" example:""`
	Timetot        *string `json:"timetot" example:"26:30.2"`
	Valid          *string `json:"valid" example:"1.00000"`
	Racepoints     *string `json:"racepoints" example:"2.34"`
	Cuppoints      *string `json:"cuppoints" example:"100.00000"`
	Bonustime      *string `json:"bonustime" example:"00:10.0"`
	Bonuscuppoints *string `json:"bonuscuppoints" example:"15"`
	Version        *string `json:"version" example:"1"`
	Rg1            *string `json:"rg1" example:""`
	Rg2            *string `json:"rg2" example:""`
	Lastupdate     *string `json:"lastupdate" example:"2025-01-01T12:00:00Z"`
}

type FISInsertResultJPExample

type FISInsertResultJPExample struct {
	Recid          int32   `json:"recid" example:"50001"`
	Raceid         *int32  `json:"raceid" example:"234567"`
	Competitorid   *int32  `json:"competitorid" example:"345678"`
	Status         *string `json:"status" example:"OK"`
	Status2        *string `json:"status2" example:""`
	Position       *int32  `json:"position" example:"1"`
	Bib            *int32  `json:"bib" example:"15"`
	Fiscode        *int32  `json:"fiscode" example:"1234567"`
	Competitorname *string `json:"competitorname" example:"KOBAYASHI Ryoyu"`
	Nationcode     *string `json:"nationcode" example:"JPN"`
	Level          *string `json:"level" example:"WC"`
	Heat           *string `json:"heat" example:"1"`
	Stage          *string `json:"stage" example:"F"`

	J1r1 *string `json:"j1r1,omitempty" example:"19.0"`
	J2r1 *string `json:"j2r1,omitempty" example:"19.0"`
	J3r1 *string `json:"j3r1,omitempty" example:"19.0"`
	J4r1 *string `json:"j4r1,omitempty" example:"19.0"`
	J5r1 *string `json:"j5r1,omitempty" example:"19.0"`

	Speedr1  *string `json:"speedr1" example:"88.5"`
	Distr1   *string `json:"distr1" example:"138.0"`
	Disptsr1 *string `json:"disptsr1" example:"78.5"`
	Judptsr1 *string `json:"judptsr1" example:"57.0"`
	Totrun1  *string `json:"totrun1" example:"135.5"`
	Posr1    *string `json:"posr1" example:"1"`
	Statusr1 *string `json:"statusr1" example:"OK"`

	J1r2 *string `json:"j1r2,omitempty" example:"18.5"`
	J2r2 *string `json:"j2r2,omitempty" example:"18.5"`
	J3r2 *string `json:"j3r2,omitempty" example:"18.5"`
	J4r2 *string `json:"j4r2,omitempty" example:"18.5"`
	J5r2 *string `json:"j5r2,omitempty" example:"18.5"`

	Speedr2  *string `json:"speedr2" example:"88.0"`
	Distr2   *string `json:"distr2" example:"137.0"`
	Disptsr2 *string `json:"disptsr2" example:"77.9"`
	Judptsr2 *string `json:"judptsr2" example:"56.5"`
	Totrun2  *string `json:"totrun2" example:"134.4"`
	Posr2    *string `json:"posr2" example:"1"`
	Statusr2 *string `json:"statusr2" example:"OK"`

	J1r3 *string `json:"j1r3,omitempty"`
	J2r3 *string `json:"j2r3,omitempty"`
	J3r3 *string `json:"j3r3,omitempty"`
	J4r3 *string `json:"j4r3,omitempty"`
	J5r3 *string `json:"j5r3,omitempty"`

	Speedr3  *string `json:"speedr3,omitempty"`
	Distr3   *string `json:"distr3,omitempty"`
	Disptsr3 *string `json:"disptsr3,omitempty"`
	Judptsr3 *string `json:"judptsr3,omitempty"`
	Totrun3  *string `json:"totrun3,omitempty"`
	Posr3    *string `json:"posr3,omitempty"`
	Statusr3 *string `json:"statusr3,omitempty"`

	J1r4 *string `json:"j1r4,omitempty"`
	J2r4 *string `json:"j2r4,omitempty"`
	J3r4 *string `json:"j3r4,omitempty"`
	J4r4 *string `json:"j4r4,omitempty"`
	J5r4 *string `json:"j5r4,omitempty"`

	Speedr4  *string `json:"speedr4,omitempty"`
	Distr4   *string `json:"distr4,omitempty"`
	Disptsr4 *string `json:"disptsr4,omitempty"`
	Judptsr4 *string `json:"judptsr4,omitempty"`

	Gater1    *string `json:"gater1,omitempty" example:"8"`
	Gater2    *string `json:"gater2,omitempty" example:"8"`
	Gater3    *string `json:"gater3,omitempty"`
	Gater4    *string `json:"gater4,omitempty"`
	Gateptsr1 *string `json:"gateptsr1,omitempty" example:"0.0"`
	Gateptsr2 *string `json:"gateptsr2,omitempty" example:"0.0"`
	Gateptsr3 *string `json:"gateptsr3,omitempty"`
	Gateptsr4 *string `json:"gateptsr4,omitempty"`

	Windr1    *string `json:"windr1,omitempty" example:"-0.5"`
	Windr2    *string `json:"windr2,omitempty" example:"-0.3"`
	Windr3    *string `json:"windr3,omitempty"`
	Windr4    *string `json:"windr4,omitempty"`
	Windptsr1 *string `json:"windptsr1,omitempty" example:"1.2"`
	Windptsr2 *string `json:"windptsr2,omitempty" example:"0.8"`
	Windptsr3 *string `json:"windptsr3,omitempty"`
	Windptsr4 *string `json:"windptsr4,omitempty"`

	Reason     *string `json:"reason,omitempty" example:""`
	Totrun4    *string `json:"totrun4,omitempty"`
	Tot        *string `json:"tot" example:"269.9"`
	Valid      *int32  `json:"valid" example:"1"`
	Racepoints *string `json:"racepoints" example:"0.0"`
	Cuppoints  *string `json:"cuppoints" example:"100"`
	Version    *string `json:"version" example:"1"`
	Lastupdate *string `json:"lastupdate" example:"2025-01-25T18:30:00Z"`
	Posr4      *string `json:"posr4,omitempty"`
	Statusr4   *string `json:"statusr4,omitempty"`
}

type FISInsertResultNKExample

type FISInsertResultNKExample struct {
	Recid          int32   `json:"recid" example:"70001"`
	Raceid         *int32  `json:"raceid" example:"8801"`
	Competitorid   *int32  `json:"competitorid" example:"123456"`
	Status         *string `json:"status" example:"OK"`
	Status2        *string `json:"status2" example:""`
	Reason         *string `json:"reason" example:""`
	Position       *int32  `json:"position" example:"1"`
	Pf             *int32  `json:"pf" example:"0"`
	Bib            *int32  `json:"bib" example:"15"`
	Bibcolor       *string `json:"bibcolor" example:"RED"`
	Fiscode        *int32  `json:"fiscode" example:"3456789"`
	Competitorname *string `json:"competitorname" example:"RIIBER Jarl Magnus"`
	Nationcode     *string `json:"nationcode" example:"NOR"`
	Level          *string `json:"level" example:"WC"`
	Heat           *string `json:"heat" example:"1"`
	Stage          *string `json:"stage" example:"F"`

	J1r1      *string `json:"j1r1" example:"18.5"`
	J2r1      *string `json:"j2r1" example:"18.5"`
	J3r1      *string `json:"j3r1" example:"18.5"`
	J4r1      *string `json:"j4r1" example:"18.5"`
	J5r1      *string `json:"j5r1" example:"18.5"`
	Speedr1   *string `json:"speedr1" example:"89.5"`
	Distr1    *string `json:"distr1" example:"135.0"`
	Disptsr1  *string `json:"disptsr1" example:"76.5"`
	Judptsr1  *string `json:"judptsr1" example:"56.0"`
	Gater1    *string `json:"gater1" example:"10"`
	Gateptsr1 *string `json:"gateptsr1" example:"-3.0"`
	Windr1    *string `json:"windr1" example:"-0.8"`
	Windptsr1 *string `json:"windptsr1" example:"2.5"`
	Totrun1   *string `json:"totrun1" example:"134.0"`
	Posr1     *string `json:"posr1" example:"1"`
	Statusr1  *string `json:"statusr1" example:"OK"`

	J1r2      *string `json:"j1r2" example:"18.0"`
	J2r2      *string `json:"j2r2" example:"18.0"`
	J3r2      *string `json:"j3r2" example:"18.0"`
	J4r2      *string `json:"j4r2" example:"18.0"`
	J5r2      *string `json:"j5r2" example:"18.0"`
	Speedr2   *string `json:"speedr2" example:"90.0"`
	Distr2    *string `json:"distr2" example:"134.0"`
	Disptsr2  *string `json:"disptsr2" example:"75.0"`
	Judptsr2  *string `json:"judptsr2" example:"55.0"`
	Gater2    *string `json:"gater2" example:"11"`
	Gateptsr2 *string `json:"gateptsr2" example:"-3.5"`
	Windr2    *string `json:"windr2" example:"-0.3"`
	Windptsr2 *string `json:"windptsr2" example:"1.5"`
	Totrun2   *string `json:"totrun2" example:"132.5"`
	Posr2     *string `json:"posr2" example:"1"`
	Statusr2  *string `json:"statusr2" example:"OK"`

	Pointsjump *string `json:"pointsjump" example:"135.0"`
	Behindjump *string `json:"behindjump" example:"0.0"`
	Posjump    *string `json:"posjump" example:"1"`

	Timecc     *string `json:"timecc" example:"00:23:15.6"`
	Timeccint  *string `json:"timeccint" example:"1395"`
	Poscc      *string `json:"poscc" example:"2"`
	Starttime  *string `json:"starttime" example:"12:30:00"`
	Statuscc   *string `json:"statuscc" example:"OK"`
	Totbehind  *string `json:"totbehind" example:"5.6"`
	Timetot    *string `json:"timetot" example:"00:24:10.2"`
	Timetotint *int32  `json:"timetotint" example:"1450"`
	Valid      *int32  `json:"valid" example:"1"`
	Racepoints *string `json:"racepoints" example:"100.0"`
	Cuppoints  *string `json:"cuppoints" example:"100"`
	Version    *string `json:"version" example:"1"`
	Lastupdate *string `json:"lastupdate" example:"2025-02-15T18:30:00Z"`
}

type FISLastCompetitorResponse

type FISLastCompetitorResponse struct {
	Competitor FISCompetitor `json:"competitor"`
}

type FISLastRaceCCResponse

type FISLastRaceCCResponse struct {
	Race FISRaceCC `json:"race"`
}

type FISLastRaceJPResponse

type FISLastRaceJPResponse struct {
	Race FISRaceJP `json:"race"`
}

type FISLastRaceNKResponse

type FISLastRaceNKResponse struct {
	Race FISRaceNK `json:"race"`
}

type FISLastResultCCResponse

type FISLastResultCCResponse struct {
	Result FISResultCC `json:"result"`
}

type FISLastResultJPResponse

type FISLastResultJPResponse struct {
	Result FISResultJP `json:"result"`
}

type FISLastResultNKResponse

type FISLastResultNKResponse struct {
	Result FISResultNK `json:"result"`
}

type FISLatestResultItem

type FISLatestResultItem struct {
	Raceid         *int32  `json:"raceid,omitempty" example:"123456"`
	Racedate       *string `json:"racedate,omitempty" example:"2025-02-15"`
	Seasoncode     *int32  `json:"seasoncode,omitempty" example:"2025"`
	Disciplinecode *string `json:"disciplinecode,omitempty" example:"DSPR"`
	Catcode        *string `json:"catcode,omitempty" example:"WC"`
	Place          *string `json:"place,omitempty" example:"Lahti"`
	Nationcode     *string `json:"nationcode,omitempty" example:"FIN"`
	Position       *string `json:"position,omitempty" example:"1"`
	Timetot        *string `json:"timetot,omitempty" example:"25:32.4"`

	// Sector-specific examples (all optional)
	Distance   *string `json:"distance,omitempty" example:"10km"`
	Hill       *int32  `json:"hill,omitempty" example:"140"`
	Posr1      *string `json:"posr1,omitempty" example:"1"`
	Speedr1    *string `json:"speedr1,omitempty" example:"93.5"`
	Distr1     *string `json:"distr1,omitempty" example:"137.0"`
	Judptsr1   *string `json:"judptsr1,omitempty" example:"57.5"`
	Windr1     *string `json:"windr1,omitempty" example:"0.6"`
	Windptsr1  *string `json:"windptsr1,omitempty" example:"-3.0"`
	Gater1     *string `json:"gater1,omitempty" example:"11"`
	Poscc      *string `json:"poscc,omitempty" example:"3"`
	Timetotint *int32  `json:"timetotint,omitempty" example:"1534"`
	Pointsjump *string `json:"pointsjump,omitempty" example:"135.5"`
}

type FISLatestResultsResponse

type FISLatestResultsResponse struct {
	Competitorid int32                 `json:"competitorid" example:"123456"`
	Sector       string                `json:"sector" example:"CC"`
	Seasoncode   *int32                `json:"seasoncode,omitempty" example:"2025"`
	Catcodes     []string              `json:"catcodes,omitempty" example:"WC,COC"`
	Limit        int32                 `json:"limit" example:"50"`
	Results      []FISLatestResultItem `json:"results"`
}

type FISNationsBySectorResponse

type FISNationsBySectorResponse struct {
	Nations []string `json:"nations" example:"FIN,NOR,SWE"`
}

type FISRaceCC

type FISRaceCC struct {
	Raceid            int32   `json:"raceid" example:"123456"`
	Eventid           *int32  `json:"eventid,omitempty" example:"7890"`
	Seasoncode        *int32  `json:"seasoncode,omitempty" example:"2025"`
	Racecodex         *int32  `json:"racecodex,omitempty" example:"1001"`
	Disciplineid      *string `json:"disciplineid,omitempty" example:"DIST"`
	Disciplinecode    *string `json:"disciplinecode,omitempty" example:"SP"`
	Catcode           *string `json:"catcode,omitempty" example:"WC"`
	Catcode2          *string `json:"catcode2,omitempty"`
	Catcode3          *string `json:"catcode3,omitempty"`
	Catcode4          *string `json:"catcode4,omitempty"`
	Gender            *string `json:"gender,omitempty" example:"M"`
	Racedate          *string `json:"racedate,omitempty" format:"date" example:"2025-02-14"`
	Starteventdate    *string `json:"starteventdate,omitempty" format:"date" example:"2025-02-13"`
	Description       *string `json:"description,omitempty" example:"World Cup Sprint"`
	Place             *string `json:"place,omitempty" example:"Lahti"`
	Nationcode        *string `json:"nationcode,omitempty" example:"FIN"`
	Td1id             *int32  `json:"td1id,omitempty"`
	Td1name           *string `json:"td1name,omitempty"`
	Td1nation         *string `json:"td1nation,omitempty"`
	Td1code           *int32  `json:"td1code,omitempty"`
	Td2id             *int32  `json:"td2id,omitempty"`
	Td2name           *string `json:"td2name,omitempty"`
	Td2nation         *string `json:"td2nation,omitempty"`
	Td2code           *int32  `json:"td2code,omitempty"`
	Calstatuscode     *string `json:"calstatuscode,omitempty"`
	Procstatuscode    *string `json:"procstatuscode,omitempty"`
	Receiveddate      *string `json:"receiveddate,omitempty" format:"date-time"`
	Pursuit           *string `json:"pursuit,omitempty"`
	Masse             *string `json:"masse,omitempty"`
	Relay             *string `json:"relay,omitempty"`
	Distance          *string `json:"distance,omitempty"`
	Hill              *string `json:"hill,omitempty"`
	Style             *string `json:"style,omitempty"`
	Qualif            *string `json:"qualif,omitempty"`
	Finale            *string `json:"finale,omitempty"`
	Homol             *string `json:"homol,omitempty"`
	Webcomment        *string `json:"webcomment,omitempty"`
	Displaystatus     *string `json:"displaystatus,omitempty"`
	Fisinterncomment  *string `json:"fisinterncomment,omitempty"`
	Published         *int32  `json:"published,omitempty" example:"1"`
	Validforfispoints *int32  `json:"validforfispoints,omitempty" example:"1"`
	Usedfislist       *string `json:"usedfislist,omitempty"`
	Tolist            *string `json:"tolist,omitempty"`
	Discforlistcode   *string `json:"discforlistcode,omitempty"`
	Calculatedpenalty *string `json:"calculatedpenalty,omitempty"`
	Appliedpenalty    *string `json:"appliedpenalty,omitempty"`
	Appliedscala      *string `json:"appliedscala,omitempty"`
	Penscafixed       *string `json:"penscafixed,omitempty"`
	Version           *int32  `json:"version,omitempty"`
	Nationraceid      *int32  `json:"nationraceid,omitempty"`
	Provraceid        *int32  `json:"provraceid,omitempty"`
	Msql7evid         *int32  `json:"msql7evid,omitempty"`
	Mssql7id          *int32  `json:"mssql7id,omitempty"`
	Results           *int32  `json:"results,omitempty"`
	Pdf               *int32  `json:"pdf,omitempty"`
	Topbanner         *string `json:"topbanner,omitempty"`
	Bottombanner      *string `json:"bottombanner,omitempty"`
	Gallery           *string `json:"gallery,omitempty"`
	Indi              *int32  `json:"indi,omitempty"`
	Team              *int32  `json:"team,omitempty"`
	Tabcount          *int32  `json:"tabcount,omitempty"`
	Columncount       *int32  `json:"columncount,omitempty"`
	Level             *string `json:"level,omitempty"`
	Hloc1             *string `json:"hloc1,omitempty"`
	Hloc2             *string `json:"hloc2,omitempty"`
	Hloc3             *string `json:"hloc3,omitempty"`
	Hcet1             *string `json:"hcet1,omitempty"`
	Hcet2             *string `json:"hcet2,omitempty"`
	Hcet3             *string `json:"hcet3,omitempty"`
	Live              *int32  `json:"live,omitempty"`
	Livestatus1       *string `json:"livestatus1,omitempty"`
	Livestatus2       *string `json:"livestatus2,omitempty"`
	Livestatus3       *string `json:"livestatus3,omitempty"`
	Liveinfo1         *string `json:"liveinfo1,omitempty"`
	Liveinfo2         *string `json:"liveinfo2,omitempty"`
	Liveinfo3         *string `json:"liveinfo3,omitempty"`
	Passwd            *string `json:"passwd,omitempty"`
	Validdate         *string `json:"validdate,omitempty" format:"date-time"`
	Noepr             *int32  `json:"noepr,omitempty"`
	Tddoc             *int32  `json:"tddoc,omitempty"`
	Timingreport      *int32  `json:"timingreport,omitempty"`
	SpecialCupPoints  *int32  `json:"special_cup_points,omitempty"`
	SkipWcsl          *int32  `json:"skip_wcsl,omitempty"`
	Validforowg       *int32  `json:"validforowg,omitempty"`
	Lastupdate        *string `json:"lastupdate,omitempty" format:"date-time" example:"2025-02-14T18:30:00Z"`
}

type FISRaceDetailItem

type FISRaceDetailItem struct {
	Sectorcode string `json:"sectorcode" example:"CC"`

	Raceid         int32   `json:"raceid" example:"123456"`
	Eventid        *int32  `json:"eventid,omitempty" example:"98765"`
	Seasoncode     *int32  `json:"seasoncode,omitempty" example:"2025"`
	Racecodex      *int32  `json:"racecodex,omitempty" example:"1001"`
	Disciplineid   *string `json:"disciplineid,omitempty" example:"DSPR"`
	Disciplinecode *string `json:"disciplinecode,omitempty" example:"DSPR"`
	Catcode        *string `json:"catcode,omitempty" example:"WC"`
	Catcode2       *string `json:"catcode2,omitempty"`
	Catcode3       *string `json:"catcode3,omitempty"`
	Catcode4       *string `json:"catcode4,omitempty"`
	Gender         *string `json:"gender,omitempty" example:"M"`
	Racedate       *string `json:"racedate,omitempty" example:"2025-02-15"`       // YYYY-MM-DD
	Starteventdate *string `json:"starteventdate,omitempty" example:"2025-02-14"` // YYYY-MM-DD
	Description    *string `json:"description,omitempty" example:"World Cup 10 km"`
	Place          *string `json:"place,omitempty" example:"Lahti"`
	Nationcode     *string `json:"nationcode,omitempty" example:"FIN"`

	Td1id     *int32  `json:"td1id,omitempty" example:"1111"`
	Td1name   *string `json:"td1name,omitempty" example:"TD One"`
	Td1nation *string `json:"td1nation,omitempty" example:"NOR"`
	Td1code   *int32  `json:"td1code,omitempty" example:"2222"`
	Td2id     *int32  `json:"td2id,omitempty"`
	Td2name   *string `json:"td2name,omitempty"`
	Td2nation *string `json:"td2nation,omitempty"`
	Td2code   *int32  `json:"td2code,omitempty"`

	Calstatuscode  *string `json:"calstatuscode,omitempty" example:"O"`
	Procstatuscode *string `json:"procstatuscode,omitempty"`
	Receiveddate   *string `json:"receiveddate,omitempty" example:"2025-01-10"` // YYYY-MM-DD

	Pursuit  *string `json:"pursuit,omitempty"`
	Masse    *string `json:"masse,omitempty"`
	Relay    *string `json:"relay,omitempty"`
	Distance *string `json:"distance,omitempty" example:"10 km"` // CC: varchar, JP/NK: same column
	Hill     *string `json:"hill,omitempty"`                     // CC: varchar, JP/NK: integer -> string here
	Style    *string `json:"style,omitempty" example:"CL"`
	Qualif   *string `json:"qualif,omitempty"`
	Finale   *string `json:"finale,omitempty"`
	Homol    *string `json:"homol,omitempty"`

	Webcomment       *string `json:"webcomment,omitempty"`
	Displaystatus    *string `json:"displaystatus,omitempty"`
	Fisinterncomment *string `json:"fisinterncomment,omitempty"`

	Published         *int32  `json:"published,omitempty" example:"1"`
	Validforfispoints *int32  `json:"validforfispoints,omitempty" example:"1"`
	Usedfislist       *string `json:"usedfislist,omitempty"`
	Tolist            *string `json:"tolist,omitempty"`
	Discforlistcode   *string `json:"discforlistcode,omitempty"`
	Calculatedpenalty *string `json:"calculatedpenalty,omitempty"`
	Appliedpenalty    *string `json:"appliedpenalty,omitempty"`
	Appliedscala      *string `json:"appliedscala,omitempty"`
	Penscafixed       *string `json:"penscafixed,omitempty"`

	Version      *int32 `json:"version,omitempty" example:"1"`
	Nationraceid *int32 `json:"nationraceid,omitempty"`
	Provraceid   *int32 `json:"provraceid,omitempty"`
	Msql7evid    *int32 `json:"msql7evid,omitempty"`
	Mssql7id     *int32 `json:"mssql7id,omitempty"`
	Results      *int32 `json:"results,omitempty"`
	Pdf          *int32 `json:"pdf,omitempty"`

	Topbanner    *string `json:"topbanner,omitempty"`
	Bottombanner *string `json:"bottombanner,omitempty"`
	Gallery      *string `json:"gallery,omitempty"`

	Indi        *int32  `json:"indi,omitempty"`
	Team        *int32  `json:"team,omitempty"`
	Tabcount    *int32  `json:"tabcount,omitempty"`
	Columncount *int32  `json:"columncount,omitempty"`
	Level       *string `json:"level,omitempty"`

	Hloc1 *string `json:"hloc1,omitempty" example:"10:00:00"`
	Hloc2 *string `json:"hloc2,omitempty" example:"10:30:00"`
	Hloc3 *string `json:"hloc3,omitempty" example:"11:00:00"`
	Hcet1 *string `json:"hcet1,omitempty" example:"12:00:00"`
	Hcet2 *string `json:"hcet2,omitempty" example:"12:30:00"`
	Hcet3 *string `json:"hcet3,omitempty" example:"13:00:00"`

	Live        *int32  `json:"live,omitempty" example:"1"`
	Livestatus1 *string `json:"livestatus1,omitempty"`
	Livestatus2 *string `json:"livestatus2,omitempty"`
	Livestatus3 *string `json:"livestatus3,omitempty"`
	Liveinfo1   *string `json:"liveinfo1,omitempty"`
	Liveinfo2   *string `json:"liveinfo2,omitempty"`
	Liveinfo3   *string `json:"liveinfo3,omitempty"`

	Passwd     *string `json:"passwd,omitempty"`

	Validdate    *string `json:"validdate,omitempty" example:"2025-02-10"`
	Noepr        *int32  `json:"noepr,omitempty"`
	Tddoc        *int32  `json:"tddoc,omitempty"`
	Timingreport *int32  `json:"timingreport,omitempty"`

	SpecialCupPoints *int32  `json:"special_cup_points,omitempty"`
	SkipWcsl         *int32  `json:"skip_wcsl,omitempty"`
	Validforowg      *string `json:"validforowg,omitempty" example:"1"`

	Lastupdate *string `json:"lastupdate,omitempty" example:"2025-02-15T12:34:56Z"`
}

type FISRaceJP

type FISRaceJP struct {
	Raceid            int32   `json:"raceid" example:"234567"`
	Eventid           *int32  `json:"eventid,omitempty" example:"8901"`
	Seasoncode        *int32  `json:"seasoncode,omitempty" example:"2025"`
	Racecodex         *int32  `json:"racecodex,omitempty" example:"2001"`
	Disciplineid      *string `json:"disciplineid,omitempty" example:"HS140"`
	Disciplinecode    *string `json:"disciplinecode,omitempty" example:"LH"`
	Catcode           *string `json:"catcode,omitempty" example:"WC"`
	Catcode2          *string `json:"catcode2,omitempty"`
	Catcode3          *string `json:"catcode3,omitempty"`
	Catcode4          *string `json:"catcode4,omitempty"`
	Gender            *string `json:"gender,omitempty" example:"M"`
	Racedate          *string `json:"racedate,omitempty" format:"date" example:"2025-01-25"`
	Starteventdate    *string `json:"starteventdate,omitempty" format:"date" example:"2025-01-24"`
	Description       *string `json:"description,omitempty" example:"World Cup HS140 Individual"`
	Place             *string `json:"place,omitempty" example:"Planica"`
	Nationcode        *string `json:"nationcode,omitempty" example:"SLO"`
	Td1id             *int32  `json:"td1id,omitempty"`
	Td1name           *string `json:"td1name,omitempty"`
	Td1nation         *string `json:"td1nation,omitempty"`
	Td1code           *int32  `json:"td1code,omitempty"`
	Td2id             *int32  `json:"td2id,omitempty"`
	Td2name           *string `json:"td2name,omitempty"`
	Td2nation         *string `json:"td2nation,omitempty"`
	Td2code           *int32  `json:"td2code,omitempty"`
	Calstatuscode     *string `json:"calstatuscode,omitempty"`
	Procstatuscode    *string `json:"procstatuscode,omitempty"`
	Receiveddate      *string `json:"receiveddate,omitempty" format:"date-time"`
	Pursuit           *string `json:"pursuit,omitempty"`
	Masse             *string `json:"masse,omitempty"`
	Relay             *string `json:"relay,omitempty"`
	Distance          *string `json:"distance,omitempty"`
	Hill              *int32  `json:"hill,omitempty" example:"140"`
	Style             *string `json:"style,omitempty" example:"CLASSIC"`
	Qualif            *string `json:"qualif,omitempty" example:"Q"`
	Finale            *string `json:"finale,omitempty"`
	Homol             *string `json:"homol,omitempty"`
	Webcomment        *string `json:"webcomment,omitempty"`
	Displaystatus     *string `json:"displaystatus,omitempty"`
	Fisinterncomment  *string `json:"fisinterncomment,omitempty"`
	Published         *int32  `json:"published,omitempty" example:"1"`
	Validforfispoints *int32  `json:"validforfispoints,omitempty" example:"1"`
	Usedfislist       *string `json:"usedfislist,omitempty"`
	Tolist            *string `json:"tolist,omitempty"`
	Discforlistcode   *string `json:"discforlistcode,omitempty"`
	Calculatedpenalty *string `json:"calculatedpenalty,omitempty"`
	Appliedpenalty    *string `json:"appliedpenalty,omitempty"`
	Appliedscala      *string `json:"appliedscala,omitempty"`
	Penscafixed       *string `json:"penscafixed,omitempty"`
	Version           *int32  `json:"version,omitempty"`
	Nationraceid      *int32  `json:"nationraceid,omitempty"`
	Provraceid        *int32  `json:"provraceid,omitempty"`
	Msql7evid         *int32  `json:"msql7evid,omitempty"`
	Mssql7id          *int32  `json:"mssql7id,omitempty"`
	Results           *int32  `json:"results,omitempty"`
	Pdf               *int32  `json:"pdf,omitempty"`
	Topbanner         *string `json:"topbanner,omitempty"`
	Bottombanner      *string `json:"bottombanner,omitempty"`
	Gallery           *string `json:"gallery,omitempty"`
	Indi              *int32  `json:"indi,omitempty"`
	Team              *int32  `json:"team,omitempty"`
	Tabcount          *int32  `json:"tabcount,omitempty"`
	Columncount       *int32  `json:"columncount,omitempty"`
	Level             *string `json:"level,omitempty"`
	Hloc1             *string `json:"hloc1,omitempty" format:"date-time" example:"2025-01-25T15:00:00Z"`
	Hloc2             *string `json:"hloc2,omitempty" format:"date-time" example:"2025-01-25T15:30:00Z"`
	Hloc3             *string `json:"hloc3,omitempty" format:"date-time" example:"2025-01-25T16:00:00Z"`
	Hcet1             *string `json:"hcet1,omitempty" format:"date-time" example:"2025-01-25T15:00:00Z"`
	Hcet2             *string `json:"hcet2,omitempty" format:"date-time" example:"2025-01-25T15:30:00Z"`
	Hcet3             *string `json:"hcet3,omitempty" format:"date-time" example:"2025-01-25T16:00:00Z"`
	Live              *int32  `json:"live,omitempty"`
	Livestatus1       *string `json:"livestatus1,omitempty"`
	Livestatus2       *string `json:"livestatus2,omitempty"`
	Livestatus3       *string `json:"livestatus3,omitempty"`
	Liveinfo1         *string `json:"liveinfo1,omitempty"`
	Liveinfo2         *string `json:"liveinfo2,omitempty"`
	Liveinfo3         *string `json:"liveinfo3,omitempty"`
	Passwd            *string `json:"passwd,omitempty"`
	Validdate         *string `json:"validdate,omitempty" format:"date-time"`
	Noepr             *int32  `json:"noepr,omitempty"`
	Tddoc             *int32  `json:"tddoc,omitempty"`
	Timingreport      *int32  `json:"timingreport,omitempty"`
	SpecialCupPoints  *int32  `json:"special_cup_points,omitempty"`
	SkipWcsl          *int32  `json:"skip_wcsl,omitempty"`
	Lastupdate        *string `json:"lastupdate,omitempty" format:"date-time" example:"2025-01-25T18:30:00Z"`
	Validforowg       *string `json:"validforowg,omitempty" example:"Y"`
}

type FISRaceNK

type FISRaceNK struct {
	Raceid         int32   `json:"raceid" example:"8801"`
	Eventid        *int32  `json:"eventid,omitempty" example:"9001"`
	Seasoncode     *int32  `json:"seasoncode,omitempty" example:"2025"`
	Racecodex      *int32  `json:"racecodex,omitempty" example:"3001"`
	Disciplineid   *string `json:"disciplineid,omitempty" example:"NH10K"`
	Disciplinecode *string `json:"disciplinecode,omitempty" example:"NC"`
	Catcode        *string `json:"catcode,omitempty" example:"WC"`
	Catcode2       *string `json:"catcode2,omitempty"`
	Catcode3       *string `json:"catcode3,omitempty"`
	Catcode4       *string `json:"catcode4,omitempty"`
	Gender         *string `json:"gender,omitempty" example:"M"`
	Racedate       *string `json:"racedate,omitempty" format:"date" example:"2025-02-15"`
	Starteventdate *string `json:"starteventdate,omitempty" format:"date" example:"2025-02-14"`
	Description    *string `json:"description,omitempty" example:"World Cup NH 10 km"`
	Place          *string `json:"place,omitempty" example:"Seefeld"`
	Nationcode     *string `json:"nationcode,omitempty" example:"AUT"`

	Td1id          *int32  `json:"td1id,omitempty" example:"101"`
	Td1name        *string `json:"td1name,omitempty" example:"John Doe"`
	Td1nation      *string `json:"td1nation,omitempty" example:"AUT"`
	Td1code        *int32  `json:"td1code,omitempty" example:"1001"`
	Td2id          *int32  `json:"td2id,omitempty" example:"102"`
	Td2name        *string `json:"td2name,omitempty" example:"Jane Doe"`
	Td2nation      *string `json:"td2nation,omitempty" example:"GER"`
	Td2code        *int32  `json:"td2code,omitempty" example:"1002"`
	Calstatuscode  *string `json:"calstatuscode,omitempty" example:"OFF"`
	Procstatuscode *string `json:"procstatuscode,omitempty" example:"P"`

	Receiveddate *string `json:"receiveddate,omitempty" format:"date-time" example:"2025-02-10T10:00:00Z"`
	Pursuit      *string `json:"pursuit,omitempty"`
	Masse        *string `json:"masse,omitempty"`
	Relay        *string `json:"relay,omitempty"`
	Distance     *string `json:"distance,omitempty" example:"10km"`
	Hill         *int32  `json:"hill,omitempty" example:"109"`
	Style        *string `json:"style,omitempty" example:"FREE"`
	Qualif       *string `json:"qualif,omitempty" example:"Q"`
	Finale       *string `json:"finale,omitempty"`
	Homol        *string `json:"homol,omitempty"`

	Webcomment       *string `json:"webcomment,omitempty"`
	Displaystatus    *string `json:"displaystatus,omitempty" example:"OK"`
	Fisinterncomment *string `json:"fisinterncomment,omitempty"`

	Published         *int32  `json:"published,omitempty" example:"1"`
	Validforfispoints *int32  `json:"validforfispoints,omitempty" example:"1"`
	Usedfislist       *string `json:"usedfislist,omitempty"`
	Tolist            *string `json:"tolist,omitempty"`
	Discforlistcode   *string `json:"discforlistcode,omitempty"`
	Calculatedpenalty *string `json:"calculatedpenalty,omitempty"`
	Appliedpenalty    *string `json:"appliedpenalty,omitempty"`
	Appliedscala      *string `json:"appliedscala,omitempty"`
	Penscafixed       *string `json:"penscafixed,omitempty"`
	Version           *int32  `json:"version,omitempty" example:"1"`
	Nationraceid      *int32  `json:"nationraceid,omitempty" example:"0"`
	Provraceid        *int32  `json:"provraceid,omitempty" example:"0"`
	Msql7evid         *int32  `json:"msql7evid,omitempty" example:"0"`
	Mssql7id          *int32  `json:"mssql7id,omitempty" example:"0"`

	Results      *int32  `json:"results,omitempty" example:"0"`
	Pdf          *int32  `json:"pdf,omitempty" example:"0"`
	Topbanner    *string `json:"topbanner,omitempty"`
	Bottombanner *string `json:"bottombanner,omitempty"`
	Gallery      *string `json:"gallery,omitempty"`

	Indi        *int32  `json:"indi,omitempty" example:"1"`
	Team        *int32  `json:"team,omitempty" example:"0"`
	Tabcount    *int32  `json:"tabcount,omitempty" example:"0"`
	Columncount *int32  `json:"columncount,omitempty" example:"0"`
	Level       *string `json:"level,omitempty" example:"WC"`

	Hloc1 *string `json:"hloc1,omitempty" format:"date-time" example:"2025-02-15T09:30:00Z"`
	Hloc2 *string `json:"hloc2,omitempty" format:"date-time" example:"2025-02-15T10:00:00Z"`
	Hloc3 *string `json:"hloc3,omitempty" format:"date-time" example:"2025-02-15T10:30:00Z"`
	Hcet1 *string `json:"hcet1,omitempty" format:"date-time" example:"2025-02-15T11:00:00Z"`
	Hcet2 *string `json:"hcet2,omitempty" format:"date-time" example:"2025-02-15T11:30:00Z"`
	Hcet3 *string `json:"hcet3,omitempty" format:"date-time" example:"2025-02-15T12:00:00Z"`

	Live        *int32  `json:"live,omitempty" example:"1"`
	Livestatus1 *string `json:"livestatus1,omitempty" example:"LIVE"`
	Livestatus2 *string `json:"livestatus2,omitempty"`
	Livestatus3 *string `json:"livestatus3,omitempty"`
	Liveinfo1   *string `json:"liveinfo1,omitempty"`
	Liveinfo2   *string `json:"liveinfo2,omitempty"`
	Liveinfo3   *string `json:"liveinfo3,omitempty"`

	Passwd     *string `json:"passwd,omitempty"`

	Validdate    *string `json:"validdate,omitempty" format:"date-time" example:"2025-02-16T00:00:00Z"`
	Noepr        *int32  `json:"noepr,omitempty" example:"0"`
	Tddoc        *int32  `json:"tddoc,omitempty" example:"0"`
	Timingreport *int32  `json:"timingreport,omitempty" example:"0"`

	SpecialCupPoints *int32 `json:"special_cup_points,omitempty" example:"0"`
	SkipWcsl         *int32 `json:"skip_wcsl,omitempty" example:"0"`
	Validforowg      *int32 `json:"validforowg,omitempty" example:"1"`

	Lastupdate *string `json:"lastupdate,omitempty" format:"date-time" example:"2025-02-15T18:30:00Z"`
}

type FISRaceResultsCCResponse

type FISRaceResultsCCResponse struct {
	Results []FISResultCC `json:"results"`
}

type FISRaceResultsJPResponse

type FISRaceResultsJPResponse struct {
	Results []FISResultJP `json:"results"`
}

type FISRaceResultsNKResponse

type FISRaceResultsNKResponse struct {
	Results []FISResultNK `json:"results"`
}

type FISRacesByIDsResponse

type FISRacesByIDsResponse struct {
	Sector string              `json:"sector" example:"CC"`
	Races  []FISRaceDetailItem `json:"races"`
}

type FISRacesCCResponse

type FISRacesCCResponse struct {
	Races []FISRaceCC `json:"races"`
}

type FISRacesCategoryCountItem

type FISRacesCategoryCountItem struct {
	Catcode *string `json:"catcode,omitempty" example:"WC"`
	Total   int64   `json:"total" example:"42"`
}

type FISRacesCategoryCountsResponse

type FISRacesCategoryCountsResponse struct {
	Seasoncode int32                       `json:"seasoncode" example:"2025"`
	Sectors    []string                    `json:"sectors" example:"CC,JP"`
	Nationcode *string                     `json:"nationcode,omitempty" example:"FIN"`
	Gender     *string                     `json:"gender,omitempty" example:"M"`
	Categories []FISRacesCategoryCountItem `json:"categories"`
}

type FISRacesJPResponse

type FISRacesJPResponse struct {
	Races []FISRaceJP `json:"races"`
}

type FISRacesNKResponse

type FISRacesNKResponse struct {
	Races []FISRaceNK `json:"races"`
}

type FISRacesNationCountItem

type FISRacesNationCountItem struct {
	Nationcode string `json:"nationcode" example:"FIN"`
	Total      int64  `json:"total" example:"42"`
}

type FISRacesNationCountsResponse

type FISRacesNationCountsResponse struct {
	Seasoncode int32                     `json:"seasoncode" example:"2025"`
	Sectors    []string                  `json:"sectors" example:"CC,JP"`
	Gender     *string                   `json:"gender,omitempty" example:"M"`
	Catcode    *string                   `json:"catcode,omitempty" example:"WC"`
	Nations    []FISRacesNationCountItem `json:"nations"`
}

type FISRacesSearchItem

type FISRacesSearchItem struct {
	Sectorcode     string  `json:"sectorcode" example:"CC"`
	Gender         *string `json:"gender,omitempty" example:"M"`
	Raceid         int32   `json:"raceid" example:"123456"`
	Racedate       *string `json:"racedate,omitempty" example:"2025-02-15"`
	Catcode        *string `json:"catcode,omitempty" example:"WC"`
	Description    *string `json:"description,omitempty" example:"World Cup Sprint"`
	Place          *string `json:"place,omitempty" example:"Lahti"`
	Nationcode     *string `json:"nationcode,omitempty" example:"FIN"`
	Disciplinecode *string `json:"disciplinecode,omitempty" example:"DSPR"`
}

type FISRacesSearchResponse

type FISRacesSearchResponse struct {
	Races []FISRacesSearchItem `json:"races"`
}

type FISRacesTotalsResponse

type FISRacesTotalsResponse struct {
	Seasoncode int32    `json:"seasoncode" example:"2025"`
	Sectors    []string `json:"sectors" example:"CC,JP"`
	Catcode    *string  `json:"catcode,omitempty" example:"WC"`
	Gender     *string  `json:"gender,omitempty" example:"M"`
	Total      int64    `json:"total" example:"123"`
}

type FISResultCC

type FISResultCC struct {
	Recid          int32   `json:"recid" example:"12345"`
	Raceid         *int32  `json:"raceid,omitempty" example:"98765"`
	Competitorid   *int32  `json:"competitorid,omitempty" example:"11111"`
	Status         *string `json:"status,omitempty" example:"OK"`
	Reason         *string `json:"reason,omitempty" example:""`
	Position       *string `json:"position,omitempty" example:"1.00000"`
	Pf             *int32  `json:"pf,omitempty" example:"0"`
	Status2        *string `json:"status2,omitempty" example:""`
	Bib            *string `json:"bib,omitempty" example:"10.00000"`
	Bibcolor       *string `json:"bibcolor,omitempty" example:"RED"`
	Fiscode        *int32  `json:"fiscode,omitempty" example:"1234567"`
	Competitorname *string `json:"competitorname,omitempty" example:"DOE John"`
	Nationcode     *string `json:"nationcode,omitempty" example:"NOR"`
	Stage          *string `json:"stage,omitempty" example:"F"`
	Level          *string `json:"level,omitempty" example:"WC"`
	Heat           *string `json:"heat,omitempty" example:"1"`
	Timer1         *string `json:"timer1,omitempty" example:"03:10.5"`
	Timer2         *string `json:"timer2,omitempty" example:"06:22.0"`
	Timer3         *string `json:"timer3,omitempty" example:""`
	Timetot        *string `json:"timetot,omitempty" example:"26:30.2"`
	Valid          *string `json:"valid,omitempty" example:"1.00000"`
	Racepoints     *string `json:"racepoints,omitempty" example:"2.34"`
	Cuppoints      *string `json:"cuppoints,omitempty" example:"100.00000"`
	Bonustime      *string `json:"bonustime,omitempty" example:"00:10.0"`
	Bonuscuppoints *string `json:"bonuscuppoints,omitempty" example:"15"`
	Version        *string `json:"version,omitempty" example:"1"`
	Rg1            *string `json:"rg1,omitempty" example:""`
	Rg2            *string `json:"rg2,omitempty" example:""`
	Lastupdate     *string `json:"lastupdate,omitempty" example:"2025-01-01T12:00:00Z"`
}

type FISResultJP

type FISResultJP struct {
	Recid          int32   `json:"recid" example:"50001"`
	Raceid         *int32  `json:"raceid,omitempty" example:"234567"`
	Competitorid   *int32  `json:"competitorid,omitempty" example:"345678"`
	Status         *string `json:"status,omitempty" example:"OK"`
	Status2        *string `json:"status2,omitempty" example:""`
	Position       *int32  `json:"position,omitempty" example:"1"`
	Bib            *int32  `json:"bib,omitempty" example:"15"`
	Fiscode        *int32  `json:"fiscode,omitempty" example:"1234567"`
	Competitorname *string `json:"competitorname,omitempty" example:"KOBAYASHI Ryoyu"`
	Nationcode     *string `json:"nationcode,omitempty" example:"JPN"`
	Level          *string `json:"level,omitempty" example:"WC"`
	Heat           *string `json:"heat,omitempty" example:"1"`
	Stage          *string `json:"stage,omitempty" example:"F"`

	J1r1 *string `json:"j1r1,omitempty"`
	J2r1 *string `json:"j2r1,omitempty"`
	J3r1 *string `json:"j3r1,omitempty"`
	J4r1 *string `json:"j4r1,omitempty"`
	J5r1 *string `json:"j5r1,omitempty"`

	Speedr1  *string `json:"speedr1,omitempty" example:"88.5"`
	Distr1   *string `json:"distr1,omitempty" example:"138.0"`
	Disptsr1 *string `json:"disptsr1,omitempty" example:"78.5"`
	Judptsr1 *string `json:"judptsr1,omitempty" example:"57.0"`
	Totrun1  *string `json:"totrun1,omitempty" example:"135.5"`
	Posr1    *string `json:"posr1,omitempty" example:"1"`
	Statusr1 *string `json:"statusr1,omitempty" example:"OK"`

	J1r2 *string `json:"j1r2,omitempty"`
	J2r2 *string `json:"j2r2,omitempty"`
	J3r2 *string `json:"j3r2,omitempty"`
	J4r2 *string `json:"j4r2,omitempty"`
	J5r2 *string `json:"j5r2,omitempty"`

	Speedr2  *string `json:"speedr2,omitempty" example:"88.0"`
	Distr2   *string `json:"distr2,omitempty" example:"137.0"`
	Disptsr2 *string `json:"disptsr2,omitempty" example:"77.9"`
	Judptsr2 *string `json:"judptsr2,omitempty" example:"56.5"`
	Totrun2  *string `json:"totrun2,omitempty" example:"134.4"`
	Posr2    *string `json:"posr2,omitempty" example:"1"`
	Statusr2 *string `json:"statusr2,omitempty" example:"OK"`

	J1r3 *string `json:"j1r3,omitempty"`
	J2r3 *string `json:"j2r3,omitempty"`
	J3r3 *string `json:"j3r3,omitempty"`
	J4r3 *string `json:"j4r3,omitempty"`
	J5r3 *string `json:"j5r3,omitempty"`

	Speedr3  *string `json:"speedr3,omitempty"`
	Distr3   *string `json:"distr3,omitempty"`
	Disptsr3 *string `json:"disptsr3,omitempty"`
	Judptsr3 *string `json:"judptsr3,omitempty"`
	Totrun3  *string `json:"totrun3,omitempty"`
	Posr3    *string `json:"posr3,omitempty"`
	Statusr3 *string `json:"statusr3,omitempty"`

	J1r4 *string `json:"j1r4,omitempty"`
	J2r4 *string `json:"j2r4,omitempty"`
	J3r4 *string `json:"j3r4,omitempty"`
	J4r4 *string `json:"j4r4,omitempty"`
	J5r4 *string `json:"j5r4,omitempty"`

	Speedr4  *string `json:"speedr4,omitempty"`
	Distr4   *string `json:"distr4,omitempty"`
	Disptsr4 *string `json:"disptsr4,omitempty"`
	Judptsr4 *string `json:"judptsr4,omitempty"`

	Gater1    *string `json:"gater1,omitempty" example:"8"`
	Gater2    *string `json:"gater2,omitempty" example:"8"`
	Gater3    *string `json:"gater3,omitempty"`
	Gater4    *string `json:"gater4,omitempty"`
	Gateptsr1 *string `json:"gateptsr1,omitempty" example:"0.0"`
	Gateptsr2 *string `json:"gateptsr2,omitempty" example:"0.0"`
	Gateptsr3 *string `json:"gateptsr3,omitempty"`
	Gateptsr4 *string `json:"gateptsr4,omitempty"`

	Windr1    *string `json:"windr1,omitempty" example:"-0.5"`
	Windr2    *string `json:"windr2,omitempty" example:"-0.3"`
	Windr3    *string `json:"windr3,omitempty"`
	Windr4    *string `json:"windr4,omitempty"`
	Windptsr1 *string `json:"windptsr1,omitempty" example:"1.2"`
	Windptsr2 *string `json:"windptsr2,omitempty" example:"0.8"`
	Windptsr3 *string `json:"windptsr3,omitempty"`
	Windptsr4 *string `json:"windptsr4,omitempty"`

	Reason     *string `json:"reason,omitempty" example:""`
	Totrun4    *string `json:"totrun4,omitempty"`
	Tot        *string `json:"tot,omitempty" example:"269.9"`
	Valid      *int32  `json:"valid,omitempty" example:"1"`
	Racepoints *string `json:"racepoints,omitempty" example:"0.0"`
	Cuppoints  *string `json:"cuppoints,omitempty" example:"100"`
	Version    *string `json:"version,omitempty" example:"1"`
	Lastupdate *string `json:"lastupdate,omitempty" example:"2025-01-25T18:30:00Z"`
	Posr4      *string `json:"posr4,omitempty"`
	Statusr4   *string `json:"statusr4,omitempty"`
}

type FISResultNK

type FISResultNK struct {
	Recid          int32   `json:"recid" example:"70001"`
	Raceid         *int32  `json:"raceid,omitempty" example:"8801"`
	Competitorid   *int32  `json:"competitorid,omitempty" example:"123456"`
	Status         *string `json:"status,omitempty" example:"OK"`
	Status2        *string `json:"status2,omitempty" example:""`
	Reason         *string `json:"reason,omitempty" example:""`
	Position       *int32  `json:"position,omitempty" example:"1"`
	Pf             *int32  `json:"pf,omitempty" example:"0"`
	Bib            *int32  `json:"bib,omitempty" example:"15"`
	Bibcolor       *string `json:"bibcolor,omitempty" example:"RED"`
	Fiscode        *int32  `json:"fiscode,omitempty" example:"3456789"`
	Competitorname *string `json:"competitorname,omitempty" example:"RIIBER Jarl Magnus"`
	Nationcode     *string `json:"nationcode,omitempty" example:"NOR"`
	Level          *string `json:"level,omitempty" example:"WC"`
	Heat           *string `json:"heat,omitempty" example:"1"`
	Stage          *string `json:"stage,omitempty" example:"F"`

	// Jump round 1
	J1r1      *string `json:"j1r1,omitempty" example:"18.5"`
	J2r1      *string `json:"j2r1,omitempty" example:"18.5"`
	J3r1      *string `json:"j3r1,omitempty" example:"18.5"`
	J4r1      *string `json:"j4r1,omitempty" example:"18.5"`
	J5r1      *string `json:"j5r1,omitempty" example:"18.5"`
	Speedr1   *string `json:"speedr1,omitempty" example:"89.5"`
	Distr1    *string `json:"distr1,omitempty" example:"135.0"`
	Disptsr1  *string `json:"disptsr1,omitempty" example:"76.5"`
	Judptsr1  *string `json:"judptsr1,omitempty" example:"56.0"`
	Gater1    *string `json:"gater1,omitempty" example:"10"`
	Gateptsr1 *string `json:"gateptsr1,omitempty" example:"-3.0"`
	Windr1    *string `json:"windr1,omitempty" example:"-0.8"`
	Windptsr1 *string `json:"windptsr1,omitempty" example:"2.5"`
	Totrun1   *string `json:"totrun1,omitempty" example:"134.0"`
	Posr1     *string `json:"posr1,omitempty" example:"1"`
	Statusr1  *string `json:"statusr1,omitempty" example:"OK"`

	// Jump round 2
	J1r2      *string `json:"j1r2,omitempty" example:"18.0"`
	J2r2      *string `json:"j2r2,omitempty" example:"18.0"`
	J3r2      *string `json:"j3r2,omitempty" example:"18.0"`
	J4r2      *string `json:"j4r2,omitempty" example:"18.0"`
	J5r2      *string `json:"j5r2,omitempty" example:"18.0"`
	Speedr2   *string `json:"speedr2,omitempty" example:"90.0"`
	Distr2    *string `json:"distr2,omitempty" example:"134.0"`
	Disptsr2  *string `json:"disptsr2,omitempty" example:"75.0"`
	Judptsr2  *string `json:"judptsr2,omitempty" example:"55.0"`
	Gater2    *string `json:"gater2,omitempty" example:"11"`
	Gateptsr2 *string `json:"gateptsr2,omitempty" example:"-3.5"`
	Windr2    *string `json:"windr2,omitempty" example:"-0.3"`
	Windptsr2 *string `json:"windptsr2,omitempty" example:"1.5"`
	Totrun2   *string `json:"totrun2,omitempty" example:"132.5"`
	Posr2     *string `json:"posr2,omitempty" example:"1"`
	Statusr2  *string `json:"statusr2,omitempty" example:"OK"`

	// Jump summary
	Pointsjump *string `json:"pointsjump,omitempty" example:"135.0"`
	Behindjump *string `json:"behindjump,omitempty" example:"0.0"`
	Posjump    *string `json:"posjump,omitempty" example:"1"`

	// Cross-country part
	Timecc    *string `json:"timecc,omitempty" example:"00:23:15.6"`
	Timeccint *string `json:"timeccint,omitempty" example:"1395"`
	Poscc     *string `json:"poscc,omitempty" example:"2"`
	Starttime *string `json:"starttime,omitempty" example:"12:30:00"`
	Statuscc  *string `json:"statuscc,omitempty" example:"OK"`
	Totbehind *string `json:"totbehind,omitempty" example:"5.6"`

	// Total result
	Timetot    *string `json:"timetot,omitempty" example:"00:24:10.2"`
	Timetotint *int32  `json:"timetotint,omitempty" example:"1450"`
	Valid      *int32  `json:"valid,omitempty" example:"1"`
	Racepoints *string `json:"racepoints,omitempty" example:"100.0"`
	Cuppoints  *string `json:"cuppoints,omitempty" example:"100"`
	Version    *string `json:"version,omitempty" example:"1"`
	Lastupdate *string `json:"lastupdate,omitempty" example:"2025-02-15T18:30:00Z"`
}

type FISSeasonsCCResponse

type FISSeasonsCCResponse struct {
	Seasons []int32 `json:"seasons" swaggertype:"array,integer" example:"2026,2025,2024"`
}

type FISSeasonsJPResponse

type FISSeasonsJPResponse struct {
	Seasons []int32 `json:"seasons" swaggertype:"array,integer" example:"2026,2025,2024"`
}

type FISSeasonsNKResponse

type FISSeasonsNKResponse struct {
	Seasons []int32 `json:"seasons" swaggertype:"array,integer" example:"2026,2025,2024"`
}

type FISUpdateAthleteExample

type FISUpdateAthleteExample struct {
	Fiscode   int32   `json:"fiscode" example:"342001"`
	Sporttiid *int32  `json:"sporttiid,omitempty" example:"123456"`
	Firstname *string `json:"firstname,omitempty" example:"Iivo"`
	Lastname  *string `json:"lastname,omitempty" example:"Niskanen"`
}

type FISUpdateCompetitorExample

type FISUpdateCompetitorExample struct {
	Competitorid       int32   `json:"competitorid" example:"123456"`
	Personid           *int32  `json:"personid,omitempty" example:"98765"`
	Ipcid              *int32  `json:"ipcid,omitempty" example:"0"`
	Fiscode            *int32  `json:"fiscode,omitempty" example:"342001"`
	Birthdate          *string `json:"birthdate,omitempty" example:"1992-01-12"`             // YYYY-MM-DD
	StatusDate         *string `json:"status_date,omitempty" example:"2025-10-27T08:30:00Z"` // RFC3339
	Fee                *string `json:"fee,omitempty" example:"10.00000"`
	Dateofcreation     *string `json:"dateofcreation,omitempty" example:"2025-10-20"` // YYYY-MM-DD
	Injury             *int32  `json:"injury,omitempty" example:"0"`
	Version            *int32  `json:"version,omitempty" example:"1"`
	Compidmssql        *int32  `json:"compidmssql,omitempty" example:"0"`
	Carving            *int32  `json:"carving,omitempty" example:"0"`
	Photo              *int32  `json:"photo,omitempty" example:"0"`
	Notallowed         *int32  `json:"notallowed,omitempty" example:"0"`
	Published          *int32  `json:"published,omitempty" example:"1"`
	Team               *int32  `json:"team,omitempty" example:"0"`
	PhotoBig           *int32  `json:"photo_big,omitempty" example:"0"`
	Lastupdate         *string `json:"lastupdate,omitempty" example:"2025-10-27T08:30:00Z"` // RFC3339
	Statusnextlist     *string `json:"statusnextlist,omitempty" example:"A"`
	Alternatenamecheck *string `json:"alternatenamecheck,omitempty" example:"OK"`
	Deletedat          *string `json:"deletedat,omitempty" example:""`
	Doped              *string `json:"doped,omitempty" example:"NO"`
	Createdby          *string `json:"createdby,omitempty" example:"admin@fis.int"`
	Categorycode       *string `json:"categorycode,omitempty" example:"SEN"`
	Classname          *string `json:"classname,omitempty" example:"Senior"`
	Data               *string `json:"data,omitempty" example:"{}"`
	Lastupdateby       *string `json:"lastupdateby,omitempty" example:"system"`
	Disciplines        *string `json:"disciplines,omitempty" example:"DISTANCE,SPRINT"`
	Type               *string `json:"type,omitempty" example:"ATHLETE"`
	Sectorcode         *string `json:"sectorcode,omitempty" example:"DD"` // JP/NK/CC
	Classcode          *string `json:"classcode,omitempty" example:"A"`
	Lastname           *string `json:"lastname,omitempty" example:"Niskanen"`
	Firstname          *string `json:"firstname,omitempty" example:"Iivo"`
	Gender             *string `json:"gender,omitempty" example:"M"`
	Natteam            *string `json:"natteam,omitempty" example:"FIN-A"`
	Nationcode         *string `json:"nationcode,omitempty" example:"FIN"`
	Nationalcode       *string `json:"nationalcode,omitempty" example:"246"`
	Skiclub            *string `json:"skiclub,omitempty" example:"Ounasvaara Hiihtoseura"`
	Association        *string `json:"association,omitempty" example:"FIN"`
	Status             *string `json:"status,omitempty" example:"ACTIVE"`
	StatusOld          *string `json:"status_old,omitempty" example:""`
	StatusBy           *string `json:"status_by,omitempty" example:"FIS"`
	Tragroup           *string `json:"tragroup,omitempty" example:"A"`
}

type FISUpdateRaceCCExample

type FISUpdateRaceCCExample struct {
	Raceid            int32   `json:"raceid" validate:"required" example:"123456"`
	Eventid           *int32  `json:"eventid,omitempty" example:"7890"`
	Seasoncode        *int32  `json:"seasoncode,omitempty" example:"2025"`
	Racecodex         *int32  `json:"racecodex,omitempty" example:"1001"`
	Disciplineid      *string `json:"disciplineid,omitempty" example:"DDD"`
	Disciplinecode    *string `json:"disciplinecode,omitempty" example:"SP"`
	Catcode           *string `json:"catcode,omitempty" example:"WC"`
	Catcode2          *string `json:"catcode2,omitempty"`
	Catcode3          *string `json:"catcode3,omitempty"`
	Catcode4          *string `json:"catcode4,omitempty"`
	Gender            *string `json:"gender,omitempty" example:"M"`
	Racedate          *string `json:"racedate,omitempty" format:"date" example:"2025-02-14"`
	Starteventdate    *string `json:"starteventdate,omitempty" format:"date" example:"2025-02-13"`
	Description       *string `json:"description,omitempty" example:"World Cup Sprint (updated)"`
	Place             *string `json:"place,omitempty" example:"Lahti"`
	Nationcode        *string `json:"nationcode,omitempty" example:"FIN"`
	Receiveddate      *string `json:"receiveddate,omitempty" format:"date-time"`
	Validdate         *string `json:"validdate,omitempty" format:"date-time"`
	Td1id             *int32  `json:"td1id,omitempty"`
	Td1name           *string `json:"td1name,omitempty"`
	Td1nation         *string `json:"td1nation,omitempty"`
	Td1code           *int32  `json:"td1code,omitempty"`
	Td2id             *int32  `json:"td2id,omitempty"`
	Td2name           *string `json:"td2name,omitempty"`
	Td2nation         *string `json:"td2nation,omitempty"`
	Td2code           *int32  `json:"td2code,omitempty"`
	Calstatuscode     *string `json:"calstatuscode,omitempty"`
	Procstatuscode    *string `json:"procstatuscode,omitempty"`
	Displaystatus     *string `json:"displaystatus,omitempty"`
	Fisinterncomment  *string `json:"fisinterncomment,omitempty"`
	Webcomment        *string `json:"webcomment,omitempty"`
	Pursuit           *string `json:"pursuit,omitempty"`
	Masse             *string `json:"masse,omitempty"`
	Relay             *string `json:"relay,omitempty"`
	Distance          *string `json:"distance,omitempty"`
	Hill              *string `json:"hill,omitempty"`
	Style             *string `json:"style,omitempty"`
	Qualif            *string `json:"qualif,omitempty"`
	Finale            *string `json:"finale,omitempty"`
	Homol             *string `json:"homol,omitempty"`
	Published         *int32  `json:"published,omitempty" example:"1"`
	Validforfispoints *int32  `json:"validforfispoints,omitempty" example:"1"`
	Usedfislist       *string `json:"usedfislist,omitempty"`
	Tolist            *string `json:"tolist,omitempty"`
	Discforlistcode   *string `json:"discforlistcode,omitempty"`
	Calculatedpenalty *string `json:"calculatedpenalty,omitempty"`
	Appliedpenalty    *string `json:"appliedpenalty,omitempty"`
	Appliedscala      *string `json:"appliedscala,omitempty"`
	Penscafixed       *string `json:"penscafixed,omitempty"`
	Version           *int32  `json:"version,omitempty"`
	Nationraceid      *int32  `json:"nationraceid,omitempty"`
	Provraceid        *int32  `json:"provraceid,omitempty"`
	Msql7evid         *int32  `json:"msql7evid,omitempty"`
	Mssql7id          *int32  `json:"mssql7id,omitempty"`
	Topbanner         *string `json:"topbanner,omitempty"`
	Bottombanner      *string `json:"bottombanner,omitempty"`
	Gallery           *string `json:"gallery,omitempty"`
	Indi              *int32  `json:"indi,omitempty"`
	Team              *int32  `json:"team,omitempty"`
	Tabcount          *int32  `json:"tabcount,omitempty"`
	Columncount       *int32  `json:"columncount,omitempty"`
	Level             *string `json:"level,omitempty"`
	Hloc1             *string `json:"hloc1,omitempty"`
	Hloc2             *string `json:"hloc2,omitempty"`
	Hloc3             *string `json:"hloc3,omitempty"`
	Hcet1             *string `json:"hcet1,omitempty"`
	Hcet2             *string `json:"hcet2,omitempty"`
	Hcet3             *string `json:"hcet3,omitempty"`
	Live              *int32  `json:"live,omitempty"`
	Livestatus1       *string `json:"livestatus1,omitempty"`
	Livestatus2       *string `json:"livestatus2,omitempty"`
	Livestatus3       *string `json:"livestatus3,omitempty"`
	Liveinfo1         *string `json:"liveinfo1,omitempty"`
	Liveinfo2         *string `json:"liveinfo2,omitempty"`
	Liveinfo3         *string `json:"liveinfo3,omitempty"`
	Passwd            *string `json:"passwd,omitempty"`
	Results           *int32  `json:"results,omitempty"`
	Pdf               *int32  `json:"pdf,omitempty"`
	Noepr             *int32  `json:"noepr,omitempty"`
	Tddoc             *int32  `json:"tddoc,omitempty"`
	Timingreport      *int32  `json:"timingreport,omitempty"`
	SpecialCupPoints  *int32  `json:"special_cup_points,omitempty"`
	SkipWcsl          *int32  `json:"skip_wcsl,omitempty"`
	Validforowg       *int32  `json:"validforowg,omitempty"`
	Lastupdate        *string `json:"lastupdate,omitempty" format:"date-time" example:"2025-02-15T08:00:00Z"`
}

type FISUpdateRaceJPExample

type FISUpdateRaceJPExample struct {
	Raceid            int32   `json:"raceid" validate:"required" example:"234567"`
	Eventid           *int32  `json:"eventid,omitempty" example:"8901"`
	Seasoncode        *int32  `json:"seasoncode,omitempty" example:"2027"`
	Racecodex         *int32  `json:"racecodex,omitempty" example:"2001"`
	Disciplineid      *string `json:"disciplineid,omitempty" example:"HS140"`
	Disciplinecode    *string `json:"disciplinecode,omitempty" example:"LH"`
	Catcode           *string `json:"catcode,omitempty" example:"WC"`
	Catcode2          *string `json:"catcode2,omitempty"`
	Catcode3          *string `json:"catcode3,omitempty"`
	Catcode4          *string `json:"catcode4,omitempty"`
	Gender            *string `json:"gender,omitempty" example:"M"`
	Racedate          *string `json:"racedate,omitempty" format:"date" example:"2025-01-25"`
	Starteventdate    *string `json:"starteventdate,omitempty" format:"date" example:"2025-01-24"`
	Description       *string `json:"description,omitempty" example:"World Cup HS140 Individual (updated)"`
	Place             *string `json:"place,omitempty" example:"Planica"`
	Nationcode        *string `json:"nationcode,omitempty" example:"SLO"`
	Receiveddate      *string `json:"receiveddate,omitempty" format:"date-time"`
	Td1id             *int32  `json:"td1id,omitempty"`
	Td1name           *string `json:"td1name,omitempty"`
	Td1nation         *string `json:"td1nation,omitempty"`
	Td1code           *int32  `json:"td1code,omitempty"`
	Td2id             *int32  `json:"td2id,omitempty"`
	Td2name           *string `json:"td2name,omitempty"`
	Td2nation         *string `json:"td2nation,omitempty"`
	Td2code           *int32  `json:"td2code,omitempty"`
	Calstatuscode     *string `json:"calstatuscode,omitempty"`
	Procstatuscode    *string `json:"procstatuscode,omitempty"`
	Pursuit           *string `json:"pursuit,omitempty"`
	Masse             *string `json:"masse,omitempty"`
	Relay             *string `json:"relay,omitempty"`
	Distance          *string `json:"distance,omitempty"`
	Hill              *int32  `json:"hill,omitempty" example:"140"`
	Style             *string `json:"style,omitempty"`
	Qualif            *string `json:"qualif,omitempty"`
	Finale            *string `json:"finale,omitempty"`
	Homol             *string `json:"homol,omitempty"`
	Webcomment        *string `json:"webcomment,omitempty"`
	Displaystatus     *string `json:"displaystatus,omitempty"`
	Fisinterncomment  *string `json:"fisinterncomment,omitempty"`
	Published         *int32  `json:"published,omitempty" example:"1"`
	Validforfispoints *int32  `json:"validforfispoints,omitempty" example:"1"`
	Usedfislist       *string `json:"usedfislist,omitempty"`
	Tolist            *string `json:"tolist,omitempty"`
	Discforlistcode   *string `json:"discforlistcode,omitempty"`
	Calculatedpenalty *string `json:"calculatedpenalty,omitempty"`
	Appliedpenalty    *string `json:"appliedpenalty,omitempty"`
	Appliedscala      *string `json:"appliedscala,omitempty"`
	Penscafixed       *string `json:"penscafixed,omitempty"`
	Version           *int32  `json:"version,omitempty"`
	Nationraceid      *int32  `json:"nationraceid,omitempty"`
	Provraceid        *int32  `json:"provraceid,omitempty"`
	Msql7evid         *int32  `json:"msql7evid,omitempty"`
	Mssql7id          *int32  `json:"mssql7id,omitempty"`
	Topbanner         *string `json:"topbanner,omitempty"`
	Bottombanner      *string `json:"bottombanner,omitempty"`
	Gallery           *string `json:"gallery,omitempty"`
	Indi              *int32  `json:"indi,omitempty"`
	Team              *int32  `json:"team,omitempty"`
	Tabcount          *int32  `json:"tabcount,omitempty"`
	Columncount       *int32  `json:"columncount,omitempty"`
	Level             *string `json:"level,omitempty"`
	Hloc1             *string `json:"hloc1,omitempty" format:"date-time" example:"2025-01-25T15:00:00Z"`
	Hloc2             *string `json:"hloc2,omitempty" format:"date-time" example:"2025-01-25T15:30:00Z"`
	Hloc3             *string `json:"hloc3,omitempty" format:"date-time" example:"2025-01-25T16:00:00Z"`
	Hcet1             *string `json:"hcet1,omitempty" format:"date-time" example:"2025-01-25T15:00:00Z"`
	Hcet2             *string `json:"hcet2,omitempty" format:"date-time" example:"2025-01-25T15:30:00Z"`
	Hcet3             *string `json:"hcet3,omitempty" format:"date-time" example:"2025-01-25T16:00:00Z"`
	Livestatus1       *string `json:"livestatus1,omitempty"`
	Livestatus2       *string `json:"livestatus2,omitempty"`
	Livestatus3       *string `json:"livestatus3,omitempty"`
	Liveinfo1         *string `json:"liveinfo1,omitempty"`
	Liveinfo2         *string `json:"liveinfo2,omitempty"`
	Liveinfo3         *string `json:"liveinfo3,omitempty"`
	Passwd            *string `json:"passwd,omitempty"`
	Validdate         *string `json:"validdate,omitempty" format:"date-time"`
	Noepr             *int32  `json:"noepr,omitempty"`
	Tddoc             *int32  `json:"tddoc,omitempty"`
	Timingreport      *int32  `json:"timingreport,omitempty"`
	SpecialCupPoints  *int32  `json:"special_cup_points,omitempty"`
	SkipWcsl          *int32  `json:"skip_wcsl,omitempty"`
	Validforowg       *string `json:"validforowg,omitempty"`
	Lastupdate        *string `json:"lastupdate,omitempty" format:"date-time" example:"2025-01-26T08:00:00Z"`
}

type FISUpdateRaceNKExample

type FISUpdateRaceNKExample struct {
	Raceid         int32   `json:"raceid" validate:"required" example:"8801"`
	Eventid        *int32  `json:"eventid,omitempty" example:"9001"`
	Seasoncode     *int32  `json:"seasoncode,omitempty" example:"2025"`
	Racecodex      *int32  `json:"racecodex,omitempty" example:"3001"`
	Disciplineid   *string `json:"disciplineid,omitempty" example:"NH10K"`
	Disciplinecode *string `json:"disciplinecode,omitempty" example:"NC"`
	Catcode        *string `json:"catcode,omitempty" example:"WC"`
	Catcode2       *string `json:"catcode2,omitempty"`
	Catcode3       *string `json:"catcode3,omitempty"`
	Catcode4       *string `json:"catcode4,omitempty"`
	Gender         *string `json:"gender,omitempty" example:"M"`
	Racedate       *string `json:"racedate,omitempty" format:"date" example:"2025-02-15"`
	Starteventdate *string `json:"starteventdate,omitempty" format:"date" example:"2025-02-14"`
	Description    *string `json:"description,omitempty" example:"World Cup NH 10 km (updated)"`
	Place          *string `json:"place,omitempty" example:"Seefeld"`
	Nationcode     *string `json:"nationcode,omitempty" example:"AUT"`

	Td1id          *int32  `json:"td1id,omitempty" example:"101"`
	Td1name        *string `json:"td1name,omitempty" example:"John Doe"`
	Td1nation      *string `json:"td1nation,omitempty" example:"AUT"`
	Td1code        *int32  `json:"td1code,omitempty" example:"1001"`
	Td2id          *int32  `json:"td2id,omitempty" example:"102"`
	Td2name        *string `json:"td2name,omitempty" example:"Jane Doe"`
	Td2nation      *string `json:"td2nation,omitempty" example:"GER"`
	Td2code        *int32  `json:"td2code,omitempty" example:"1002"`
	Calstatuscode  *string `json:"calstatuscode,omitempty" example:"OFF"`
	Procstatuscode *string `json:"procstatuscode,omitempty" example:"P"`

	Receiveddate *string `json:"receiveddate,omitempty" format:"date-time" example:"2025-02-10T10:00:00Z"`
	Pursuit      *string `json:"pursuit,omitempty"`
	Masse        *string `json:"masse,omitempty"`
	Relay        *string `json:"relay,omitempty"`
	Distance     *string `json:"distance,omitempty" example:"10km"`
	Hill         *int32  `json:"hill,omitempty" example:"109"`
	Style        *string `json:"style,omitempty" example:"FREE"`
	Qualif       *string `json:"qualif,omitempty" example:"Q"`
	Finale       *string `json:"finale,omitempty"`
	Homol        *string `json:"homol,omitempty"`

	Webcomment       *string `json:"webcomment,omitempty"`
	Displaystatus    *string `json:"displaystatus,omitempty" example:"OK"`
	Fisinterncomment *string `json:"fisinterncomment,omitempty"`

	Published         *int32  `json:"published,omitempty" example:"1"`
	Validforfispoints *int32  `json:"validforfispoints,omitempty" example:"1"`
	Usedfislist       *string `json:"usedfislist,omitempty"`
	Tolist            *string `json:"tolist,omitempty"`
	Discforlistcode   *string `json:"discforlistcode,omitempty"`
	Calculatedpenalty *string `json:"calculatedpenalty,omitempty"`
	Appliedpenalty    *string `json:"appliedpenalty,omitempty"`
	Appliedscala      *string `json:"appliedscala,omitempty"`
	Penscafixed       *string `json:"penscafixed,omitempty"`
	Version           *int32  `json:"version,omitempty" example:"1"`
	Nationraceid      *int32  `json:"nationraceid,omitempty" example:"0"`
	Provraceid        *int32  `json:"provraceid,omitempty" example:"0"`
	Msql7evid         *int32  `json:"msql7evid,omitempty" example:"0"`
	Mssql7id          *int32  `json:"mssql7id,omitempty" example:"0"`

	Topbanner    *string `json:"topbanner,omitempty"`
	Bottombanner *string `json:"bottombanner,omitempty"`
	Gallery      *string `json:"gallery,omitempty"`

	Indi        *int32  `json:"indi,omitempty" example:"1"`
	Team        *int32  `json:"team,omitempty" example:"0"`
	Tabcount    *int32  `json:"tabcount,omitempty" example:"0"`
	Columncount *int32  `json:"columncount,omitempty" example:"0"`
	Level       *string `json:"level,omitempty" example:"WC"`

	Hloc1 *string `json:"hloc1,omitempty" format:"date-time" example:"2025-02-15T09:30:00Z"`
	Hloc2 *string `json:"hloc2,omitempty" format:"date-time" example:"2025-02-15T10:00:00Z"`
	Hloc3 *string `json:"hloc3,omitempty" format:"date-time" example:"2025-02-15T10:30:00Z"`
	Hcet1 *string `json:"hcet1,omitempty" format:"date-time" example:"2025-02-15T11:00:00Z"`
	Hcet2 *string `json:"hcet2,omitempty" format:"date-time" example:"2025-02-15T11:30:00Z"`
	Hcet3 *string `json:"hcet3,omitempty" format:"date-time" example:"2025-02-15T12:00:00Z"`

	Live        *int32  `json:"live,omitempty" example:"1"`
	Livestatus1 *string `json:"livestatus1,omitempty" example:"LIVE"`
	Livestatus2 *string `json:"livestatus2,omitempty"`
	Livestatus3 *string `json:"livestatus3,omitempty"`
	Liveinfo1   *string `json:"liveinfo1,omitempty"`
	Liveinfo2   *string `json:"liveinfo2,omitempty"`
	Liveinfo3   *string `json:"liveinfo3,omitempty"`

	Passwd     *string `json:"passwd,omitempty"`

	Validdate    *string `json:"validdate,omitempty" format:"date-time" example:"2025-02-16T00:00:00Z"`
	Noepr        *int32  `json:"noepr,omitempty" example:"0"`
	Tddoc        *int32  `json:"tddoc,omitempty" example:"0"`
	Timingreport *int32  `json:"timingreport,omitempty" example:"0"`

	SpecialCupPoints *int32 `json:"special_cup_points,omitempty" example:"0"`
	SkipWcsl         *int32 `json:"skip_wcsl,omitempty" example:"0"`
	Validforowg      *int32 `json:"validforowg,omitempty" example:"1"`

	Lastupdate *string `json:"lastupdate,omitempty" format:"date-time" example:"2025-02-16T08:00:00Z"`
}

type FISUpdateResultCCExample

type FISUpdateResultCCExample = FISInsertResultCCExample

type FISUpdateResultJPExample

type FISUpdateResultJPExample = FISInsertResultJPExample

type FISUpdateResultNKExample

type FISUpdateResultNKExample = FISInsertResultNKExample

type ForbiddenError

type ForbiddenError struct {
	Error1 string `json:"error" example:"forbidden"`
}

type ForbiddenResponse

type ForbiddenResponse struct {
	Errors []ForbiddenError `json:"errors"`
}

403

type GarminDaily

type GarminDaily struct {
	Steps                              int     `json:"steps" example:"0"`
	StepsGoal                          int     `json:"stepsGoal" example:"10000"`
	SummaryID                          string  `json:"summaryId" example:"x32c7d85-67b65460-128f4-0"`
	ActivityType                       string  `json:"activityType" example:"GENERIC"`
	CalendarDate                       string  `json:"calendarDate" example:"2025-02-20"`
	BMRKilocalories                    int     `json:"bmrKilocalories" example:"1967"`
	DistanceInMeters                   float64 `json:"distanceInMeters" example:"0.0"`
	DurationInSeconds                  int     `json:"durationInSeconds" example:"76020"`
	FloorsClimbedGoal                  int     `json:"floorsClimbedGoal" example:"10"`
	ActiveKilocalories                 int     `json:"activeKilocalories" example:"0"`
	StartTimeInSeconds                 int64   `json:"startTimeInSeconds" example:"1740002400"`
	ActiveTimeInSeconds                int     `json:"activeTimeInSeconds" example:"0"`
	StartTimeOffsetInSeconds           int     `json:"startTimeOffsetInSeconds" example:"7200"`
	IntensityDurationGoalInSeconds     int     `json:"intensityDurationGoalInSeconds" example:"36000"`
	ModerateIntensityDurationInSeconds int     `json:"moderateIntensityDurationInSeconds" example:"0"`
	VigorousIntensityDurationInSeconds int     `json:"vigorousIntensityDurationInSeconds" example:"0"`
}

type GarminDailyExample

type GarminDailyExample struct {
	Steps        int    `json:"steps" example:"5000"`
	CalendarDate string `json:"calendarDate" example:"2025-06-12"`
}

type GarminData

type GarminData struct {
	Epochs  GarminEpoch `json:"epochs"`
	Dailies GarminDaily `json:"dailies"`
}

type GarminDataResponse

type GarminDataResponse struct {
	Data GarminData `json:"data"`
}

type GarminEpoch

type GarminEpoch struct {
	MET                   float64 `json:"met" example:"1.0"`
	Steps                 int     `json:"steps" example:"0"`
	Intensity             string  `json:"intensity" example:"SEDENTARY"`
	SummaryID             string  `json:"summaryId" example:"x32c7d85-67b67080-9"`
	ActivityType          string  `json:"activityType" example:"UNMONITORED"`
	DistanceInMeters      float64 `json:"distanceInMeters" example:"0.0"`
	DurationInSeconds     int     `json:"durationInSeconds" example:"900"`
	ActiveKilocalories    int     `json:"activeKilocalories" example:"0"`
	MaxMotionIntensity    float64 `json:"maxMotionIntensity" example:"0.0"`
	StartTimeInSeconds    int64   `json:"startTimeInSeconds" example:"1740009600"`
	ActiveTimeInSeconds   int     `json:"activeTimeInSeconds" example:"0"`
	MeanMotionIntensity   float64 `json:"meanMotionIntensity" example:"0.0"`
	StartTimeOffsetInSecs int     `json:"startTimeOffsetInSeconds" example:"7200"`
}

type GarminPayloadExample

type GarminPayloadExample struct {
	Dailies []GarminDailyExample `json:"dailies"`
}

type GarminPostDataInput

type GarminPostDataInput struct {
	UserID string               `json:"user_id" example:"f47ac10b-58cc-4372-a567-0e02b2c3d479"`
	Date   string               `json:"date" example:"2025-06-12"`
	Data   GarminPayloadExample `json:"data"`
}

type GarminStatusResponse

type GarminStatusResponse struct {
	Connected bool `json:"connected" example:"true"`
	Data      bool `json:"data" example:"true"`
}

type GarminToken

type GarminToken struct {
	AccessToken       string `json:"access_token" example:"abc123token"`
	AccessTokenSecret string `json:"access_token_secret" example:"shhh-keep-me-secret"`
}

type GarminTokenDetails

type GarminTokenDetails struct {
	AccessToken       string `json:"access_token" example:"a1f2b3c4-d5e6-7890-1234-56789abcdef0"`
	AccessTokenSecret string `json:"access_token_secret" example:"s3cr3tT0kenValu3XyZ123"`
	GarminUserID      string `json:"garmin_user_id" example:"d3a1c9e8-7b2f-4c99-b77e-8e67cd1a2b10"`
}

type GarminTokenExistsResponse

type GarminTokenExistsResponse struct {
	Exists bool `json:"exists" example:"true"`
}

type GarminTokenInput

type GarminTokenInput struct {
	UserID  string             `json:"user_id" example:"e19c1832-d7f3-4d65-90ea-33a3d7f6d6df"`
	Details GarminTokenDetails `json:"details"`
}

type GarminTokenResponse

type GarminTokenResponse struct {
	Token GarminToken `json:"token"`
}

type GarminTypesResponse

type GarminTypesResponse struct {
	Types []string `json:"types" example:"epochs, dailies, hrv"`
}

Garmin

type GarminUserIDResponse

type GarminUserIDResponse struct {
	UserID string `json:"user_id" example:"e19c1832-d7f3-4d65-90ea-33a3d7f6d6df"`
}

type HRZone

type HRZone struct {
	ExerciseID    string `json:"exercise_id" example:"2d4f6aee-b62c-408e-85e1-07bd78f383a7"`
	ZoneIndex     int32  `json:"zone_index" example:"2"`
	SecondsInZone int32  `json:"seconds_in_zone" example:"90"`
	LowerLimit    int32  `json:"lower_limit" example:"120"`
	UpperLimit    int32  `json:"upper_limit" example:"140"`
	CreatedAt     string `json:"created_at" example:"2024-07-21T08:00:00Z"`
	UpdatedAt     string `json:"updated_at" example:"2024-07-21T08:00:00Z"`
}

type HealthStatusResponse

type HealthStatusResponse struct {
	API           string `json:"api" example:"ok"`
	DBArchinisis  string `json:"db_archinisis" example:"ok"`
	DBAuth        string `json:"db_auth" example:"ok"`
	DBFIS         string `json:"db_fis" example:"ok"`
	DBKAMK        string `json:"db_kamk" example:"ok"`
	DBKlab        string `json:"db_klab" example:"ok"`
	DBTietoevry   string `json:"db_tietoevry" example:"ok"`
	DBUTV         string `json:"db_utv" example:"ok"`
	Env           string `json:"env" example:"development"`
	Redis         string `json:"redis" example:"ok"`
	UptimeSeconds int64  `json:"uptime_seconds" example:"149039"`
	Version       string `json:"version" example:"1.2.1"`
}

Health

type HeartRateData

type HeartRateData struct {
	BPM       int    `json:"bpm" example:"43"`
	Source    string `json:"source" example:"rest"`
	Timestamp string `json:"timestamp" example:"2023-12-01T00:00:43+00:00"`
}

type InternalServerError

type InternalServerError struct {
	Error1 string `json:"error" example:"the server encountered a problem"`
}

type InternalServerErrorResponse

type InternalServerErrorResponse struct {
	Errors []InternalServerError `json:"errors"`
}

500

type InvalidDateRange

type InvalidDateRange struct {
	Errors []UnprocessableEntityError `json:"errors"`
}

422 - OURA, Polar, Suunto, Garmin

type KamkAddInjuryRequest

type KamkAddInjuryRequest struct {
	UserID      int32  `json:"user_id" example:"27353728"`
	InjuryType  int32  `json:"injury_type" example:"1"`
	Severity    int32  `json:"severity" example:"3"`
	PainLevel   int32  `json:"pain_level" example:"7"`
	Description string `json:"description" example:"Left ankle sprain during training"`
	InjuryID    int32  `json:"injury_id" example:"2"`
	Meta        string `json:"meta" example:"phase=preseason"`
}

type KamkAddQuestionnaireRequest

type KamkAddQuestionnaireRequest struct {
	UserID    int32  `json:"user_id" example:"27353728"`
	QueryType int32  `json:"query_type" example:"1"`
	Answers   string `json:"answers" example:"{\"mood\":7,\"sleep\":8}"`
	Comment   string `json:"comment" example:"Felt good this morning"`
	Meta      string `json:"meta" example:"build=ios,v=2.3.1"`
}

type KamkCreateQuestionnaireResponse

type KamkCreateQuestionnaireResponse struct {
	ID int64 `json:"id" example:"123"`
}

type KamkInjuriesListResponse

type KamkInjuriesListResponse struct {
	Injuries []KamkInjuryItem `json:"injuries"`
}

type KamkInjuryItem

type KamkInjuryItem struct {
	UserID      int32   `json:"user_id" example:"27353728"`
	InjuryType  int32   `json:"injury_type" example:"1"`
	Severity    int32   `json:"severity" example:"3"`
	PainLevel   int32   `json:"pain_level" example:"7"`
	Description string  `json:"description" example:"Left ankle sprain during training"`
	DateStart   string  `json:"date_start" example:"2025-01-10T09:30:00Z"`
	Status      int32   `json:"status" example:"0"`
	DateEnd     *string `json:"date_end,omitempty" example:"2025-01-17T12:00:00Z"`
	InjuryID    int32   `json:"injury_id" example:"2"`
	Meta        string  `json:"meta" example:"phase=preseason"`
}

type KamkMarkRecoveredRequest

type KamkMarkRecoveredRequest struct {
	UserID   int32 `json:"user_id" example:"27353728"`
	InjuryID int32 `json:"injury_id" example:"2"`
}

type KamkMaxInjuryIDResponse

type KamkMaxInjuryIDResponse struct {
	ID int32 `json:"id" example:"3"`
}

type KamkQuestionnaireItem

type KamkQuestionnaireItem struct {
	ID        int64  `json:"id" example:"123"`
	UserID    int32  `json:"user_id" example:"27353728"`
	QueryType int32  `json:"query_type" example:"1"`
	Answers   string `json:"answers" example:"{\"mood\":7,\"sleep\":8}"`
	Comment   string `json:"comment" example:"Felt good this morning"`
	Timestamp string `json:"timestamp" example:"2025-10-20T09:30:00Z"`
	Meta      string `json:"meta" example:"build=ios,v=2.3.1"`
}

type KamkQuestionnairesListResponse

type KamkQuestionnairesListResponse struct {
	Questionnaires []KamkQuestionnaireItem `json:"questionnaires"`
}

type KamkUpdateQuestionnaireBody

type KamkUpdateQuestionnaireBody struct {
	Answers string `json:"answers" example:"{\"mood\":5,\"sleep\":6}"`
	Comment string `json:"comment" example:"A bit tired today"`
}

type KlabCustomer

type KlabCustomer struct {
	IdCustomer         *int32   `json:"idCustomer" example:"7842"`
	FirstName          *string  `json:"FirstName" example:"Mikael"`
	LastName           *string  `json:"LastName" example:"Järvinen"`
	IdGroups           *int32   `json:"idGroups,omitempty" example:"1205"`
	DOB                *string  `json:"DOB,omitempty" example:"1992-08-15"` // YYYY-MM-DD
	SEX                *int32   `json:"SEX,omitempty" example:"1"`
	DobYear            *int32   `json:"dob_year,omitempty" example:"1992"`
	DobMonth           *int32   `json:"dob_month,omitempty" example:"8"`
	DobDay             *int32   `json:"dob_day,omitempty" example:"15"`
	PidNumber          *string  `json:"pid_number,omitempty" example:"150892-123A"`
	Company            *string  `json:"company,omitempty" example:"Kuopio Sports Institute"`
	Occupation         *string  `json:"occupation,omitempty" example:"Athlete"`
	Education          *string  `json:"education,omitempty" example:"Bachelor"`
	Address            *string  `json:"address,omitempty" example:"Tulliportinkatu 12, Kuopio"`
	PhoneHome          *string  `json:"phone_home,omitempty" example:"+358-17-1234567"`
	PhoneWork          *string  `json:"phone_work,omitempty" example:"+358-17-7654321"`
	PhoneMobile        *string  `json:"phone_mobile,omitempty" example:"+358-40-1234567"`
	Faxno              *string  `json:"faxno,omitempty"`
	Email              *string  `json:"email,omitempty" example:"mikael.jarvinen@example.com"`
	Username           *string  `json:"username,omitempty" example:"mjarvinen"`
	Password           *string  `json:"password,omitempty" example:"securepass123"`
	Readonly           *int32   `json:"readonly,omitempty" example:"0"`
	Warnings           *int32   `json:"warnings,omitempty" example:"0"`
	AllowToSave        *int32   `json:"allow_to_save,omitempty" example:"1"`
	AllowToCloud       *int32   `json:"allow_to_cloud,omitempty" example:"1"`
	Flag2              *int32   `json:"flag2,omitempty" example:"0"`
	Idsport            *int32   `json:"idsport,omitempty" example:"42"`
	Medication         *string  `json:"medication,omitempty" example:"None"`
	Addinfo            *string  `json:"addinfo,omitempty" example:"Elite cross-country skier"`
	TeamName           *string  `json:"team_name,omitempty" example:"Finnish National Ski Team"`
	Add1               *int32   `json:"add1,omitempty" example:"1"`
	Athlete            *int32   `json:"athlete,omitempty" example:"1"`
	Add10              *string  `json:"add10,omitempty" example:"Field 10"`
	Add20              *string  `json:"add20,omitempty" example:"Field 20"`
	Updatemode         *int32   `json:"updatemode,omitempty" example:"1"`
	WeightKg           *float64 `json:"weight_kg,omitempty" example:"72.5"`
	HeightCm           *float64 `json:"height_cm,omitempty" example:"178.2"`
	DateModified       *float64 `json:"date_modified,omitempty" example:"1693478400.0"`
	RecomTestlevel     *int32   `json:"recom_testlevel,omitempty" example:"3"`
	CreatedBy          *int64   `json:"created_by,omitempty" example:"1001"`
	ModBy              *int64   `json:"mod_by,omitempty" example:"1001"`
	ModDate            *string  `json:"mod_date,omitempty" example:"2024-08-29T10:30:00"`     // RFC3339
	Deleted            *int32   `json:"deleted,omitempty" example:"0"`                        // smallint
	CreatedDate        *string  `json:"created_date,omitempty" example:"2024-08-15T14:22:00"` // RFC3339
	Modded             *int32   `json:"modded,omitempty" example:"0"`                         // smallint
	AllowAnonymousData *string  `json:"allow_anonymous_data,omitempty" example:"0"`
	Locked             *int32   `json:"locked,omitempty" example:"0"` // smallint
	AllowToSprintai    *int32   `json:"allow_to_sprintai,omitempty" example:"1"`
	TosprintaiFrom     *string  `json:"tosprintai_from,omitempty" example:"2024-08-01"` // YYYY-MM-DD
	StatSent           *string  `json:"stat_sent,omitempty" example:"2024-08-20"`       // YYYY-MM-DD
	SporttiID          *string  `json:"sportti_id,omitempty" example:"27353728"`
}

type KlabCustomerResponse

type KlabCustomerResponse struct {
	Idcustomer         int32    `json:"idcustomer" example:"7842"`
	Firstname          string   `json:"firstname" example:"Mikael"`
	Lastname           string   `json:"lastname" example:"Järvinen"`
	Idgroups           *int32   `json:"idgroups,omitempty" example:"1205"`
	Dob                *string  `json:"dob,omitempty" example:"1992-08-15"` // date (YYYY-MM-DD)
	Sex                *int32   `json:"sex,omitempty" example:"1"`
	DobYear            *int32   `json:"dob_year,omitempty" example:"1992"`
	DobMonth           *int32   `json:"dob_month,omitempty" example:"8"`
	DobDay             *int32   `json:"dob_day,omitempty" example:"15"`
	PidNumber          *string  `json:"pid_number,omitempty" example:"150892-123A"`
	Company            *string  `json:"company,omitempty" example:"Kuopio Sports Institute"`
	Occupation         *string  `json:"occupation,omitempty" example:"Athlete"`
	Education          *string  `json:"education,omitempty" example:"Bachelor"`
	Address            *string  `json:"address,omitempty" example:"Tulliportinkatu 12, Kuopio"`
	PhoneHome          *string  `json:"phone_home,omitempty" example:"+358-17-1234567"`
	PhoneWork          *string  `json:"phone_work,omitempty" example:"+358-17-7654321"`
	PhoneMobile        *string  `json:"phone_mobile,omitempty" example:"+358-40-1234567"`
	Faxno              *string  `json:"faxno,omitempty"`
	Email              *string  `json:"email,omitempty" example:"mikael.jarvinen@example.com"`
	Username           *string  `json:"username,omitempty" example:"mjarvinen"`
	Password           *string  `json:"password,omitempty" example:"securepass123"`
	Readonly           *int32   `json:"readonly,omitempty" example:"0"`
	Warnings           *int32   `json:"warnings,omitempty" example:"0"`
	AllowToSave        *int32   `json:"allow_to_save,omitempty" example:"1"`
	AllowToCloud       *int32   `json:"allow_to_cloud,omitempty" example:"1"`
	Flag2              *int32   `json:"flag2,omitempty" example:"0"`
	Idsport            *int32   `json:"idsport,omitempty" example:"42"`
	Medication         *string  `json:"medication,omitempty" example:"None"`
	Addinfo            *string  `json:"addinfo,omitempty" example:"Elite cross-country skier"`
	TeamName           *string  `json:"team_name,omitempty" example:"Finnish National Ski Team"`
	Add1               *int32   `json:"add1,omitempty" example:"1"`
	Athlete            *int32   `json:"athlete,omitempty" example:"1"`
	Add10              *string  `json:"add10,omitempty" example:"Field 10"`
	Add20              *string  `json:"add20,omitempty" example:"Field 20"`
	Updatemode         *int32   `json:"updatemode,omitempty" example:"1"`
	WeightKg           *float64 `json:"weight_kg,omitempty" example:"72.5"`
	HeightCm           *float64 `json:"height_cm,omitempty" example:"178.2"`
	DateModified       *float64 `json:"date_modified,omitempty" example:"1693478400.0"` // double precision
	RecomTestlevel     *int32   `json:"recom_testlevel,omitempty" example:"3"`
	CreatedBy          *int64   `json:"created_by,omitempty" example:"1001"`
	ModBy              *int64   `json:"mod_by,omitempty" example:"1001"`
	ModDate            *string  `json:"mod_date,omitempty" example:"2024-08-29T10:30:00"`     // timestamp (RFC3339)
	Deleted            *int32   `json:"deleted,omitempty" example:"0"`                        // smallint -> int32 in JSON
	CreatedDate        *string  `json:"created_date,omitempty" example:"2024-08-15T14:22:00"` // timestamp (RFC3339)
	Modded             *int32   `json:"modded,omitempty" example:"0"`                         // smallint -> int32 in JSON
	AllowAnonymousData *string  `json:"allow_anonymous_data,omitempty" example:"0"`
	Locked             *int32   `json:"locked,omitempty" example:"0"` // smallint -> int32
	AllowToSprintai    *int32   `json:"allow_to_sprintai,omitempty" example:"1"`
	TosprintaiFrom     *string  `json:"tosprintai_from,omitempty" example:"2024-08-01"` // date (YYYY-MM-DD)
	StatSent           *string  `json:"stat_sent,omitempty" example:"2024-08-20"`       // date (YYYY-MM-DD)
	SporttiID          *string  `json:"sportti_id,omitempty" example:"27353728"`        // varchar(64)
}

KlabCustomerResponse mirrors public.customer (51 columns)

type KlabDataBulkDoc

type KlabDataBulkDoc struct {
	Customer27353728 KlabDataBundle `json:"27353728"`
}

Updated to show multiple entries in arrays

type KlabDataBundle

type KlabDataBundle struct {
	Customer        []KlabCustomer    `json:"customer,omitempty"`
	MeasurementList []KlabMeasurement `json:"measurement_list,omitempty"`
	DirTest         []KlabDirTest     `json:"dirtest,omitempty"`
	DirTestSteps    []KlabDirTestStep `json:"dirteststeps,omitempty"`
	DirReport       []KlabDirReport   `json:"dirreport,omitempty"`
	DirRawData      []KlabDirRawData  `json:"dirrawdata,omitempty"`
	DirResults      []KlabDirResults  `json:"dirresults,omitempty"`
}

type KlabDataResponse

type KlabDataResponse struct {
	SporttiID    int32             `json:"sportti_id" example:"27353728"`
	Measurements []KlabMeasurement `json:"measurements"`
	DirTest      []KlabDirTest     `json:"dirtest"`
	DirTestSteps []KlabDirTestStep `json:"dirteststeps"`
	DirReport    []KlabDirReport   `json:"dirreport"`
	DirRawData   []KlabDirRawData  `json:"dirrawdata"`
	DirResults   []KlabDirResults  `json:"dirresults"`
}

type KlabDirRawData

type KlabDirRawData struct {
	IdDirRawData  *int32  `json:"idDirRawData" example:"444856"`
	IdMeasurement *int32  `json:"idMeasurement" example:"888423"`
	RawData       *string `json:"rawdata,omitempty" example:"180;95;1250;17200;1020"`
	ColumnData    *string `json:"columndata,omitempty" example:"Time;HR;VO2;VO2kg;VCO2"`
	Info          *string `json:"info,omitempty" example:"VO2 Max Raw Data"`
	UnitsData     *string `json:"unitsdata,omitempty" example:"s;bpm;ml/min;ml/kg/min;ml/min"`
	CreatedBy     *int64  `json:"created_by,omitempty" example:"1001"`
	ModBy         *int64  `json:"mod_by,omitempty" example:"1001"`
	ModDate       *string `json:"mod_date,omitempty" example:"2024-08-29T10:30:00"`     // RFC3339
	Deleted       *int32  `json:"deleted,omitempty" example:"0"`                        // smallint
	CreatedDate   *string `json:"created_date,omitempty" example:"2024-08-29T10:30:00"` // RFC3339
	Modded        *int32  `json:"modded,omitempty" example:"0"`                         // smallint
}

type KlabDirReport

type KlabDirReport struct {
	Iddirreport   *int32  `json:"iddirreport" example:"555852"`
	PageInstr     *string `json:"page_instructions,omitempty" example:"otsake=Training\\r\\nlabel_vo2max=VO2 Max"`
	Idmeasurement *int32  `json:"idmeasurement,omitempty" example:"888423"`
	TemplateRec   *int32  `json:"template_rec,omitempty" example:"1"`
	LibrecName    *string `json:"librec_name,omitempty" example:"VO2Max_Template"`
	CreatedBy     *int64  `json:"created_by,omitempty" example:"1001"`
	ModBy         *int64  `json:"mod_by,omitempty" example:"1001"`
	ModDate       *string `json:"mod_date,omitempty" example:"2024-08-29T10:30:00"`     // RFC3339
	Deleted       *int32  `json:"deleted,omitempty" example:"0"`                        // smallint
	CreatedDate   *string `json:"created_date,omitempty" example:"2024-08-29T10:30:00"` // RFC3339
	Modded        *int32  `json:"modded,omitempty" example:"0"`                         // smallint
}

type KlabDirResults

type KlabDirResults struct {
	Iddirresults       *int32   `json:"iddirresults" example:"333421"`
	Idmeasurement      *int32   `json:"idmeasurement" example:"888423"`
	MaxVo2mlkgmin      *float64 `json:"max_vo2mlkgmin,omitempty" example:"68.5"`
	MaxVo2mlmin        *float64 `json:"max_vo2mlmin,omitempty" example:"4965.25"`
	MaxVo2             *float64 `json:"max_vo2,omitempty" example:"68.5"`
	MaxHr              *float64 `json:"max_hr,omitempty" example:"192.0"`
	MaxSpeed           *float64 `json:"max_speed,omitempty" example:"0.0"`
	MaxPace            *float64 `json:"max_pace,omitempty" example:"0.0"`
	MaxP               *float64 `json:"max_p,omitempty" example:"375.0"`
	MaxPkg             *float64 `json:"max_pkg,omitempty" example:"5.17"`
	MaxAngle           *float64 `json:"max_angle,omitempty" example:"0.0"`
	MaxLac             *float64 `json:"max_lac,omitempty" example:"8.9"`
	MaxAdd1            *float64 `json:"max_add1,omitempty"`
	MaxAdd2            *float64 `json:"max_add2,omitempty"`
	MaxAdd3            *float64 `json:"max_add3,omitempty"`
	LacAnkVo2mlkgmin   *float64 `json:"lac_ank_vo2mlkgmin,omitempty" example:"45.2"`
	LacAnkVo2mlmin     *float64 `json:"lac_ank_vo2mlmin,omitempty" example:"3277.0"`
	LacAnkVo2          *float64 `json:"lac_ank_vo2,omitempty" example:"45.2"`
	LacAnkVo2pr        *float64 `json:"lac_ank_vo2pr,omitempty" example:"66.0"`
	LacAnkHr           *float64 `json:"lac_ank_hr,omitempty" example:"150.0"`
	LacAnkSpeed        *float64 `json:"lac_ank_speed,omitempty" example:"0.0"`
	LacAnkPace         *float64 `json:"lac_ank_pace,omitempty" example:"0.0"`
	LacAnkP            *float64 `json:"lac_ank_p,omitempty" example:"185.5"`
	LacAnkPkg          *float64 `json:"lac_ank_pkg,omitempty" example:"2.56"`
	LacAnkAngle        *float64 `json:"lac_ank_angle,omitempty" example:"0.0"`
	LacAnkLac          *float64 `json:"lac_ank_lac,omitempty" example:"2.0"`
	LacAnkAdd1         *float64 `json:"lac_ank_add1,omitempty"`
	LacAnkAdd2         *float64 `json:"lac_ank_add2,omitempty"`
	LacAnkAdd3         *float64 `json:"lac_ank_add3,omitempty"`
	LacAerkVo2mlkgmin  *float64 `json:"lac_aerk_vo2mlkgmin,omitempty" example:"58.8"`
	LacAerkVo2mlmin    *float64 `json:"lac_aerk_vo2mlmin,omitempty" example:"4263.0"`
	LacAerkVo2         *float64 `json:"lac_aerk_vo2,omitempty" example:"58.8"`
	LacAerkVo2pr       *float64 `json:"lac_aerk_vo2pr,omitempty" example:"85.8"`
	LacAerkHr          *float64 `json:"lac_aerk_hr,omitempty" example:"175.0"`
	LacAerkSpeed       *float64 `json:"lac_aerk_speed,omitempty" example:"0.0"`
	LacAerkPace        *float64 `json:"lac_aerk_pace,omitempty" example:"0.0"`
	LacAerkP           *float64 `json:"lac_aerk_p,omitempty" example:"245.8"`
	LacAerkPkg         *float64 `json:"lac_aerk_pkg,omitempty" example:"3.39"`
	LacAerkAngle       *float64 `json:"lac_aerk_angle,omitempty" example:"0.0"`
	LacAerkLac         *float64 `json:"lac_aerk_lac,omitempty" example:"4.0"`
	LacAerkAdd1        *float64 `json:"lac_aerk_add1,omitempty"`
	LacAerkAdd2        *float64 `json:"lac_aerk_add2,omitempty"`
	LacAerkAdd3        *float64 `json:"lac_aerk_add3,omitempty"`
	VentAnkVo2mlkgmin  *float64 `json:"vent_ank_vo2mlkgmin,omitempty" example:"46.1"`
	VentAnkVo2mlmin    *float64 `json:"vent_ank_vo2mlmin,omitempty" example:"3342.25"`
	VentAnkVo2         *float64 `json:"vent_ank_vo2,omitempty" example:"46.1"`
	VentAnkVo2pr       *float64 `json:"vent_ank_vo2pr,omitempty" example:"67.3"`
	VentAnkHr          *float64 `json:"vent_ank_hr,omitempty" example:"152.0"`
	VentAnkSpeed       *float64 `json:"vent_ank_speed,omitempty" example:"0.0"`
	VentAnkPace        *float64 `json:"vent_ank_pace,omitempty" example:"0.0"`
	VentAnkP           *float64 `json:"vent_ank_p,omitempty" example:"190.2"`
	VentAnkPkg         *float64 `json:"vent_ank_pkg,omitempty" example:"2.62"`
	VentAnkAngle       *float64 `json:"vent_ank_angle,omitempty" example:"0.0"`
	VentAnkLac         *float64 `json:"vent_ank_lac,omitempty" example:"2.1"`
	VentAnkAdd1        *float64 `json:"vent_ank_add1,omitempty"`
	VentAnkAdd2        *float64 `json:"vent_ank_add2,omitempty"`
	VentAnkAdd3        *float64 `json:"vent_ank_add3,omitempty"`
	VentAerkVo2mlkgmin *float64 `json:"vent_aerk_vo2mlkgmin,omitempty" example:"59.5"`
	VentAerkVo2mlmin   *float64 `json:"vent_aerk_vo2mlmin,omitempty" example:"4313.75"`
	VentAerkVo2        *float64 `json:"vent_aerk_vo2,omitempty" example:"59.5"`
	VentAerkVo2pr      *float64 `json:"vent_aerk_vo2pr,omitempty" example:"86.9"`
	VentAerkHr         *float64 `json:"vent_aerk_hr,omitempty" example:"177.0"`
	VentAerkSpeed      *float64 `json:"vent_aerk_speed,omitempty" example:"0.0"`
	VentAerkPace       *float64 `json:"vent_aerk_pace,omitempty" example:"0.0"`
	VentAerkP          *float64 `json:"vent_aerk_p,omitempty" example:"250.1"`
	VentAerkPkg        *float64 `json:"vent_aerk_pkg,omitempty" example:"3.45"`
	VentAerkAngle      *float64 `json:"vent_aerk_angle,omitempty" example:"0.0"`
	VentAerkLac        *float64 `json:"vent_aerk_lac,omitempty" example:"4.2"`
	VentAerkAdd1       *float64 `json:"vent_aerk_add1,omitempty"`
	VentAerkAdd2       *float64 `json:"vent_aerk_add2,omitempty"`
	VentAerkAdd3       *float64 `json:"vent_aerk_add3,omitempty"`
	CreatedBy          *int64   `json:"created_by,omitempty" example:"1001"`
	ModBy              *int64   `json:"mod_by,omitempty" example:"1001"`
	ModDate            *string  `json:"mod_date,omitempty" example:"2024-08-29T10:30:00"`     // RFC3339
	Deleted            *int32   `json:"deleted,omitempty" example:"0"`                        // smallint
	CreatedDate        *string  `json:"created_date,omitempty" example:"2024-08-29T10:30:00"` // RFC3339
	Modded             *int32   `json:"modded,omitempty" example:"0"`                         // smallint
}

type KlabDirTest

type KlabDirTest struct {
	IdDirTest     *int32   `json:"idDirTest" example:"777456"`
	IdMeasurement *int32   `json:"idMeasurement" example:"888423"`
	MeasCols      *string  `json:"MeasCols,omitempty" example:"col2measindex=1\\r\\ncol2name=VO2"`
	WeightKg      *float64 `json:"weightkg,omitempty" example:"72.5"`
	HeightCm      *float64 `json:"heightcm,omitempty" example:"178.2"`
	BMI           *float64 `json:"bmi,omitempty" example:"22.8"`
	FatPr         *float64 `json:"fat_pr,omitempty" example:"8.5"`
	FatP1         *float64 `json:"fat_p1,omitempty" example:"2.1"`
	FatP2         *float64 `json:"fat_p2,omitempty" example:"2.3"`
	FatP3         *float64 `json:"fat_p3,omitempty" example:"2.0"`
	FatP4         *float64 `json:"fat_p4,omitempty" example:"2.1"`
	FatStyle      *int32   `json:"fat_style,omitempty" example:"1"`
	FatEquip      *string  `json:"fat_equip,omitempty" example:"Calipers"`
	FVC           *float64 `json:"fvc,omitempty" example:"5.85"`
	FEV1          *float64 `json:"fev1,omitempty" example:"4.92"`
	AirPress      *float64 `json:"air_press,omitempty" example:"1013.2"`
	AirTemp       *float64 `json:"air_temp,omitempty" example:"21.5"`
	AirHumid      *float64 `json:"air_humid,omitempty" example:"45.2"`
	TestProtocol  *string  `json:"testprotocol,omitempty" example:"Incremental"`
	AirPressUnit  *int32   `json:"air_press_unit,omitempty" example:"1"`
	SettingsList  *string  `json:"settingslist,omitempty" example:"protocol=inc;start=100"`
	Lt1X          *float64 `json:"lt1_x,omitempty" example:"185.5"`
	Lt1Y          *float64 `json:"lt1_y,omitempty" example:"2.8"`
	Lt2X          *float64 `json:"lt2_x,omitempty" example:"245.8"`
	Lt2Y          *float64 `json:"lt2_y,omitempty" example:"4.2"`
	Vt1X          *float64 `json:"vt1_x,omitempty" example:"190.2"`
	Vt2X          *float64 `json:"vt2_x,omitempty" example:"250.1"`
	Vt1Y          *float64 `json:"vt1_y,omitempty" example:"42.5"`
	Vt2Y          *float64 `json:"vt2_y,omitempty" example:"58.9"`
	Lt1CalcX      *float64 `json:"lt1_calc_x,omitempty" example:"186.1"`
	Lt1CalcY      *float64 `json:"lt1_calc_y,omitempty" example:"2.82"`
	Lt2CalcX      *float64 `json:"lt2_calc_x,omitempty" example:"246.3"`
	Lt2CalcY      *float64 `json:"lt2_calc_y,omitempty" example:"4.18"`
	ProtocolModel *int32   `json:"protocolmodel,omitempty" example:"1"` // smallint
	TestType      *int32   `json:"testtype,omitempty" example:"1"`      // smallint
	ProtocolXVal  *int32   `json:"protocolxval,omitempty" example:"1"`  // smallint
	StepTime      *int32   `json:"steptime,omitempty" example:"180"`
	WRest         *int32   `json:"w_rest,omitempty" example:"50"` // smallint
	CreatedBy     *int64   `json:"created_by,omitempty" example:"1001"`
	ModBy         *int64   `json:"mod_by,omitempty" example:"1001"`
	ModDate       *string  `json:"mod_date,omitempty" example:"2024-08-29T10:30:00"`     // RFC3339
	Deleted       *int32   `json:"deleted,omitempty" example:"0"`                        // smallint
	CreatedDate   *string  `json:"created_date,omitempty" example:"2024-08-29T10:30:00"` // RFC3339
	Modded        *int32   `json:"modded,omitempty" example:"0"`                         // smallint
	NoRawData     *int32   `json:"norawdata,omitempty" example:"0"`                      // smallint
}

type KlabDirTestStep

type KlabDirTestStep struct {
	Iddirteststeps *int32   `json:"iddirteststeps" example:"666621"`
	Idmeasurement  *int32   `json:"idmeasurement" example:"888423"`
	Stepno         *int32   `json:"stepno,omitempty" example:"0"`
	AnaTime        *int32   `json:"ana_time,omitempty" example:"0"`
	TimeStop       *float64 `json:"timestop,omitempty" example:"180.0"`
	Speed          *float64 `json:"speed,omitempty" example:"0.0"`
	Pace           *float64 `json:"pace,omitempty" example:"0.0"`
	Angle          *float64 `json:"angle,omitempty" example:"0.0"`
	Elev           *float64 `json:"elev,omitempty" example:"100.0"`
	Vo2calc        *float64 `json:"vo2calc,omitempty" example:"12.5"`
	TTot           *float64 `json:"t_tot,omitempty" example:"180.0"`
	TEx            *float64 `json:"t_ex,omitempty" example:"175.2"`
	Fico2          *float64 `json:"fico2,omitempty" example:"0.04"`
	Fio2           *float64 `json:"fio2,omitempty" example:"20.93"`
	Feco2          *float64 `json:"feco2,omitempty" example:"3.2"`
	Feo2           *float64 `json:"feo2,omitempty" example:"17.8"`
	Vde            *float64 `json:"vde,omitempty" example:"28.5"`
	Vco2           *float64 `json:"vco2,omitempty" example:"1.02"`
	Vo2            *float64 `json:"vo2,omitempty" example:"1.25"`
	Bf             *float64 `json:"bf,omitempty" example:"18.5"`
	Ve             *float64 `json:"ve,omitempty" example:"32.1"`
	Petco2         *float64 `json:"petco2,omitempty" example:"38.2"`
	Peto2          *float64 `json:"peto2,omitempty" example:"102.5"`
	Vo2kg          *float64 `json:"vo2kg,omitempty" example:"17.2"`
	Re             *float64 `json:"re,omitempty" example:"0.82"`
	Hr             *float64 `json:"hr,omitempty" example:"95.0"`
	La             *float64 `json:"la,omitempty" example:"1.2"`
	Rer            *float64 `json:"rer,omitempty" example:"0.82"`
	VeStpd         *float64 `json:"ve_stpd,omitempty" example:"30.8"`
	Veo2           *float64 `json:"veo2,omitempty" example:"25.6"`
	Veco2          *float64 `json:"veco2,omitempty" example:"31.2"`
	Tv             *float64 `json:"tv,omitempty" example:"1.74"`
	EeAe           *float64 `json:"ee_ae,omitempty" example:"5.8"`
	LaVo2          *float64 `json:"la_vo2,omitempty" example:"0.96"`
	O2pulse        *float64 `json:"o2pulse,omitempty" example:"13.2"`
	VdeTv          *float64 `json:"vde_tv,omitempty" example:"16.4"`
	Va             *float64 `json:"va,omitempty" example:"28.1"`
	O2sa           *float64 `json:"o2sa,omitempty" example:"98.5"`
	Rpe            *float64 `json:"rpe,omitempty" example:"6.0"`
	BpSys          *float64 `json:"bp_sys,omitempty" example:"120.0"`
	BpDia          *float64 `json:"bp_dia,omitempty" example:"80.0"`
	Own1           *float64 `json:"own1,omitempty"`
	Own2           *float64 `json:"own2,omitempty"`
	Own3           *float64 `json:"own3,omitempty"`
	Own4           *float64 `json:"own4,omitempty"`
	Own5           *float64 `json:"own5,omitempty"`
	StepIsRest     *int32   `json:"step_is_rest,omitempty" example:"1"`
	StepIs30max    *int32   `json:"step_is_30max,omitempty" example:"0"`
	StepIs60max    *int32   `json:"step_is_60max,omitempty" example:"0"`
	StepIsRec      *int32   `json:"step_is_rec,omitempty" example:"0"`
	CalcStart      *int32   `json:"calc_start,omitempty" example:"60"`
	CalcEnd        *int32   `json:"calc_end,omitempty" example:"180"`
	Comments       *string  `json:"comments,omitempty" example:"Rest phase"`
	TimeStart      *float64 `json:"timestart,omitempty" example:"0.0"`
	Duration       *float64 `json:"duration,omitempty" example:"180.0"`
	Eco            *float64 `json:"eco,omitempty" example:"4.2"`
	P              *float64 `json:"p,omitempty" example:"100.0"`
	Wkg            *float64 `json:"wkg,omitempty" example:"1.38"`
	Vo230s         *float64 `json:"vo2_30s,omitempty" example:"17.1"`
	Vo2Pr          *float64 `json:"vo2_pr,omitempty" example:"25.2"`
	StepIsLast     *int32   `json:"step_is_last,omitempty" example:"0"`
	Deleted        *int32   `json:"deleted,omitempty" example:"0"` // smallint
	CreatedBy      *int64   `json:"created_by,omitempty" example:"1001"`
	ModBy          *int64   `json:"mod_by,omitempty" example:"1001"`
	ModDate        *string  `json:"mod_date,omitempty" example:"2024-08-29T10:30:00"`     // RFC3339
	CreatedDate    *string  `json:"created_date,omitempty" example:"2024-08-29T10:30:00"` // RFC3339
	Modded         *int32   `json:"modded,omitempty" example:"0"`                         // smallint
	Own6           *float64 `json:"own6,omitempty"`
	Own7           *float64 `json:"own7,omitempty"`
	Own8           *float64 `json:"own8,omitempty"`
	Own9           *float64 `json:"own9,omitempty"`
	Own10          *float64 `json:"own10,omitempty"`
	To2            *float64 `json:"to2,omitempty" example:"0.85"`
	Tco2           *float64 `json:"tco2,omitempty" example:"1.02"`
}

type KlabMeasurement

type KlabMeasurement struct {
	IdMeasurement  *int32  `json:"idMeasurement" example:"888423"`
	MeasName       *string `json:"MeasName,omitempty" example:"VO2 Max Test"`
	IdCustomer     *int32  `json:"idCustomer" example:"7842"`
	TableName      *string `json:"tableName,omitempty" example:"dirtest"`
	IdPatternDef   *string `json:"idpatterndef,omitempty" example:"pattern_vo2"`
	DoYear         *int32  `json:"do_year,omitempty" example:"2024"`
	DoMonth        *int32  `json:"do_month,omitempty" example:"8"`
	DoDay          *int32  `json:"do_day,omitempty" example:"29"`
	DoHour         *int32  `json:"do_hour,omitempty" example:"10"`
	DoMin          *int32  `json:"do_min,omitempty" example:"30"`
	SessionNo      *int32  `json:"sessionno,omitempty" example:"1"`
	Info           *string `json:"info,omitempty" example:"Pre-season assessment"`
	Measurements   *string `json:"measurements,omitempty" example:"Standard protocol"`
	GroupNotes     *string `json:"groupnotes,omitempty" example:"Group Alpha"`
	CbCharts       *string `json:"cbcharts,omitempty" example:"chart_1"`
	CbComments     *string `json:"cbcomments,omitempty" example:"Good performance"`
	CreatedBy      *int64  `json:"created_by,omitempty" example:"1001"`
	ModBy          *int64  `json:"mod_by,omitempty" example:"1001"`
	ModDate        *string `json:"mod_date,omitempty" example:"2024-08-29T10:30:00"`     // RFC3339
	Deleted        *int32  `json:"deleted,omitempty" example:"0"`                        // smallint
	CreatedDate    *string `json:"created_date,omitempty" example:"2024-08-29T10:30:00"` // RFC3339
	Modded         *int32  `json:"modded,omitempty" example:"0"`                         // smallint
	TestLocation   *string `json:"test_location,omitempty" example:"Lab A"`
	Keywords       *string `json:"keywords,omitempty" example:"VO2max, endurance"`
	TesterName     *string `json:"tester_name,omitempty" example:"Dr. Korhonen"`
	ModderName     *string `json:"modder_name,omitempty" example:"Dr. Korhonen"`
	MeasType       *int32  `json:"meastype,omitempty" example:"1"`
	SentToSprintAI *string `json:"sent_to_sprintai,omitempty" example:"2024-08-29T11:45:00"` // RFC3339
}

type KlabStatusResponse

type KlabStatusResponse struct {
	Connected bool `json:"connected" example:"true"`
}

type KlabTokenDetails

type KlabTokenDetails struct {
	SportID      int    `json:"sport_id" example:"51678043"`
	SuomisportID string `json:"suomisport_id" example:"138538"`
}

type KlabTokenInput

type KlabTokenInput struct {
	UserID  string           `json:"user_id" example:"208e2ffb-ac68-4980-a8b6-b7e0136e4172"`
	Details KlabTokenDetails `json:"details"`
}

type LatestDataResponse

type LatestDataResponse struct {
	Device string     `json:"device" example:"garmin"`
	Date   string     `json:"date" example:"2025-06-12"`
	Data   DeviceData `json:"data"`
}

type NotFoundResponse

type NotFoundResponse struct {
	Error string `json:"error" example:"resource not found"`
}

type OuraDailyExample

type OuraDailyExample struct {
	ID    string `json:"id" example:"232b8559-9175-43f5-88c2-7f727b1f3ced"`
	Day   string `json:"day" example:"2021-12-10"`
	Steps int    `json:"steps" example:"1074"`
	Score int    `json:"score" example:"93"`
}

type OuraData

type OuraData struct {
	Sleep         []SleepData     `json:"sleep"`
	HeartRate     []HeartRateData `json:"heartrate"`
	DailyActivity []DailyActivity `json:"daily_activity"`
}

type OuraDataResponse

type OuraDataResponse struct {
	Data OuraData `json:"data"`
}

type OuraPayloadExample

type OuraPayloadExample struct {
	DailyActivity []OuraDailyExample `json:"daily_activity"`
}

type OuraPersonalInfo

type OuraPersonalInfo struct {
	ID            string  `json:"id" example:"a3f4d23bc10e4911b2878d23f09aa320"`
	Age           int     `json:"age" example:"38"`
	Email         *string `json:"email" example:"user42@example.com"`
	Height        float64 `json:"height" example:"1.75"`
	Weight        float64 `json:"weight" example:"76.5"`
	BiologicalSex string  `json:"biological_sex" example:"female"`
}

type OuraPostDataInput

type OuraPostDataInput struct {
	UserID string             `json:"user_id" example:"f47ac10b-58cc-4372-a567-0e02b2c3d479"`
	Date   string             `json:"date" example:"2025-06-12"`
	Data   OuraPayloadExample `json:"data"`
}

type OuraStatusResponse

type OuraStatusResponse struct {
	Connected bool `json:"connected" example:"true"`
	Data      bool `json:"data" example:"true"`
}

type OuraToken

type OuraToken struct {
	AccessToken string `json:"access_token" example:"abc123token"`
}

type OuraTokenByIDResponse

type OuraTokenByIDResponse struct {
	UserID string           `json:"user_id" example:"d5e1c624-2f39-4410-b9d6-842fc3226b7e"`
	Data   OuraTokenDetails `json:"data"`
}

type OuraTokenDetails

type OuraTokenDetails struct {
	AccessToken     string           `json:"access_token" example:"XYZ123ABC789TOKEN456"`
	RefreshToken    string           `json:"refresh_token" example:"REFRESH987XYZ654TOKEN"`
	PersonalInfo    OuraPersonalInfo `json:"personal_info"`
	TokenRefreshed  string           `json:"token_last_refreshed" example:"2025-07-10 12:30"`
	DataLastFetched string           `json:"data_last_fetched" example:"2025-07-11 08:45"`
}

type OuraTokenInput

type OuraTokenInput struct {
	UserID  string           `json:"user_id" example:"d5e1c624-2f39-4410-b9d6-842fc3226b7e"`
	Details OuraTokenDetails `json:"details"`
}

type OuraTokenResponse

type OuraTokenResponse struct {
	Token OuraToken `json:"token"`
}

type OuraTypesResponse

type OuraTypesResponse struct {
	Types []string `json:"types" example:"heartrate,sleep,daily_activity"`
}

type PolarAlertness

type PolarAlertness struct {
	Grade      float64 `json:"grade" example:"5.1"`
	GradeType  string  `json:"grade_type" example:"GRADE_TYPE_PRIMARY"`
	SleepType  string  `json:"sleep_type" example:"SLEEP_TYPE_PRIMARY"`
	ResultType string  `json:"result_type" example:"ALERTNESS_TYPE_HISTORY"`
}

type PolarAlertnessData

type PolarAlertnessData struct {
	Grade     float64 `json:"grade" example:"8.5"`
	Validity  string  `json:"validity" example:"VALIDITY_VALID"`
	GradeType string  `json:"grade_type" example:"GRADE_TYPE_PRIMARY"`
}

type PolarData

type PolarData struct {
	Alertness PolarAlertnessData `json:"alertness"`
	HeartRate PolarHeartRateData `json:"heart_rate"`
}

type PolarDataResponse

type PolarDataResponse struct {
	Data PolarData `json:"data"`
}

type PolarHeartRateData

type PolarHeartRateData struct {
	Date          string                 `json:"date" example:"2023-12-01"`
	HeartRateData []PolarHeartRateSample `json:"heart_rate_samples"`
}

type PolarHeartRateSample

type PolarHeartRateSample struct {
	HeartRate  int    `json:"heart_rate" example:"72"`
	SampleTime string `json:"sample_time" example:"00:10:00"`
}

type PolarPayloadExample

type PolarPayloadExample struct {
	Alertness PolarAlertness `json:"alertness"`
}

type PolarPostDataInput

type PolarPostDataInput struct {
	UserID string              `json:"user_id" example:"f47ac10b-58cc-4372-a567-0e02b2c3d479"`
	Date   string              `json:"date" example:"2025-06-12"`
	Data   PolarPayloadExample `json:"data"`
}

type PolarStatusResponse

type PolarStatusResponse struct {
	Connected bool `json:"connected" example:"true"`
	Data      bool `json:"data" example:"true"`
}

type PolarToken

type PolarToken struct {
	AccessToken string `json:"access_token" example:"abc123token"`
	XUserID     int    `json:"x_user_id" example:"45071318"`
}

type PolarTokenByIDResponse

type PolarTokenByIDResponse struct {
	UserID string            `json:"user_id" example:"208e2ffb-ac68-4980-a8a6-b7e0136e0798"`
	Data   PolarTokenDetails `json:"data"`
}

type PolarTokenDetails

type PolarTokenDetails struct {
	XUserID         int    `json:"x_user_id" example:"45071318"`
	AccessToken     string `json:"access_token" example:"abc123token"`
	ExpiresIn       int    `json:"expires_in" example:"315359999"`
	MemberID        string `json:"member_id" example:"7112b057-2b8d-47ab-a8f1-140dc09664cf"`
	TokenRefreshed  string `json:"token_last_refreshed" example:"2025-03-03 10:53"`
	DataLastFetched string `json:"data_last_fetched" example:"2025-06-18 10:54"`
}

type PolarTokenInput

type PolarTokenInput struct {
	UserID string            `json:"user_id" example:"208e2ffb-ac68-4980-a8a6-b7e0136e0798"`
	Data   PolarTokenDetails `json:"data"`
}

type PolarTokenResponse

type PolarTokenResponse struct {
	Token PolarToken `json:"token"`
}

type PolarTypesResponse

type PolarTypesResponse struct {
	Types []string `json:"types" example:"alertness,circadian_bedtime,heart_rate"`
}

type RaceReportSessionsResponse

type RaceReportSessionsResponse struct {
	RaceReport []int32 `json:"race_report" example:"101,102,103"`
}

type Sample

type Sample struct {
	ID            string    `json:"id" example:"3f28c7a1-2ea3-438c-9b35-099c4372da49"`
	UserID        string    `json:"user_id" example:"7cffe6e0-3f28-43b6-b511-d836d3a9f7b5"`
	ExerciseID    string    `json:"exercise_id" example:"2d4f6aee-b62c-408e-85e1-07bd78f383a7"`
	SampleType    string    `json:"sample_type" example:"heart_rate"`
	RecordingRate int32     `json:"recording_rate" example:"1"`
	Samples       []float64 `json:"samples"`
	Source        string    `json:"source" example:"garmin"`
}

type Section

type Section struct {
	ID          string  `json:"id" example:"1a2b3c4d-0000-0000-0000-111122223333"`
	UserID      string  `json:"user_id" example:"7cffe6e0-3f28-43b6-b511-d836d3a9f7b5"`
	ExerciseID  string  `json:"exercise_id" example:"2d4f6aee-b62c-408e-85e1-07bd78f383a7"`
	CreatedAt   string  `json:"created_at" example:"2024-07-21T08:00:00Z"`
	UpdatedAt   string  `json:"updated_at" example:"2024-07-21T08:05:00Z"`
	StartTime   string  `json:"start_time" example:"2024-07-21T08:10:00Z"`
	EndTime     string  `json:"end_time" example:"2024-07-21T08:30:00Z"`
	SectionType *string `json:"section_type" example:"warmup"`
	Name        *string `json:"name" example:"Warm-up"`
	Comment     *string `json:"comment" example:"Felt great"`
	Source      string  `json:"source" example:"polar"`
	RawID       *string `json:"raw_id" example:"abc-123"`
	RawData     *string `json:"raw_data" example:"{\"extra\":\"data\"}"`
}

type ServiceUnavailableError

type ServiceUnavailableError struct {
	Error1 string `json:"error" example:"database is unavailable"`
}

type ServiceUnavailableResponse

type ServiceUnavailableResponse struct {
	Errors []ServiceUnavailableError `json:"errors"`
}

503 - Service Unavailable

type SleepData

type SleepData struct {
	ID                string `json:"id" example:"82496435-af96-462e-90c9-806d38418e87"`
	Day               string `json:"day" example:"2023-12-01"`
	Type              string `json:"type" example:"long_sleep"`
	AwakeTime         int    `json:"awake_time" example:"1530"`
	DeepSleepDuration int    `json:"deep_sleep_duration" example:"6630"`
	AverageHeartRate  int    `json:"average_heart_rate" example:"47"`
	BedtimeStart      string `json:"bedtime_start" example:"2023-11-30T23:23:59+02:00"`
	BedtimeEnd        string `json:"bedtime_end" example:"2023-12-01T06:21:59+02:00"`
}

type SleepSample

type SleepSample struct {
	ID   string `json:"id" example:"123"`
	Day  string `json:"day" example:"2025-06-12"`
	Type string `json:"type" example:"long_sleep"`
}

type SourceCacheItem

type SourceCacheItem struct {
	Source string   `json:"source" example:"garmin"`
	Data   []string `json:"data" example:"hr,steps"`
}

type SourceCacheSingleResponse

type SourceCacheSingleResponse struct {
	Source string   `json:"source" example:"garmin"`
	Data   []string `json:"data" example:"hr,steps"`
}

type SourceCacheUpsertInput

type SourceCacheUpsertInput struct {
	Source string   `json:"source" example:"garmin"`
	Data   []string `json:"data" example:"hr,steps"`
}

type SportIDsResponse

type SportIDsResponse struct {
	SporttiIDs []string `json:"sportti_ids" example:"12345,67890,54321"`
}

type SuuntoData

type SuuntoData struct {
	Workout map[string]SuuntoWorkoutData `json:"workout"`
}

type SuuntoDataResponse

type SuuntoDataResponse struct {
	Data SuuntoData `json:"data"`
}

type SuuntoPayloadExample

type SuuntoPayloadExample struct {
	Workout map[string]SuuntoWorkout `json:"workout"`
}

type SuuntoPostDataInput

type SuuntoPostDataInput struct {
	UserID string               `json:"user_id" example:"f47ac10b-58cc-4372-a567-0e02b2c3d479"`
	Date   string               `json:"date" example:"2025-06-12"`
	Data   SuuntoPayloadExample `json:"data"`
}

type SuuntoStatusResponse

type SuuntoStatusResponse struct {
	Connected bool `json:"connected" example:"true"`
	Data      bool `json:"data" example:"true"`
}

type SuuntoToken

type SuuntoToken struct {
	AccessToken string `json:"access_token" example:"abc123token"`
}

type SuuntoTokenByUsernameResponse

type SuuntoTokenByUsernameResponse struct {
	UserID string             `json:"user_id" example:"7cffe6e0-3f28-43b6-b511-d836d3a9f7b5"`
	Data   SuuntoTokenDetails `json:"data"`
}

type SuuntoTokenDetails

type SuuntoTokenDetails struct {
	AccessToken     string `json:"access_token" example:"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.random123tokenxyz"`
	RefreshToken    string `json:"refresh_token" example:"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.refresh456tokenabc"`
	UK              string `json:"uk" example:"2x9+gFLEyAxpb6WyYqNMcqzwZKjVcqrnt/RT3gg9LPhh18ZxKpy7f5MDELzUR6FBMz4XZ1TAp7vDYx8vdwZaBw=="`
	JTI             string `json:"jti" example:"vghrTs9QdFrMB8EVTNNVoRTLkxu"`
	UKV             string `json:"ukv" example:"2"`
	User            string `json:"user" example:"randomuser88"`
	Scope           string `json:"scope" example:"activity"`
	ExpiresIn       int    `json:"expires_in" example:"86400"`
	TokenType       string `json:"token_type" example:"bearer"`
	TokenRefreshed  string `json:"token_last_refreshed" example:"2025-07-10 05:23"`
	DataLastFetched string `json:"data_last_fetched" example:"2025-07-11 09:45"`
}

type SuuntoTokenInput

type SuuntoTokenInput struct {
	UserID  string             `json:"user_id" example:"7cffe6e0-3f28-43b6-b511-d836d3a9f7b5"`
	Details SuuntoTokenDetails `json:"details"`
}

type SuuntoTokenResponse

type SuuntoTokenResponse struct {
	Token SuuntoToken `json:"token"`
}

type SuuntoTypesResponse

type SuuntoTypesResponse struct {
	Types []string `json:"types" example:"workout"`
}

type SuuntoWorkout

type SuuntoWorkout struct {
	WorkoutContent string                `json:"workout_content" example:"65ed97d4dddc530a5389f8f9"`
	WorkoutSummary SuuntoWorkoutSummary1 `json:"workout_summary"`
}

type SuuntoWorkoutData

type SuuntoWorkoutData struct {
	WorkoutSummary SuuntoWorkoutSummary `json:"workout_summary"`
}

type SuuntoWorkoutSummary

type SuuntoWorkoutSummary struct {
	AvgPace   float64 `json:"avgPace" example:"4.50"`
	AvgSpeed  float64 `json:"avgSpeed" example:"3.80"`
	StepCount int     `json:"stepCount" example:"5000"`
	TotalTime float64 `json:"totalTime" example:"3600"`
	StartTime int64   `json:"startTime" example:"1710065996000"`
}

type SuuntoWorkoutSummary1

type SuuntoWorkoutSummary1 struct {
	Steps         int     `json:"stepCount" example:"4469"`
	TotalTime     float64 `json:"totalTime" example:"3707.57"`
	TotalDistance float64 `json:"totalDistance" example:"14927.06"`
}

type TietoevryActivityZoneInput

type TietoevryActivityZoneInput struct {
	UserID         string   `json:"user_id" example:"7cffe6e0-3f28-43b6-b511-d836d3a9f7b5"`
	Date           string   `json:"date" example:"2024-07-22"`
	CreatedAt      string   `json:"created_at" example:"2024-07-22T08:00:00Z"`
	UpdatedAt      string   `json:"updated_at" example:"2024-07-22T08:01:00Z"`
	SecondsInZone0 *float64 `json:"seconds_in_zone_0" example:"120.0"`
	SecondsInZone1 *float64 `json:"seconds_in_zone_1" example:"300.0"`
	SecondsInZone2 *float64 `json:"seconds_in_zone_2" example:"450.0"`
	SecondsInZone3 *float64 `json:"seconds_in_zone_3" example:"180.0"`
	SecondsInZone4 *float64 `json:"seconds_in_zone_4" example:"60.0"`
	SecondsInZone5 *float64 `json:"seconds_in_zone_5" example:"15.0"`
	Source         string   `json:"source" example:"polar"`
	RawData        *string  `json:"raw_data" example:"{\"intensity_distribution\": \"balanced\"}"`
}

type TietoevryActivityZoneResponse

type TietoevryActivityZoneResponse struct {
	ActivityZone TietoevryActivityZoneInput `json:"activity_zones"`
}

type TietoevryActivityZonesBulkInput

type TietoevryActivityZonesBulkInput struct {
	ActivityZones []TietoevryActivityZoneInput `json:"activity_zones" validate:"required,dive"`
}

type TietoevryDeletedUser

type TietoevryDeletedUser struct {
	UserID    string `json:"user_id" example:"7cffe6e0-3f28-43b6-b511-d836d3a9f7b5"`
	SporttiID int32  `json:"sportti_id" example:"12345"`
	DeletedAt string `json:"deleted_at" example:"2024-07-25T10:30:00Z"`
}

type TietoevryDeletedUsersResponse

type TietoevryDeletedUsersResponse struct {
	DeletedUsers []TietoevryDeletedUser `json:"deleted_users"`
}

type TietoevryExerciseResponse

type TietoevryExerciseResponse struct {
	Exercise TietoevryExerciseUpsertInput `json:"exercises"`
}

type TietoevryExerciseUpsertInput

type TietoevryExerciseUpsertInput struct {
	ID                string   `json:"id" example:"2d4f6aee-b62c-408e-85e1-07bd78f383a7"`
	CreatedAt         string   `json:"created_at" example:"2024-07-21T08:00:00Z"`
	UpdatedAt         string   `json:"updated_at" example:"2024-07-21T08:00:00Z"`
	UserID            string   `json:"user_id" example:"7cffe6e0-3f28-43b6-b511-d836d3a9f7b5"`
	StartTime         string   `json:"start_time" example:"2024-07-21T08:10:00Z"`
	Duration          string   `json:"duration" example:"PT1H30M45S"` // ISO 8601 duration format
	Comment           *string  `json:"comment" example:"Morning run"`
	SportType         *string  `json:"sport_type" example:"running"`
	DetailedSportType *string  `json:"detailed_sport_type" example:"trail"`
	Distance          *float64 `json:"distance" example:"8.5"`
	AvgHeartRate      *float64 `json:"avg_heart_rate" example:"145.2"`
	MaxHeartRate      *float64 `json:"max_heart_rate" example:"165.3"`
	Trimp             *float64 `json:"trimp" example:"100.5"`
	SprintCount       *int32   `json:"sprint_count" example:"2"`
	AvgSpeed          *float64 `json:"avg_speed" example:"3.2"`
	MaxSpeed          *float64 `json:"max_speed" example:"4.8"`
	Source            string   `json:"source" example:"garmin"`
	Status            *string  `json:"status" example:"completed"`
	Calories          *int32   `json:"calories" example:"450"`
	TrainingLoad      *int32   `json:"training_load" example:"55"`
	RawID             *string  `json:"raw_id" example:"xyz789"`
	Feeling           *int32   `json:"feeling" example:"4"`
	Recovery          *int32   `json:"recovery" example:"3"`
	RPE               *int32   `json:"rpe" example:"7"`
	RawData           *string  `json:"raw_data" example:"{\"power\":300}"`

	HRZones  []HRZone  `json:"hr_zones"`
	Samples  []Sample  `json:"samples"`
	Sections []Section `json:"sections"`
}

type TietoevryExercisesBulkInput

type TietoevryExercisesBulkInput struct {
	Exercises []TietoevryExerciseUpsertInput `json:"exercises" validate:"required,dive"`
}

Bulk input types

type TietoevryMeasurementInput

type TietoevryMeasurementInput struct {
	ID             string   `json:"id" example:"b872a58e-1234-4baf-8c19-5f2ad34d9ef1"`
	CreatedAt      string   `json:"created_at" example:"2024-07-23T08:00:00Z"`
	UpdatedAt      string   `json:"updated_at" example:"2024-07-23T08:10:00Z"`
	UserID         string   `json:"user_id" example:"7cffe6e0-3f28-43b6-b511-d836d3a9f7b5"`
	Date           string   `json:"date" example:"2024-07-22"`
	Name           string   `json:"name" example:"weight"`
	NameType       string   `json:"name_type" example:"numeric"`
	Source         string   `json:"source" example:"oura"`
	Value          string   `json:"value" example:"72.5"`
	ValueNumeric   *float64 `json:"value_numeric" example:"72.5"`
	Comment        *string  `json:"comment" example:"Post training"`
	RawID          *string  `json:"raw_id" example:"ouraid-xyz-123"`
	RawData        *string  `json:"raw_data" example:"{\"unit\": \"kg\"}"`
	AdditionalInfo *string  `json:"additional_info" example:"{\"sensor_accuracy\": \"high\"}"`
}

type TietoevryMeasurementResponse

type TietoevryMeasurementResponse struct {
	Measurement TietoevryMeasurementInput `json:"measurements"`
}

type TietoevryMeasurementsBulkInput

type TietoevryMeasurementsBulkInput struct {
	Measurements []TietoevryMeasurementInput `json:"measurements" validate:"required,dive"`
}

type TietoevryQuestionnaireAnswerInput

type TietoevryQuestionnaireAnswerInput struct {
	UserID                  string  `json:"user_id" example:"7cffe6e0-3f28-43b6-b511-d836d3a9f7b5"`
	QuestionnaireInstanceID string  `json:"questionnaire_instance_id" example:"8c94dfeb-8f3e-4e61-9a66-64559eb354d2"`
	QuestionnaireNameFi     *string `json:"questionnaire_name_fi" example:"Unikysely"`
	QuestionnaireNameEn     *string `json:"questionnaire_name_en" example:"Sleep Survey"`
	QuestionnaireKey        string  `json:"questionnaire_key" example:"sleep_quality"`
	QuestionID              string  `json:"question_id" example:"123e4567-e89b-4d3a-a456-426614174000"`
	QuestionLabelFi         *string `json:"question_label_fi" example:"Kuinka hyvin nukuit?"`
	QuestionLabelEn         *string `json:"question_label_en" example:"How well did you sleep?"`
	QuestionType            string  `json:"question_type" example:"scale"`
	OptionID                *string `json:"option_id" example:"c3e8d954-bb0a-4d77-9885-f9e7cabc1234"`
	OptionValue             *int32  `json:"option_value" example:"4"`
	OptionLabelFi           *string `json:"option_label_fi" example:"Hyvin"`
	OptionLabelEn           *string `json:"option_label_en" example:"Well"`
	FreeText                *string `json:"free_text" example:"Had vivid dreams"`
	CreatedAt               string  `json:"created_at" example:"2024-07-23T09:00:00Z"`
	UpdatedAt               string  `json:"updated_at" example:"2024-07-23T09:00:10Z"`
	Value                   *string `json:"value" example:"{\"scale\": 4, \"note\": \"slightly tired\"}"`
}

type TietoevryQuestionnaireAnswerResponse

type TietoevryQuestionnaireAnswerResponse struct {
	QuestionnaireAnswer TietoevryQuestionnaireAnswerInput `json:"questionnaires"`
}

type TietoevryQuestionnaireAnswersBulkInput

type TietoevryQuestionnaireAnswersBulkInput struct {
	Questionnaires []TietoevryQuestionnaireAnswerInput `json:"questionnaires" validate:"required,dive"`
}

type TietoevrySymptomInput

type TietoevrySymptomInput struct {
	ID             string  `json:"id" validate:"required,uuid4" example:"2d4f6aee-b62c-408e-85e1-07bd78f383a7"`
	UserID         string  `json:"user_id" validate:"required,uuid4" example:"7cffe6e0-3f28-43b6-b511-d836d3a9f7b5"`
	Date           string  `json:"date" validate:"required" example:"2024-01-15"`
	Symptom        string  `json:"symptom" validate:"required" example:"knee pain"`
	Severity       int32   `json:"severity" validate:"required" example:"7"`
	Comment        *string `json:"comment" example:"Pain started after morning run"`
	Source         string  `json:"source" validate:"required" example:"polar"`
	CreatedAt      string  `json:"created_at" validate:"required" example:"2024-01-15T10:30:00Z"`
	UpdatedAt      string  `json:"updated_at" validate:"required" example:"2024-01-15T10:30:00Z"`
	RawID          *string `json:"raw_id" example:"raw_symptom_123"`
	OriginalID     *string `json:"original_id" example:""`
	Recovered      *bool   `json:"recovered" example:"true"`
	PainIndex      *int32  `json:"pain_index" example:"8"`
	Side           *string `json:"side" example:"left"`
	Category       *string `json:"category" example:"joint"`
	AdditionalData *string `json:"additional_data" example:"{\"intensity\": \"moderate\", \"duration\": \"30min\"}"`
}

type TietoevrySymptomResponse

type TietoevrySymptomResponse struct {
	Symptom TietoevrySymptomInput `json:"symptoms"`
}

type TietoevrySymptomsBulkInput

type TietoevrySymptomsBulkInput struct {
	Symptoms []TietoevrySymptomInput `json:"symptoms" validate:"required,dive"`
}

type TietoevryTestResultInput

type TietoevryTestResultInput struct {
	ID                          string  `json:"id" example:"d19f2c63-fc5a-4aeb-8b90-5fc7df5d1c0c"`
	UserID                      string  `json:"user_id" example:"7cffe6e0-3f28-43b6-b511-d836d3a9f7b5"`
	TypeID                      string  `json:"type_id" example:"23d9453b-8d43-46f5-bb27-1db29a88456a"`
	TypeType                    *string `json:"type_type" example:"threshold"`
	TypeResultType              string  `json:"type_result_type" example:"float"`
	TypeName                    *string `json:"type_name" example:"Aerobic Threshold Test"`
	Timestamp                   string  `json:"timestamp" example:"2024-07-23T08:00:00Z"`
	Name                        *string `json:"name" example:"Threshold Test 1"`
	Comment                     *string `json:"comment" example:"User reached fatigue quickly"`
	Data                        string  `json:"data" example:"{\"vo2\": 45.5, \"lactate\": 2.1}"`
	CreatedAt                   string  `json:"created_at" example:"2024-07-23T08:10:00Z"`
	UpdatedAt                   string  `json:"updated_at" example:"2024-07-23T08:10:01Z"`
	TestEventID                 *string `json:"test_event_id" example:"8abf0123-4567-89ab-cdef-1234567890ab"`
	TestEventName               *string `json:"test_event_name" example:"Summer Test Event"`
	TestEventDate               *string `json:"test_event_date" example:"2024-07-22"`
	TestEventTemplateTestID     *string `json:"test_event_template_test_id" example:"4b9f2cde-8aaa-4e01-8103-8d1cabc712aa"`
	TestEventTemplateTestName   *string `json:"test_event_template_test_name" example:"VO2 Max Lab Test"`
	TestEventTemplateTestLimits *string `json:"test_event_template_test_limits" example:"{\"max\": 70, \"min\": 45}"`
}

type TietoevryTestResultResponse

type TietoevryTestResultResponse struct {
	TestResult TietoevryTestResultInput `json:"test_results"`
}

type TietoevryTestResultsBulkInput

type TietoevryTestResultsBulkInput struct {
	TestResults []TietoevryTestResultInput `json:"test_results" validate:"required,dive"`
}

type TietoevryUserResponse

type TietoevryUserResponse struct {
	User TietoevryUserUpsertInput `json:"user"`
}

type TietoevryUserUpsertInput

type TietoevryUserUpsertInput struct {
	ID                        string   `json:"id" example:"7cffe6e0-3f28-43b6-b511-d836d3a9f7b5"`
	SporttiID                 int32    `json:"sportti_id" example:"12345"`
	ProfileGender             *string  `json:"profile_gender" example:"male"`
	ProfileBirthdate          *string  `json:"profile_birthdate" example:"1990-08-15"` // ISO 8601
	ProfileWeight             *float64 `json:"profile_weight" example:"72.5"`
	ProfileHeight             *float64 `json:"profile_height" example:"178.2"`
	ProfileRestingHeartRate   *int32   `json:"profile_resting_heart_rate" example:"60"`
	ProfileMaximumHeartRate   *int32   `json:"profile_maximum_heart_rate" example:"190"`
	ProfileAerobicThreshold   *int32   `json:"profile_aerobic_threshold" example:"140"`
	ProfileAnaerobicThreshold *int32   `json:"profile_anaerobic_threshold" example:"165"`
	ProfileVo2max             *int32   `json:"profile_vo2max" example:"50"`
}

TietoevryUserUpsertInput represents the POST body schema for upserting a user

type UnauthorizedError

type UnauthorizedError struct {
	Error1 string `json:"error" example:"unauthorized"`
}

type UnauthorizedResponse

type UnauthorizedResponse struct {
	Errors []UnauthorizedError `json:"errors"`
}

401

type UnprocessableEntityError

type UnprocessableEntityError struct {
	Error1 string `json:"error" example:"invalid date range"`
}

type UserDataArchinisisResponse

type UserDataArchinisisResponse struct {
	Users []string `json:"sportti_ids" example:"12345,67890,54321"`
}

type UserDataDetails

type UserDataDetails struct {
	ContactInfo struct {
		SportID            int    `json:"sport_id" example:"87432910"`
		FirstName          string `json:"first_name" example:"Arttu"`
		MiddleName         string `json:"middle_name" example:"Ilmari"`
		LastName           string `json:"last_name" example:"Virtanen"`
		NickName           string `json:"nick_name" example:"Artzi"`
		Phone              string `json:"phone" example:"+358401234567"`
		MobilePhone        string `json:"mobile_phone" example:"+358451112233"`
		Address            string `json:"address" example:"Keskuskatu 12 A, 00100 Helsinki"`
		PhoneVisible       bool   `json:"phone_visible" example:"false"`
		MobilePhoneVisible bool   `json:"mobile_phone_visible" example:"false"`
		AddressVisible     bool   `json:"address_visible" example:"true"`
		SportIDVisible     bool   `json:"sport_id_visible" example:"false"`
		FirstNameVisible   bool   `json:"first_name_visible" example:"true"`
		LastNameVisible    bool   `json:"last_name_visible" example:"true"`
		MiddleNameVisible  bool   `json:"middle_name_visible" example:"false"`
		FirstNameRequired  bool   `json:"first_name_required" example:"true"`
		LastNameRequired   bool   `json:"last_name_required" example:"true"`
		NickNameRequired   bool   `json:"nick_name_required" example:"false"`
	} `json:"contact_info"`
}

type UserDataInput

type UserDataInput struct {
	Data UserDataDetails `json:"data"`
}

type UserDataKlabResponse

type UserDataKlabResponse struct {
	Users []string `json:"sportti_ids" example:"12345,67890,54321"`
}

type UserDataResponse

type UserDataResponse struct {
	Data UserDataDetails `json:"data"`
}

type UserIDResponse

type UserIDResponse struct {
	UserID string `json:"user_id" example:"dcabe48a-3578-4743-93ba-001409c82a82"`
}

type UserKlabResponse

type UserKlabResponse struct {
	Customer []KlabCustomerResponse `json:"customer"`
}

type ValidationError

type ValidationError struct {
	Error1 string `json:"parameter name" example:"full description of the error"`
}

type ValidationErrorResponse

type ValidationErrorResponse struct {
	Errors []ValidationError `json:"errors"`
}

400

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL