trainingpeaks-sdk
Version:
TypeScript SDK for TrainingPeaks API integration
116 lines (115 loc) • 4.17 kB
JavaScript
import { z } from 'zod';
import { TrainingPeaksAthleteSchema } from '../../../../../../domain/schemas/entities.schema.js';
import { TrainingPeaksSettingsSchema, UserPreferencesSchema, } from '../../../../../../domain/schemas/value-objects.schema.js';
export const UserProfileEndpointResponseSchema = z.object({
user: z.object({
userId: z.number(),
firstName: z.string(),
lastName: z.string(),
fullName: z.string().optional(),
email: z.string().min(1),
userName: z.string(),
personPhotoUrl: z.string().nullable().optional(),
timeZone: z.string().optional(),
language: z.string().optional(),
units: z.number().optional(),
dateFormat: z.string().optional(),
temperatureUnit: z.union([z.string(), z.number()]).optional(),
settings: z.unknown().optional(),
athletes: z.array(z.unknown()).optional(),
}),
});
export const UpdateUserProfileEndpointResponseSchema = z.object({
success: z.boolean(),
message: z.string().optional(),
});
export const UserPreferencesEndpointResponseSchema = z.object({
timeZone: z.string().optional(),
language: z.string().optional(),
units: z.number().optional(),
dateFormat: z.string().optional(),
temperatureUnit: z.union([z.string(), z.number()]).optional(),
});
export const UpdateUserPreferencesEndpointResponseSchema = z.object({
success: z.boolean(),
message: z.string().optional(),
});
export const TrainingPeaksUserResponseSchema = z.object({
user: z.object({
userId: z.number(),
settings: TrainingPeaksSettingsSchema,
athletes: z.array(TrainingPeaksAthleteSchema),
personId: z.number(),
accountSettingsId: z.number(),
userName: z.string(),
email: z.string().min(1),
isEmailVerified: z.boolean(),
firstName: z.string(),
lastName: z.string(),
userType: z.number(),
userIdentifierHash: z.string(),
expireDate: z.string(),
premiumTrial: z.boolean(),
premiumTrialDaysRemaining: z.number(),
lastLogon: z.string(),
numberOfVisits: z.number(),
created: z.string(),
age: z.number(),
birthday: z.string(),
gender: z.string(),
dateFormat: z.string(),
timeZone: z.string(),
units: z.number(),
temperatureUnit: z.number(),
windSpeedUnit: z.number(),
allowMarketingEmails: z.boolean(),
address: z.string().nullable(),
address2: z.string().nullable(),
city: z.string().nullable(),
state: z.string().nullable(),
zipCode: z.string().nullable(),
country: z.string().nullable(),
phone: z.string().nullable(),
cellPhone: z.string().nullable(),
language: z.string(),
latitude: z.number().nullable(),
longitude: z.number().nullable(),
personPhotoUrl: z.string().nullable(),
affiliateId: z.number(),
isAthlete: z.boolean(),
fullName: z.string(),
}),
accountStatus: z.object({
status: z.number(),
lockedOut: z.boolean(),
demoExpired: z.boolean(),
pastDue: z.boolean(),
pastDueAccountSetup: z.boolean(),
tooManyBasicAthletes: z.boolean(),
isAthlete: z.boolean(),
isCoachedAthlete: z.boolean(),
isCoach: z.boolean(),
isCoachingGroupOwner: z.boolean(),
athleteInZuoraSystem: z.boolean(),
lockedOutOfMobile: z.boolean(),
coachingGroupId: z.number().nullable(),
coachingGroupOwnerId: z.number().nullable(),
billingTier: z.number(),
maximumBasicAthletes: z.number(),
paymentRequired: z.boolean(),
}),
});
export const UserInfoResponseSchema = z.object({
status: z.number(),
statusText: z.string(),
data: z.object({
user: z.object({
userId: z.string().min(1),
username: z.string().min(1),
name: z.string().min(1),
preferences: UserPreferencesSchema,
}),
}),
headers: z.record(z.string(), z.string()),
cookies: z.array(z.string()),
});