Help us shape the future of Go! Take the 2026 Go Developer Survey

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