UNPKG

garmin-connect

Version:

Makes it simple to interface with Garmin Connect to get or set any data point

827 lines (826 loc) 22.8 kB
export type GCUserProfileId = number; export type GCUserHash = string; export type GCActivityId = number; export type GCWorkoutId = string; export type GCBadgeId = number; export type GarminDomain = 'garmin.com' | 'garmin.cn'; export declare enum ExportFileType { tcx = "tcx", gpx = "gpx", kml = "kml", zip = "zip" } export declare enum UploadFileType { tcx = "tcx", gpx = "gpx", fit = "fit" } export type ExportFileTypeValue = keyof typeof ExportFileType; export type UploadFileTypeTypeValue = keyof typeof UploadFileType; export interface IUserInfo { userProfileId: GCUserProfileId; username: string; emailAddress: string; locale: string; measurementSystemKey: string; timeFormatKey: string; dateFormatKey: string; numberFormatKey: string; heartRateDisplayFormatKey: string; powerDisplayFormatKey: string; timeZoneGroupKey: string; dayKey: unknown; isPublicByDefault: boolean; roles: string[]; displayName: GCUserHash; tocAcceptedDate: string; defaultActivityPrivacy: unknown; customerId: string; birthdate: unknown; socialNetwork: string; socialIcon: string; systemUser: boolean; systemMetricUser: boolean; underAge: boolean; } export interface ISocialProfile { id: number; profileId: GCUserProfileId; garminGUID: string; displayName: GCUserHash; fullName: string; userName: string; profileImageUuid: unknown; profileImageUrlLarge: string; profileImageUrlMedium: string; profileImageUrlSmall: string; location: string; facebookUrl: unknown; twitterUrl: unknown; personalWebsite: unknown; motivation: unknown; bio: unknown; primaryActivity: unknown; favoriteActivityTypes: unknown[]; runningTrainingSpeed: number; cyclingTrainingSpeed: number; favoriteCyclingActivityTypes: unknown[]; cyclingClassification: unknown; cyclingMaxAvgPower: number; swimmingTrainingSpeed: number; profileVisibility: string; activityStartVisibility: string; activityMapVisibility: string; courseVisibility: string; activityHeartRateVisibility: string; activityPowerVisibility: string; badgeVisibility: string; showAge: boolean; showWeight: boolean; showHeight: boolean; showWeightClass: boolean; showAgeRange: boolean; showGender: boolean; showActivityClass: boolean; showVO2Max: boolean; showPersonalRecords: boolean; showLast12Months: boolean; showLifetimeTotals: boolean; showUpcomingEvents: boolean; showRecentFavorites: boolean; showRecentDevice: boolean; showRecentGear: boolean; showBadges: boolean; otherActivity: null; otherPrimaryActivity: null; otherMotivation: null; userRoles: string[]; nameApproved: boolean; userProfileFullName: string; makeGolfScorecardsPrivate: boolean; allowGolfLiveScoring: boolean; allowGolfScoringByConnections: boolean; userLevel: number; userPoint: number; levelUpdateDate: string; levelIsViewed: boolean; levelPointThreshold: number; userPointOffset: number; userPro: boolean; } export interface ISocialConnection { userId: number; displayName: GCUserHash; fullName: string; location: string; profileImageUrlMedium: string; profileImageUrlSmall: string; userLevel: number; connectionRequestId: number; connectionRequestorId: number; userConnectionStatus: number; userRoles: string[]; profileVisibility: number; deviceInvitations: unknown[]; nameApproved: boolean; badgeVisibility: number; userPro: boolean; } export interface ISocialConnections { fullName: string; userConnections: ISocialConnection[]; pagination: unknown; } export interface IActivity { activityId: GCActivityId; activityName: string; description: unknown; startTimeLocal: string; startTimeGMT: string; activityType: { typeId: number; typeKey: string; parentTypeId: number; isHidden: boolean; sortOrder: unknown; trimmable: boolean; restricted: boolean; }; eventType: { typeId: number; typeKey: string; sortOrder: number; }; comments: unknown; parentId: unknown; distance: number; duration: number; elapsedDuration: number; movingDuration: number; elevationGain: number; elevationLoss: number; averageSpeed: number; maxSpeed: number; startLatitude: number; startLongitude: number; hasPolyline: boolean; ownerId: number; ownerDisplayName: string; ownerFullName: string; ownerProfileImageUrlSmall: string; ownerProfileImageUrlMedium: string; ownerProfileImageUrlLarge: string; calories: number; averageHR: number; maxHR: number; averageRunningCadenceInStepsPerMinute: number; maxRunningCadenceInStepsPerMinute: number; averageBikingCadenceInRevPerMinute: unknown; maxBikingCadenceInRevPerMinute: unknown; averageSwimCadenceInStrokesPerMinute: unknown; maxSwimCadenceInStrokesPerMinute: unknown; averageSwolf: unknown; activeLengths: unknown; steps: number; conversationUuid: unknown; conversationPk: unknown; numberOfActivityLikes: unknown; numberOfActivityComments: unknown; likedByUser: unknown; commentedByUser: unknown; activityLikeDisplayNames: unknown; activityLikeFullNames: unknown; activityLikeProfileImageUrls: unknown; requestorRelationship: unknown; userRoles: string[]; privacy: { typeId: number; typeKey: string; }; userPro: boolean; courseId: unknown; poolLength: unknown; unitOfPoolLength: unknown; hasVideo: boolean; videoUrl: unknown; timeZoneId: number; beginTimestamp: number; sportTypeId: number; avgPower: unknown; maxPower: unknown; aerobicTrainingEffect: unknown; anaerobicTrainingEffect: unknown; strokes: unknown; normPower: unknown; leftBalance: unknown; rightBalance: unknown; avgLeftBalance: unknown; max20MinPower: unknown; avgVerticalOscillation: unknown; avgGroundContactTime: unknown; avgStrideLength: number; avgFractionalCadence: unknown; maxFractionalCadence: unknown; trainingStressScore: unknown; intensityFactor: unknown; vO2MaxValue: number; avgVerticalRatio: unknown; avgGroundContactBalance: unknown; lactateThresholdBpm: unknown; lactateThresholdSpeed: unknown; maxFtp: unknown; avgStrokeDistance: unknown; avgStrokeCadence: unknown; maxStrokeCadence: unknown; workoutId: unknown; avgStrokes: unknown; minStrokes: unknown; deviceId: number; minTemperature: unknown; maxTemperature: unknown; minElevation: number; maxElevation: number; avgDoubleCadence: unknown; maxDoubleCadence: number; summarizedExerciseSets: unknown; maxDepth: unknown; avgDepth: unknown; surfaceInterval: unknown; startN2: unknown; endN2: unknown; startCns: unknown; endCns: unknown; summarizedDiveInfo: { weight: unknown; weightUnit: unknown; visibility: unknown; visibilityUnit: unknown; surfaceCondition: unknown; current: unknown; waterType: unknown; waterDensity: unknown; summarizedDiveGases: []; totalSurfaceTime: unknown; }; activityLikeAuthors: unknown; avgVerticalSpeed: unknown; maxVerticalSpeed: number; floorsClimbed: unknown; floorsDescended: unknown; manufacturer: string; diveNumber: unknown; locationName: string; bottomTime: unknown; lapCount: number; endLatitude: number; endLongitude: number; minAirSpeed: unknown; maxAirSpeed: unknown; avgAirSpeed: unknown; avgWindYawAngle: unknown; minCda: unknown; maxCda: unknown; avgCda: unknown; avgWattsPerCda: unknown; flow: unknown; grit: unknown; jumpCount: unknown; caloriesEstimated: unknown; caloriesConsumed: unknown; waterEstimated: unknown; waterConsumed: unknown; maxAvgPower_1: unknown; maxAvgPower_2: unknown; maxAvgPower_5: unknown; maxAvgPower_10: unknown; maxAvgPower_20: unknown; maxAvgPower_30: unknown; maxAvgPower_60: unknown; maxAvgPower_120: unknown; maxAvgPower_300: unknown; maxAvgPower_600: unknown; maxAvgPower_1200: unknown; maxAvgPower_1800: unknown; maxAvgPower_3600: unknown; maxAvgPower_7200: unknown; maxAvgPower_18000: unknown; excludeFromPowerCurveReports: unknown; totalSets: unknown; activeSets: unknown; totalReps: unknown; minRespirationRate: unknown; maxRespirationRate: unknown; avgRespirationRate: unknown; trainingEffectLabel: unknown; activityTrainingLoad: unknown; avgFlow: unknown; avgGrit: unknown; minActivityLapDuration: number; avgStress: unknown; startStress: unknown; endStress: unknown; differenceStress: unknown; maxStress: unknown; aerobicTrainingEffectMessage: unknown; anaerobicTrainingEffectMessage: unknown; splitSummaries: []; hasSplits: boolean; maxBottomTime: unknown; hasSeedFirstbeatProfile: unknown; calendarEventId: unknown; calendarEventUuid: unknown; avgGradeAdjustedSpeed: unknown; avgWheelchairCadence: unknown; maxWheelchairCadence: unknown; purposeful: boolean; manualActivity: boolean; autoCalcCalories: boolean; elevationCorrected: boolean; atpActivity: boolean; favorite: boolean; decoDive: unknown; pr: boolean; parent: boolean; } export interface IBadgeSocialConnection { userProfileId: GCUserProfileId; fullName: string; displayName: GCUserHash; profileImageUrlMedium: string; profileImageUrlSmall: string; userLevel: number; badgeEarnedDate: string; } export interface IBadgeRelated { badgeId: GCBadgeId; badgeKey: string; badgeName: string; badgeUuid: unknown; badgeCategoryId: number; badgeDifficultyId: number; badgePoints: number; badgeTypeIds: number[]; earnedByMe: boolean; } export interface IBadge { badgeId: GCBadgeId; badgeKey: string; badgeName: string; badgeUuid: unknown; badgeCategoryId: number; badgeDifficultyId: number; badgePoints: number; badgeTypeIds: number[]; badgeSeriesId: unknown; badgeStartDate: string; badgeEndDate: unknown; userProfileId: number; fullName: string; displayName: string; badgeEarnedDate: string; badgeEarnedNumber: number; badgeLimitCount: unknown; badgeIsViewed: boolean; badgeProgressValue: number; badgeTargetValue: unknown; badgeUnitId: unknown; badgeAssocTypeId: number; badgeAssocDataId: unknown; badgeAssocDataName: unknown; earnedByMe: boolean; currentPlayerType: unknown; userJoined: unknown; badgeChallengeStatusId: unknown; badgePromotionCodeType: unknown; promotionCodeStatus: unknown; createDate: string; relatedBadges: IBadgeRelated[] | null; connectionNumber: number; connections: IBadgeSocialConnection[] | null; } export interface IActivityDetails { activityId: number; activityUUID: { uuid: string; }; activityName: string; userProfileId: number; isMultiSportParent: boolean; activityTypeDTO: { typeId: number; typeKey: string; parentTypeId: number; isHidden: boolean; restricted: boolean; trimmable: boolean; }; eventTypeDTO: { typeId: number; typeKey: string; sortOrder: number; }; accessControlRuleDTO: { typeId: number; typeKey: string; }; timeZoneUnitDTO: { unitId: number; unitKey: string; factor: number; timeZone: string; }; metadataDTO: { isOriginal: boolean; deviceApplicationInstallationId: number; agentApplicationInstallationId?: null; agentString?: null; fileFormat: { formatId: number; formatKey: string; }; associatedCourseId?: null; lastUpdateDate: string; uploadedDate: string; videoUrl?: null; hasPolyline: boolean; hasChartData: boolean; hasHrTimeInZones: boolean; hasPowerTimeInZones: boolean; userInfoDto: { userProfilePk: number; displayname: string; fullname: string; profileImageUrlLarge?: null; profileImageUrlMedium: string; profileImageUrlSmall: string; userPro: boolean; }; childIds?: null[] | null; childActivityTypes?: null[] | null; sensors?: { manufacturer: string; serialNumber: number; sku: string; fitProductNumber: number; sourceType: string; antplusDeviceType: string; softwareVersion: number; batteryStatus: string; }[] | null; activityImages?: { imageId: string; url: string; smallUrl: string; mediumUrl: string; expirationTimestamp?: null; latitude?: null; longitude?: null; photoDate?: null; }[] | null; manufacturer: string; diveNumber?: null; lapCount: number; associatedWorkoutId: number; isAtpActivity?: null; deviceMetaDataDTO: { deviceId: string; deviceTypePk: number; deviceVersionPk: number; }; hasIntensityIntervals: boolean; hasSplits: boolean; eBikeMaxAssistModes?: null; eBikeBatteryUsage?: null; eBikeBatteryRemaining?: null; eBikeAssistModeInfoDTOList?: null; calendarEventInfo?: null; personalRecord: boolean; gcj02: boolean; runPowerWindDataEnabled?: null; autoCalcCalories: boolean; favorite: boolean; manualActivity: boolean; trimmed: boolean; elevationCorrected: boolean; }; summaryDTO: { startTimeLocal: string; startTimeGMT: string; startLatitude: number; startLongitude: number; distance: number; duration: number; movingDuration: number; elapsedDuration: number; elevationGain: number; elevationLoss: number; maxElevation: number; minElevation: number; averageSpeed: number; averageMovingSpeed: number; maxSpeed: number; calories: number; averageHR: number; maxHR: number; averageRunCadence: number; maxRunCadence: number; averageTemperature: number; maxTemperature: number; minTemperature: number; groundContactTime: number; groundContactBalanceLeft: number; strideLength: number; verticalOscillation: number; trainingEffect: number; anaerobicTrainingEffect: number; aerobicTrainingEffectMessage: string; anaerobicTrainingEffectMessage: string; verticalRatio: number; endLatitude: number; endLongitude: number; maxVerticalSpeed: number; minActivityLapDuration: number; }; locationName: string; splitSummaries?: { distance: number; duration: number; movingDuration: number; elapsedDuration: number; elevationGain: number; elevationLoss: number; averageSpeed: number; averageMovingSpeed: number; maxSpeed: number; calories: number; averageHR: number; maxHR: number; averageRunCadence: number; maxRunCadence: number; averageTemperature: number; maxTemperature: number; minTemperature: number; groundContactTime: number; groundContactBalanceLeft: number; strideLength: number; verticalOscillation: number; verticalRatio: number; totalExerciseReps: number; splitType: string; noOfSplits: number; maxElevationGain: number; averageElevationGain: number; maxDistance: number; }[] | null; } export interface Gear { gearPk: number; uuid: string; userProfilePk: number; gearMakeName: string; gearModelName: string; gearTypeName: string; gearStatusName: string; displayName: string; customMakeModel: string; imageNameLarge: any; imageNameMedium: any; imageNameSmall: any; dateBegin: string; dateEnd: any; maximumMeters: number; notified: boolean; createDate: string; updateDate: string; } export interface IOauth1Consumer { key: string; secret: string; } export interface IOauth1 { token: IOauth1Token; oauth: OAuth; } export interface IGarminTokens { oauth1: IOauth1Token; oauth2: IOauth2Token; } export interface IOauth1Token { oauth_token: string; oauth_token_secret: string; } export interface IOauth2Token { scope: string; jti: string; access_token: string; token_type: string; refresh_token: string; expires_in: number; refresh_token_expires_in: number; expires_at: number; refresh_token_expires_at: number; last_update_date: string; expires_date: string; } export interface IUserSettings { id: number; userData: IUserData; userSleep: { sleepTime: number; defaultSleepTime: boolean; wakeTime: number; defaultWakeTime: boolean; }; connectDate: unknown; sourceType: unknown; userSleepWindows: IUserSleepWindows[]; } export interface IUserData { gender: unknown; weight: unknown; height: unknown; timeFormat: string; birthDate: unknown; measurementSystem: string; activityLevel: unknown; handedness: string; powerFormat: { formatId: number; formatKey: string; minFraction: number; maxFraction: number; groupingUsed: boolean; displayFormat: unknown; }; heartRateFormat: { formatId: number; formatKey: string; minFraction: number; maxFraction: number; groupingUsed: boolean; displayFormat: unknown; }; firstDayOfWeek: { dayId: number; dayName: string; sortOrder: number; isPossibleFirstDay: boolean; }; vo2MaxRunning: unknown; vo2MaxCycling: unknown; lactateThresholdSpeed: unknown; lactateThresholdHeartRate: unknown; diveNumber: unknown; intensityMinutesCalcMethod: string; moderateIntensityMinutesHrZone: number; vigorousIntensityMinutesHrZone: number; hydrationMeasurementUnit: string; hydrationContainers: unknown[]; hydrationAutoGoalEnabled: boolean; firstbeatMaxStressScore: unknown; firstbeatCyclingLtTimestamp: unknown; firstbeatRunningLtTimestamp: unknown; thresholdHeartRateAutoDetected: unknown; ftpAutoDetected: unknown; trainingStatusPausedDate: unknown; weatherLocation: { useFixedLocation: unknown; latitude: unknown; longitude: unknown; locationName: unknown; isoCountryCode: unknown; postalCode: unknown; }; golfDistanceUnit: string; golfElevationUnit: unknown; golfSpeedUnit: unknown; externalBottomTime: unknown; } export interface IUserSleepWindows { sleepWindowFrequency: string; startSleepTimeSecondsFromMidnight: number; endSleepTimeSecondsFromMidnight: number; } export interface ICountActivities { countOfActivities: number; date: string; stats: { all: Record<string, any>; }; } export interface IWorkout { workoutId?: number; ownerId?: number; workoutName: string; description?: string; updateDate: Date; createdDate: Date; sportType: ISportType; trainingPlanId: null; author: IAuthor; estimatedDurationInSecs: number; estimatedDistanceInMeters: null; estimateType: null; estimatedDistanceUnit: IUnit; poolLength: number; poolLengthUnit: IUnit; workoutProvider: string; workoutSourceId: string; consumer: null; atpPlanId: null; workoutNameI18nKey: null; descriptionI18nKey: null; shared: boolean; estimated: boolean; } export interface IWorkoutDetail extends IWorkout { workoutSegments: IWorkoutSegment[]; } export interface IAuthor { userProfilePk: null; displayName: null; fullName: null; profileImgNameLarge: null; profileImgNameMedium: null; profileImgNameSmall: null; userPro: boolean; vivokidUser: boolean; } export interface IUnit { unitId: null; unitKey: null; factor: null; } export interface ISportType { sportTypeId: number; sportTypeKey: string; displayOrder?: number; } export interface IWorkoutSegment { segmentOrder: number; sportType: ISportType; workoutSteps: IWorkoutStep[]; } export interface IWorkoutStep { type: string; stepId: number; stepOrder: number; stepType: IStepType; childStepId: null; description: null; endCondition: IEndCondition; endConditionValue: number | null; preferredEndConditionUnit: IUnit | null; endConditionCompare: null; targetType: ITargetType; targetValueOne: null; targetValueTwo: null; targetValueUnit: null; zoneNumber: null; secondaryTargetType: null; secondaryTargetValueOne: null; secondaryTargetValueTwo: null; secondaryTargetValueUnit: null; secondaryZoneNumber: null; endConditionZone: null; strokeType: IStrokeType; equipmentType: IEquipmentType; category: null; exerciseName: null; workoutProvider: null; providerExerciseSourceId: null; weightValue: null; weightUnit: null; } export interface IEndCondition { conditionTypeId: number; conditionTypeKey: string; displayOrder: number; displayable: boolean; } export interface IEquipmentType { equipmentTypeId: number; equipmentTypeKey: null; displayOrder: number; } export interface IStepType { stepTypeId: number; stepTypeKey: string; displayOrder: number; } export interface IStrokeType { strokeTypeId: number; strokeTypeKey: null; displayOrder: number; } export interface ITargetType { workoutTargetTypeId: number; workoutTargetTypeKey: string; displayOrder: number; } export interface IDailyStepsType { calendarDate: string; stepGoal: number; totalDistance: number; totalSteps: number; }