-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | A client for the Strava V3 API.
--   
--   Strive is a client for the Strava V3 API.
@package strive
@version 5.0.8


-- | Aliases for common types.
module Strive.Aliases
type ActivityId = Integer
type ApplicationId = Integer
type ApplicationSecret = String
type AthleteId = Integer
type AuthorizationCode = String
type ClubId = Integer
type EffortId = Integer
type ElapsedTime = Integer
type Extension = String
type GearId = String
type Latitude = Double
type Longitude = Double
type Name = String
type RedirectUri = String
type Result a = Either (Response ByteString, String) a
type SegmentId = Integer
type StartTime = UTCTime
type StreamId = Integer
type UploadId = Integer


-- | Types and functions for dealing with the API client itself.
module Strive.Client

-- | Strava V3 API client.
data Client
Client :: String -> (Request -> IO (Response ByteString)) -> Client
[client_accessToken] :: Client -> String
[client_requester] :: Client -> Request -> IO (Response ByteString)

-- | Build a new client using the default HTTP manager to make requests.
buildClient :: Maybe Text -> IO Client
instance GHC.Show.Show Strive.Client.Client


-- | Types for choosing an option from a limited set.
module Strive.Enums

-- | An activity's type.
data ActivityType
AlpineSki :: ActivityType
BackcountrySki :: ActivityType
Canoeing :: ActivityType
CrossCountrySkiing :: ActivityType
Crossfit :: ActivityType
Elliptical :: ActivityType
Hike :: ActivityType
IceSkate :: ActivityType
InlineSkate :: ActivityType
Kayaking :: ActivityType
KiteSurf :: ActivityType
NordicSki :: ActivityType
Ride :: ActivityType
RockClimbing :: ActivityType
RollerSki :: ActivityType
Rowing :: ActivityType
Run :: ActivityType
Snowboard :: ActivityType
Snowshoe :: ActivityType
StairStepper :: ActivityType
StandUpPaddling :: ActivityType
Surfing :: ActivityType
Swim :: ActivityType
VirtualRide :: ActivityType
Walk :: ActivityType
WeightTraining :: ActivityType
Windsurf :: ActivityType
Workout :: ActivityType
Yoga :: ActivityType

-- | An activity zone's type.
data ActivityZoneType
HeartrateZone :: ActivityZoneType
PowerZone :: ActivityZoneType

-- | An athlete's age group.
data AgeGroup
Ages0To24 :: AgeGroup
Ages25To34 :: AgeGroup
Ages35To44 :: AgeGroup
Ages45To54 :: AgeGroup
Ages55To64 :: AgeGroup
Ages65Plus :: AgeGroup

-- | A club's type.
data ClubType
CasualClub :: ClubType
Company :: ClubType
Other :: ClubType
RacingTeam :: ClubType
Shop :: ClubType

-- | A bike's frame type.
data FrameType
CrossFrame :: FrameType
MountainFrame :: FrameType
RoadFrame :: FrameType
TimeTrialFrame :: FrameType

-- | An athlete's gender.
data Gender
Female :: Gender
Male :: Gender

-- | An athlete's measurement preference.
data MeasurementPreference
Feet :: MeasurementPreference
Meters :: MeasurementPreference

-- | A photo's type.
data PhotoType
InstagramPhoto :: PhotoType

-- | A stream's resolution.
data Resolution
Low :: Resolution
Medium :: Resolution
High :: Resolution

-- | A resource's state.
data ResourceState
Meta :: ResourceState
Summary :: ResourceState
Detailed :: ResourceState

-- | A segment's activity type.
data SegmentActivityType
Riding :: SegmentActivityType
Running :: SegmentActivityType

-- | A series' type in a stream.
data SeriesType
Distance :: SeriesType
Time :: SeriesType

-- | A club's sport type.
data SportType
SportCycling :: SportType
SportOther :: SportType
SportRunning :: SportType
SportTriathalon :: SportType

-- | A stream's type.
data StreamType
AltitudeStream :: StreamType
CadenceStream :: StreamType
DistanceStream :: StreamType
GradeSmoothStream :: StreamType
HeartrateStream :: StreamType
LatlngStream :: StreamType
MovingStream :: StreamType
TempStream :: StreamType
TimeStream :: StreamType
VelocitySmoothStream :: StreamType
WattsStream :: StreamType

-- | An athlete's weight class.
data WeightClass
Kilograms0To54 :: WeightClass
Kilograms55To64 :: WeightClass
Kilograms65To74 :: WeightClass
Kilograms75To84 :: WeightClass
Kilograms85To94 :: WeightClass
Kilograms95Plus :: WeightClass
Pounds0To124 :: WeightClass
Pounds125To149 :: WeightClass
Pounds150To164 :: WeightClass
Pounds165To179 :: WeightClass
Pounds180To199 :: WeightClass
Pounds200Plus :: WeightClass
instance GHC.Classes.Eq Strive.Enums.WeightClass
instance GHC.Classes.Eq Strive.Enums.StreamType
instance GHC.Show.Show Strive.Enums.SportType
instance GHC.Classes.Eq Strive.Enums.SportType
instance GHC.Classes.Eq Strive.Enums.SeriesType
instance GHC.Classes.Eq Strive.Enums.SegmentActivityType
instance GHC.Show.Show Strive.Enums.ResourceState
instance GHC.Classes.Eq Strive.Enums.ResourceState
instance GHC.Classes.Eq Strive.Enums.Resolution
instance GHC.Show.Show Strive.Enums.PhotoType
instance GHC.Classes.Eq Strive.Enums.PhotoType
instance GHC.Show.Show Strive.Enums.MeasurementPreference
instance GHC.Classes.Eq Strive.Enums.MeasurementPreference
instance GHC.Classes.Eq Strive.Enums.Gender
instance GHC.Show.Show Strive.Enums.FrameType
instance GHC.Classes.Eq Strive.Enums.FrameType
instance GHC.Show.Show Strive.Enums.ClubType
instance GHC.Classes.Eq Strive.Enums.ClubType
instance GHC.Classes.Eq Strive.Enums.AgeGroup
instance GHC.Show.Show Strive.Enums.ActivityZoneType
instance GHC.Classes.Eq Strive.Enums.ActivityZoneType
instance GHC.Show.Show Strive.Enums.ActivityType
instance GHC.Classes.Eq Strive.Enums.ActivityType
instance GHC.Show.Show Strive.Enums.WeightClass
instance GHC.Show.Show Strive.Enums.StreamType
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Enums.SportType
instance GHC.Show.Show Strive.Enums.SeriesType
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Enums.SeriesType
instance GHC.Show.Show Strive.Enums.SegmentActivityType
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Enums.ResourceState
instance GHC.Show.Show Strive.Enums.Resolution
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Enums.Resolution
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Enums.PhotoType
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Enums.MeasurementPreference
instance GHC.Show.Show Strive.Enums.Gender
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Enums.Gender
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Enums.FrameType
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Enums.ClubType
instance GHC.Show.Show Strive.Enums.AgeGroup
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Enums.ActivityZoneType
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Enums.ActivityType


-- | Helpers for dealing with HTTP requests.
module Strive.Internal.HTTP

-- | Perform an HTTP DELETE request.
delete :: (QueryLike q, FromJSON j) => Client -> String -> q -> IO (Result j)

-- | Perform an HTTP GET request.
get :: (QueryLike q, FromJSON j) => Client -> String -> q -> IO (Result j)

-- | Perform an HTTP POST request.
post :: (QueryLike q, FromJSON j) => Client -> String -> q -> IO (Result j)

-- | Perform an HTTP PUT request.
put :: (QueryLike q, FromJSON j) => Client -> String -> q -> IO (Result j)

-- | Build a request.
buildRequest :: QueryLike q => Method -> Client -> String -> q -> IO Request

-- | Actually perform an HTTP request.
performRequest :: Client -> Request -> IO (Response ByteString)

-- | Handle decoding a potentially failed response.
handleResponse :: FromJSON j => Response ByteString -> Result j

-- | Decode a response body as JSON.
decodeValue :: FromJSON j => Response ByteString -> Either String j


-- | Common options that apply to many endpoints.
module Strive.Internal.Options

-- | Options for paginating.
data PaginationOptions
PaginationOptions :: Integer -> Integer -> PaginationOptions
[paginationOptions_page] :: PaginationOptions -> Integer
[paginationOptions_perPage] :: PaginationOptions -> Integer
instance GHC.Show.Show Strive.Internal.Options.PaginationOptions
instance Data.Default.Class.Default Strive.Internal.Options.PaginationOptions
instance Network.HTTP.Types.QueryLike.QueryLike Strive.Internal.Options.PaginationOptions


-- | Helper functions for template Haskell, to avoid stage restrictions.
module Strive.Internal.TH

-- | Default FromJSON options.
options :: Options

-- | Generate lens classes and instances for a type.
makeLenses :: String -> Q [Dec]


-- | Lenses for easily getting and setting values.
module Strive.Lenses

-- | A lens for a record.
type Lens a b = forall f. Functor f => (b -> f b) -> a -> f a

-- | Get a field from a record.
get :: Lens a b -> a -> b

-- | Set a field in a record.
set :: Lens a b -> b -> a -> a

-- | Update a field in a record
update :: Lens a b -> (b -> b) -> a -> a


-- | <a>Activities</a>
module Strive.Options.Activities

-- | <a>CreateActivity</a>
data CreateActivityOptions
CreateActivityOptions :: Maybe String -> Maybe Double -> CreateActivityOptions
[createActivityOptions_description] :: CreateActivityOptions -> Maybe String
[createActivityOptions_distance] :: CreateActivityOptions -> Maybe Double

-- | <a>GetActivity</a>
data GetActivityOptions
GetActivityOptions :: Bool -> GetActivityOptions
[getActivityOptions_allEfforts] :: GetActivityOptions -> Bool

-- | <a>UpdateActivity</a>
data UpdateActivityOptions
UpdateActivityOptions :: Maybe String -> Maybe ActivityType -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe String -> Maybe String -> UpdateActivityOptions
[updateActivityOptions_name] :: UpdateActivityOptions -> Maybe String
[updateActivityOptions_type] :: UpdateActivityOptions -> Maybe ActivityType
[updateActivityOptions_private] :: UpdateActivityOptions -> Maybe Bool
[updateActivityOptions_commute] :: UpdateActivityOptions -> Maybe Bool
[updateActivityOptions_trainer] :: UpdateActivityOptions -> Maybe Bool
[updateActivityOptions_gearId] :: UpdateActivityOptions -> Maybe String
[updateActivityOptions_description] :: UpdateActivityOptions -> Maybe String

-- | <a>getCurrentActivities</a>
data GetCurrentActivitiesOptions
GetCurrentActivitiesOptions :: Maybe UTCTime -> Maybe UTCTime -> Integer -> Integer -> GetCurrentActivitiesOptions
[getCurrentActivitiesOptions_before] :: GetCurrentActivitiesOptions -> Maybe UTCTime
[getCurrentActivitiesOptions_after] :: GetCurrentActivitiesOptions -> Maybe UTCTime
[getCurrentActivitiesOptions_page] :: GetCurrentActivitiesOptions -> Integer
[getCurrentActivitiesOptions_perPage] :: GetCurrentActivitiesOptions -> Integer

-- | <a>getRelatedActivities</a>
type GetRelatedActivitiesOptions = PaginationOptions

-- | <a>getFeed</a>
type GetFeedOptions = PaginationOptions
instance GHC.Show.Show Strive.Options.Activities.GetCurrentActivitiesOptions
instance GHC.Show.Show Strive.Options.Activities.UpdateActivityOptions
instance GHC.Show.Show Strive.Options.Activities.GetActivityOptions
instance GHC.Show.Show Strive.Options.Activities.CreateActivityOptions
instance Data.Default.Class.Default Strive.Options.Activities.GetCurrentActivitiesOptions
instance Network.HTTP.Types.QueryLike.QueryLike Strive.Options.Activities.GetCurrentActivitiesOptions
instance Data.Default.Class.Default Strive.Options.Activities.UpdateActivityOptions
instance Network.HTTP.Types.QueryLike.QueryLike Strive.Options.Activities.UpdateActivityOptions
instance Data.Default.Class.Default Strive.Options.Activities.GetActivityOptions
instance Network.HTTP.Types.QueryLike.QueryLike Strive.Options.Activities.GetActivityOptions
instance Data.Default.Class.Default Strive.Options.Activities.CreateActivityOptions
instance Network.HTTP.Types.QueryLike.QueryLike Strive.Options.Activities.CreateActivityOptions


-- | <a>Athletes</a>
module Strive.Options.Athletes

-- | <a>updateCurrentAthlete</a>
data UpdateCurrentAthleteOptions
UpdateCurrentAthleteOptions :: Maybe String -> Maybe String -> Maybe String -> Maybe Gender -> Maybe Double -> UpdateCurrentAthleteOptions
[updateCurrentAthleteOptions_city] :: UpdateCurrentAthleteOptions -> Maybe String
[updateCurrentAthleteOptions_state] :: UpdateCurrentAthleteOptions -> Maybe String
[updateCurrentAthleteOptions_country] :: UpdateCurrentAthleteOptions -> Maybe String
[updateCurrentAthleteOptions_sex] :: UpdateCurrentAthleteOptions -> Maybe Gender
[updateCurrentAthleteOptions_weight] :: UpdateCurrentAthleteOptions -> Maybe Double

-- | <a>getAthleteCrs</a>
type GetAthleteCrsOptions = PaginationOptions
instance GHC.Show.Show Strive.Options.Athletes.UpdateCurrentAthleteOptions
instance Data.Default.Class.Default Strive.Options.Athletes.UpdateCurrentAthleteOptions
instance Network.HTTP.Types.QueryLike.QueryLike Strive.Options.Athletes.UpdateCurrentAthleteOptions


-- | <a>Authentication</a>
module Strive.Options.Authentication

-- | <a>buildAuthorizeUrl</a>
data BuildAuthorizeUrlOptions
BuildAuthorizeUrlOptions :: Bool -> Bool -> Bool -> String -> BuildAuthorizeUrlOptions
[buildAuthorizeUrlOptions_approvalPrompt] :: BuildAuthorizeUrlOptions -> Bool
[buildAuthorizeUrlOptions_privateScope] :: BuildAuthorizeUrlOptions -> Bool
[buildAuthorizeUrlOptions_writeScope] :: BuildAuthorizeUrlOptions -> Bool
[buildAuthorizeUrlOptions_state] :: BuildAuthorizeUrlOptions -> String
instance GHC.Show.Show Strive.Options.Authentication.BuildAuthorizeUrlOptions
instance Data.Default.Class.Default Strive.Options.Authentication.BuildAuthorizeUrlOptions
instance Network.HTTP.Types.QueryLike.QueryLike Strive.Options.Authentication.BuildAuthorizeUrlOptions


-- | <a>Clubs</a>
module Strive.Options.Clubs

-- | <a>getClubMembers</a>
type GetClubMembersOptions = PaginationOptions

-- | <a>getClubActivities</a>
data GetClubActivitiesOptions
GetClubActivitiesOptions :: Maybe UTCTime -> Maybe UTCTime -> Integer -> Integer -> GetClubActivitiesOptions
[getClubActivitiesOptions_before] :: GetClubActivitiesOptions -> Maybe UTCTime
[getClubActivitiesOptions_after] :: GetClubActivitiesOptions -> Maybe UTCTime
[getClubActivitiesOptions_page] :: GetClubActivitiesOptions -> Integer
[getClubActivitiesOptions_perPage] :: GetClubActivitiesOptions -> Integer
instance GHC.Show.Show Strive.Options.Clubs.GetClubActivitiesOptions
instance Data.Default.Class.Default Strive.Options.Clubs.GetClubActivitiesOptions
instance Network.HTTP.Types.QueryLike.QueryLike Strive.Options.Clubs.GetClubActivitiesOptions


-- | <a>Comments</a>
module Strive.Options.Comments

-- | <a>getActivityComments</a>
data GetActivityCommentsOptions
GetActivityCommentsOptions :: Bool -> Integer -> Integer -> GetActivityCommentsOptions
[getActivityCommentsOptions_markdown] :: GetActivityCommentsOptions -> Bool
[getActivityCommentsOptions_page] :: GetActivityCommentsOptions -> Integer
[getActivityCommentsOptions_perPage] :: GetActivityCommentsOptions -> Integer
instance GHC.Show.Show Strive.Options.Comments.GetActivityCommentsOptions
instance Data.Default.Class.Default Strive.Options.Comments.GetActivityCommentsOptions
instance Network.HTTP.Types.QueryLike.QueryLike Strive.Options.Comments.GetActivityCommentsOptions


-- | <a>Friends</a>
module Strive.Options.Friends

-- | <a>getCurrentFriends</a>
type GetCurrentFriendsOptions = PaginationOptions

-- | <a>getFriends</a>
type GetFriendsOptions = PaginationOptions

-- | <a>getCurrentFollowers</a>
type GetCurrentFollowersOptions = PaginationOptions

-- | <a>getFollowers</a>
type GetFollowersOptions = PaginationOptions

-- | <a>getCommonFriends</a>
type GetCommonFriendsOptions = PaginationOptions


-- | <a>Kudos</a>
module Strive.Options.Kudos

-- | <a>getActivityKudoers</a>
type GetActivityKudoersOptions = PaginationOptions


-- | <a>Segments</a>
module Strive.Options.Segments

-- | <a>getStarredSegments</a>
type GetStarredSegmentsOptions = PaginationOptions

-- | <a>getSegmentEfforts</a>
data GetSegmentEffortsOptions
GetSegmentEffortsOptions :: Maybe Integer -> Maybe (UTCTime, UTCTime) -> Integer -> Integer -> GetSegmentEffortsOptions
[getSegmentEffortsOptions_athleteId] :: GetSegmentEffortsOptions -> Maybe Integer
[getSegmentEffortsOptions_range] :: GetSegmentEffortsOptions -> Maybe (UTCTime, UTCTime)
[getSegmentEffortsOptions_page] :: GetSegmentEffortsOptions -> Integer
[getSegmentEffortsOptions_perPage] :: GetSegmentEffortsOptions -> Integer

-- | <a>getSegmentLeaderboard</a>
data GetSegmentLeaderboardOptions
GetSegmentLeaderboardOptions :: Maybe Gender -> Maybe AgeGroup -> Maybe WeightClass -> Maybe Bool -> Maybe Integer -> Maybe String -> Maybe Integer -> Integer -> Integer -> GetSegmentLeaderboardOptions
[getSegmentLeaderboardOptions_gender] :: GetSegmentLeaderboardOptions -> Maybe Gender
[getSegmentLeaderboardOptions_ageGroup] :: GetSegmentLeaderboardOptions -> Maybe AgeGroup
[getSegmentLeaderboardOptions_weightClass] :: GetSegmentLeaderboardOptions -> Maybe WeightClass
[getSegmentLeaderboardOptions_following] :: GetSegmentLeaderboardOptions -> Maybe Bool
[getSegmentLeaderboardOptions_clubId] :: GetSegmentLeaderboardOptions -> Maybe Integer
[getSegmentLeaderboardOptions_dateRange] :: GetSegmentLeaderboardOptions -> Maybe String
[getSegmentLeaderboardOptions_contextEntries] :: GetSegmentLeaderboardOptions -> Maybe Integer
[getSegmentLeaderboardOptions_page] :: GetSegmentLeaderboardOptions -> Integer
[getSegmentLeaderboardOptions_perPage] :: GetSegmentLeaderboardOptions -> Integer

-- | <a>exploreSegments</a>
data ExploreSegmentsOptions
ExploreSegmentsOptions :: SegmentActivityType -> Integer -> Integer -> ExploreSegmentsOptions
[exploreSegmentsOptions_activityType] :: ExploreSegmentsOptions -> SegmentActivityType
[exploreSegmentsOptions_minCat] :: ExploreSegmentsOptions -> Integer
[exploreSegmentsOptions_maxCat] :: ExploreSegmentsOptions -> Integer
instance GHC.Show.Show Strive.Options.Segments.ExploreSegmentsOptions
instance GHC.Show.Show Strive.Options.Segments.GetSegmentLeaderboardOptions
instance GHC.Show.Show Strive.Options.Segments.GetSegmentEffortsOptions
instance Data.Default.Class.Default Strive.Options.Segments.ExploreSegmentsOptions
instance Network.HTTP.Types.QueryLike.QueryLike Strive.Options.Segments.ExploreSegmentsOptions
instance Data.Default.Class.Default Strive.Options.Segments.GetSegmentLeaderboardOptions
instance Network.HTTP.Types.QueryLike.QueryLike Strive.Options.Segments.GetSegmentLeaderboardOptions
instance Data.Default.Class.Default Strive.Options.Segments.GetSegmentEffortsOptions
instance Network.HTTP.Types.QueryLike.QueryLike Strive.Options.Segments.GetSegmentEffortsOptions


-- | <a>Streams</a>
module Strive.Options.Streams

-- | <a>getStreams</a>
data GetStreamsOptions
GetStreamsOptions :: Maybe Resolution -> SeriesType -> GetStreamsOptions
[getStreamsOptions_resolution] :: GetStreamsOptions -> Maybe Resolution
[getStreamsOptions_seriesType] :: GetStreamsOptions -> SeriesType
instance GHC.Show.Show Strive.Options.Streams.GetStreamsOptions
instance Data.Default.Class.Default Strive.Options.Streams.GetStreamsOptions
instance Network.HTTP.Types.QueryLike.QueryLike Strive.Options.Streams.GetStreamsOptions


-- | <a>Uploads</a>
module Strive.Options.Uploads

-- | <a>uploadActivity</a>
data UploadActivityOptions
UploadActivityOptions :: Maybe ActivityType -> Maybe String -> Maybe String -> Bool -> Bool -> Maybe String -> UploadActivityOptions
[uploadActivityOptions_activityType] :: UploadActivityOptions -> Maybe ActivityType
[uploadActivityOptions_name] :: UploadActivityOptions -> Maybe String
[uploadActivityOptions_description] :: UploadActivityOptions -> Maybe String
[uploadActivityOptions_private] :: UploadActivityOptions -> Bool
[uploadActivityOptions_trainer] :: UploadActivityOptions -> Bool
[uploadActivityOptions_externalId] :: UploadActivityOptions -> Maybe String
instance GHC.Show.Show Strive.Options.Uploads.UploadActivityOptions
instance Data.Default.Class.Default Strive.Options.Uploads.UploadActivityOptions
instance Network.HTTP.Types.QueryLike.QueryLike Strive.Options.Uploads.UploadActivityOptions


-- | Optional parameters for actions.
module Strive.Options


-- | <a>http://strava.github.io/api/v3/clubs/</a>
module Strive.Types.Clubs

-- | <a>http://strava.github.io/api/v3/clubs/#detailed</a>
data ClubDetailed
ClubDetailed :: Text -> ClubType -> Text -> Text -> Integer -> Integer -> Text -> Bool -> Text -> Text -> ResourceState -> SportType -> Text -> ClubDetailed
[clubDetailed_city] :: ClubDetailed -> Text
[clubDetailed_clubType] :: ClubDetailed -> ClubType
[clubDetailed_country] :: ClubDetailed -> Text
[clubDetailed_description] :: ClubDetailed -> Text
[clubDetailed_id] :: ClubDetailed -> Integer
[clubDetailed_memberCount] :: ClubDetailed -> Integer
[clubDetailed_name] :: ClubDetailed -> Text
[clubDetailed_private] :: ClubDetailed -> Bool
[clubDetailed_profile] :: ClubDetailed -> Text
[clubDetailed_profileMedium] :: ClubDetailed -> Text
[clubDetailed_resourceState] :: ClubDetailed -> ResourceState
[clubDetailed_sportType] :: ClubDetailed -> SportType
[clubDetailed_state] :: ClubDetailed -> Text

-- | <a>http://strava.github.io/api/v3/clubs/#summary</a>
data ClubSummary
ClubSummary :: Integer -> Text -> Text -> Text -> ResourceState -> ClubSummary
[clubSummary_id] :: ClubSummary -> Integer
[clubSummary_name] :: ClubSummary -> Text
[clubSummary_profile] :: ClubSummary -> Text
[clubSummary_profileMedium] :: ClubSummary -> Text
[clubSummary_resourceState] :: ClubSummary -> ResourceState
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Clubs.ClubSummary
instance GHC.Show.Show Strive.Types.Clubs.ClubSummary
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Clubs.ClubDetailed
instance GHC.Show.Show Strive.Types.Clubs.ClubDetailed


-- | <a>http://strava.github.io/api/v3/gear/</a>
module Strive.Types.Gear

-- | <a>http://strava.github.io/api/v3/gear/#detailed</a>
data GearDetailed
GearDetailed :: Text -> Text -> Double -> Maybe FrameType -> Text -> Text -> Text -> Bool -> ResourceState -> GearDetailed
[gearDetailed_brandName] :: GearDetailed -> Text
[gearDetailed_description] :: GearDetailed -> Text
[gearDetailed_distance] :: GearDetailed -> Double
[gearDetailed_frameType] :: GearDetailed -> Maybe FrameType
[gearDetailed_id] :: GearDetailed -> Text
[gearDetailed_modelName] :: GearDetailed -> Text
[gearDetailed_name] :: GearDetailed -> Text
[gearDetailed_primary] :: GearDetailed -> Bool
[gearDetailed_resourceState] :: GearDetailed -> ResourceState

-- | <a>http://strava.github.io/api/v3/gear/#summary</a>
data GearSummary
GearSummary :: Double -> Text -> Text -> Bool -> ResourceState -> GearSummary
[gearSummary_distance] :: GearSummary -> Double
[gearSummary_id] :: GearSummary -> Text
[gearSummary_name] :: GearSummary -> Text
[gearSummary_primary] :: GearSummary -> Bool
[gearSummary_resourceState] :: GearSummary -> ResourceState
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Gear.GearSummary
instance GHC.Show.Show Strive.Types.Gear.GearSummary
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Gear.GearDetailed
instance GHC.Show.Show Strive.Types.Gear.GearDetailed


-- | <a>http://strava.github.io/api/v3/athlete/</a>
module Strive.Types.Athletes

-- | <a>http://strava.github.io/api/v3/athlete/#detailed</a>
data AthleteDetailed
AthleteDetailed :: [GearSummary] -> Text -> [ClubSummary] -> Text -> UTCTime -> Text -> Text -> Text -> Maybe Text -> Integer -> Maybe Text -> Integer -> Maybe Integer -> Integer -> Text -> MeasurementPreference -> Integer -> Bool -> Text -> Text -> ResourceState -> Maybe Gender -> [GearSummary] -> Maybe Text -> UTCTime -> Maybe Double -> AthleteDetailed
[athleteDetailed_bikes] :: AthleteDetailed -> [GearSummary]
[athleteDetailed_city] :: AthleteDetailed -> Text
[athleteDetailed_clubs] :: AthleteDetailed -> [ClubSummary]
[athleteDetailed_country] :: AthleteDetailed -> Text
[athleteDetailed_createdAt] :: AthleteDetailed -> UTCTime
[athleteDetailed_datePreference] :: AthleteDetailed -> Text
[athleteDetailed_email] :: AthleteDetailed -> Text
[athleteDetailed_firstname] :: AthleteDetailed -> Text
[athleteDetailed_follower] :: AthleteDetailed -> Maybe Text
[athleteDetailed_followerCount] :: AthleteDetailed -> Integer
[athleteDetailed_friend] :: AthleteDetailed -> Maybe Text
[athleteDetailed_friendCount] :: AthleteDetailed -> Integer
[athleteDetailed_ftp] :: AthleteDetailed -> Maybe Integer
[athleteDetailed_id] :: AthleteDetailed -> Integer
[athleteDetailed_lastname] :: AthleteDetailed -> Text
[athleteDetailed_measurementPreference] :: AthleteDetailed -> MeasurementPreference
[athleteDetailed_mutualFriendCount] :: AthleteDetailed -> Integer
[athleteDetailed_premium] :: AthleteDetailed -> Bool
[athleteDetailed_profile] :: AthleteDetailed -> Text
[athleteDetailed_profileMedium] :: AthleteDetailed -> Text
[athleteDetailed_resourceState] :: AthleteDetailed -> ResourceState
[athleteDetailed_sex] :: AthleteDetailed -> Maybe Gender
[athleteDetailed_shoes] :: AthleteDetailed -> [GearSummary]
[athleteDetailed_state] :: AthleteDetailed -> Maybe Text
[athleteDetailed_updatedAt] :: AthleteDetailed -> UTCTime
[athleteDetailed_weight] :: AthleteDetailed -> Maybe Double

-- | <a>http://strava.github.io/api/v3/athlete/#summary</a>
data AthleteSummary
AthleteSummary :: Maybe Text -> Maybe Text -> UTCTime -> Text -> Maybe Text -> Maybe Text -> Integer -> Text -> Bool -> Text -> Text -> ResourceState -> Maybe Gender -> Maybe Text -> UTCTime -> AthleteSummary
[athleteSummary_city] :: AthleteSummary -> Maybe Text
[athleteSummary_country] :: AthleteSummary -> Maybe Text
[athleteSummary_createdAt] :: AthleteSummary -> UTCTime
[athleteSummary_firstname] :: AthleteSummary -> Text
[athleteSummary_follower] :: AthleteSummary -> Maybe Text
[athleteSummary_friend] :: AthleteSummary -> Maybe Text
[athleteSummary_id] :: AthleteSummary -> Integer
[athleteSummary_lastname] :: AthleteSummary -> Text
[athleteSummary_premium] :: AthleteSummary -> Bool
[athleteSummary_profile] :: AthleteSummary -> Text
[athleteSummary_profileMedium] :: AthleteSummary -> Text
[athleteSummary_resourceState] :: AthleteSummary -> ResourceState
[athleteSummary_sex] :: AthleteSummary -> Maybe Gender
[athleteSummary_state] :: AthleteSummary -> Maybe Text
[athleteSummary_updatedAt] :: AthleteSummary -> UTCTime

-- | <a>http://strava.github.io/api/v3/athlete/#meta</a>
data AthleteMeta
AthleteMeta :: Integer -> ResourceState -> AthleteMeta
[athleteMeta_id] :: AthleteMeta -> Integer
[athleteMeta_resourceState] :: AthleteMeta -> ResourceState

-- | <a>http://strava.github.io/api/v3/athlete/#stats</a>
data ActivityTotals
ActivityTotals :: Integer -> Double -> Double -> Double -> Double -> Double -> ActivityTotals
[activityTotals_count] :: ActivityTotals -> Integer
[activityTotals_distance] :: ActivityTotals -> Double
[activityTotals_movingTime] :: ActivityTotals -> Double
[activityTotals_elapsedTime] :: ActivityTotals -> Double
[activityTotals_elevationGain] :: ActivityTotals -> Double
[activityTotals_achievementCount] :: ActivityTotals -> Double

-- | <a>http://strava.github.io/api/v3/athlete/#stats</a>
data AthleteStats
AthleteStats :: Double -> Double -> ActivityTotals -> ActivityTotals -> ActivityTotals -> ActivityTotals -> ActivityTotals -> ActivityTotals -> AthleteStats
[athleteStats_biggestRideDistance] :: AthleteStats -> Double
[athleteStats_biggestClimbElevationGain] :: AthleteStats -> Double
[athleteStats_recentRideTotals] :: AthleteStats -> ActivityTotals
[athleteStats_recentRunTotals] :: AthleteStats -> ActivityTotals
[athleteStats_ytdRideTotals] :: AthleteStats -> ActivityTotals
[athleteStats_ytdRunTotals] :: AthleteStats -> ActivityTotals
[athleteStats_allRideTotals] :: AthleteStats -> ActivityTotals
[athleteStats_allRunTotals] :: AthleteStats -> ActivityTotals
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Athletes.AthleteStats
instance GHC.Show.Show Strive.Types.Athletes.AthleteStats
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Athletes.ActivityTotals
instance GHC.Show.Show Strive.Types.Athletes.ActivityTotals
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Athletes.AthleteMeta
instance GHC.Show.Show Strive.Types.Athletes.AthleteMeta
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Athletes.AthleteSummary
instance GHC.Show.Show Strive.Types.Athletes.AthleteSummary
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Athletes.AthleteDetailed
instance GHC.Show.Show Strive.Types.Athletes.AthleteDetailed


-- | <a>http://strava.github.io/api/v3/comments/</a>
module Strive.Types.Comments

-- | 
--   <a>http://strava.github.io/api/v3/comments/#summary-and-detailed-representation-attributes</a>
data CommentSummary
CommentSummary :: Integer -> AthleteSummary -> UTCTime -> Integer -> ResourceState -> Text -> CommentSummary
[commentSummary_activityId] :: CommentSummary -> Integer
[commentSummary_athlete] :: CommentSummary -> AthleteSummary
[commentSummary_createdAt] :: CommentSummary -> UTCTime
[commentSummary_id] :: CommentSummary -> Integer
[commentSummary_resourceState] :: CommentSummary -> ResourceState
[commentSummary_text] :: CommentSummary -> Text
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Comments.CommentSummary
instance GHC.Show.Show Strive.Types.Comments.CommentSummary


-- | <a>http://strava.github.io/api/v3/oauth/</a>
module Strive.Types.Authentication

-- | <a>http://strava.github.io/api/v3/oauth/#example-response</a>
data TokenExchangeResponse
TokenExchangeResponse :: Text -> AthleteSummary -> TokenExchangeResponse
[tokenExchangeResponse_accessToken] :: TokenExchangeResponse -> Text
[tokenExchangeResponse_athlete] :: TokenExchangeResponse -> AthleteSummary

-- | <a>http://strava.github.io/api/v3/oauth/#example-response-1</a>
data DeauthorizationResponse
DeauthorizationResponse :: Text -> DeauthorizationResponse
[deauthorizationResponse_accessToken] :: DeauthorizationResponse -> Text
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Authentication.DeauthorizationResponse
instance GHC.Show.Show Strive.Types.Authentication.DeauthorizationResponse
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Authentication.TokenExchangeResponse
instance GHC.Show.Show Strive.Types.Authentication.TokenExchangeResponse


-- | <a>http://strava.github.io/api/v3/photos/</a>
module Strive.Types.Photos

-- | 
--   <a>http://strava.github.io/api/v3/photos/#summary-and-detailed-representation-attributes</a>
data PhotoSummary
PhotoSummary :: Integer -> Text -> UTCTime -> Integer -> Maybe (Double, Double) -> Text -> ResourceState -> PhotoType -> Text -> UTCTime -> PhotoSummary
[photoSummary_activityId] :: PhotoSummary -> Integer
[photoSummary_caption] :: PhotoSummary -> Text
[photoSummary_createdAt] :: PhotoSummary -> UTCTime
[photoSummary_id] :: PhotoSummary -> Integer
[photoSummary_location] :: PhotoSummary -> Maybe (Double, Double)
[photoSummary_ref] :: PhotoSummary -> Text
[photoSummary_resourceState] :: PhotoSummary -> ResourceState
[photoSummary_type] :: PhotoSummary -> PhotoType
[photoSummary_uid] :: PhotoSummary -> Text
[photoSummary_uploadedAt] :: PhotoSummary -> UTCTime
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Photos.PhotoSummary
instance GHC.Show.Show Strive.Types.Photos.PhotoSummary


-- | <a>http://strava.github.io/api/#polylines</a>
module Strive.Types.Polylines

-- | <a>http://strava.github.io/api/#polylines</a>
newtype Polyline
Polyline :: [(Double, Double)] -> Polyline
[unPolyline] :: Polyline -> [(Double, Double)]

-- | <a>http://strava.github.io/api/v3/activities/#detailed</a>
data PolylineDetailed
PolylineDetailed :: Text -> Polyline -> ResourceState -> Maybe Polyline -> PolylineDetailed
[polylineDetailed_id] :: PolylineDetailed -> Text
[polylineDetailed_polyline] :: PolylineDetailed -> Polyline
[polylineDetailed_resourceState] :: PolylineDetailed -> ResourceState
[polylineDetailed_summaryPolyline] :: PolylineDetailed -> Maybe Polyline

-- | <a>http://strava.github.io/api/v3/activities/#summary</a>
data PolylineSummary
PolylineSummary :: Text -> ResourceState -> Maybe Polyline -> PolylineSummary
[polylineSummary_id] :: PolylineSummary -> Text
[polylineSummary_resourceState] :: PolylineSummary -> ResourceState
[polylineSummary_summaryPolyline] :: PolylineSummary -> Maybe Polyline
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Polylines.PolylineSummary
instance GHC.Show.Show Strive.Types.Polylines.PolylineSummary
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Polylines.PolylineDetailed
instance GHC.Show.Show Strive.Types.Polylines.PolylineDetailed
instance GHC.Show.Show Strive.Types.Polylines.Polyline
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Polylines.Polyline


-- | <a>http://strava.github.io/api/v3/segments/</a>
module Strive.Types.Segments

-- | <a>http://strava.github.io/api/v3/segments/#detailed</a>
data SegmentDetailed
SegmentDetailed :: ActivityType -> Integer -> Double -> Text -> Integer -> Text -> UTCTime -> Double -> Integer -> Double -> Double -> Double -> (Double, Double) -> Double -> Bool -> Integer -> PolylineDetailed -> Double -> Text -> Bool -> ResourceState -> Integer -> Bool -> Double -> (Double, Double) -> Double -> Text -> Double -> UTCTime -> SegmentDetailed
[segmentDetailed_activityType] :: SegmentDetailed -> ActivityType
[segmentDetailed_athleteCount] :: SegmentDetailed -> Integer
[segmentDetailed_averageGrade] :: SegmentDetailed -> Double
[segmentDetailed_city] :: SegmentDetailed -> Text
[segmentDetailed_climbCategory] :: SegmentDetailed -> Integer
[segmentDetailed_country] :: SegmentDetailed -> Text
[segmentDetailed_createdAt] :: SegmentDetailed -> UTCTime
[segmentDetailed_distance] :: SegmentDetailed -> Double
[segmentDetailed_effortCount] :: SegmentDetailed -> Integer
[segmentDetailed_elevationHigh] :: SegmentDetailed -> Double
[segmentDetailed_elevationLow] :: SegmentDetailed -> Double
[segmentDetailed_endLatitude] :: SegmentDetailed -> Double
[segmentDetailed_endLatlng] :: SegmentDetailed -> (Double, Double)
[segmentDetailed_endLongitude] :: SegmentDetailed -> Double
[segmentDetailed_hazardous] :: SegmentDetailed -> Bool
[segmentDetailed_id] :: SegmentDetailed -> Integer
[segmentDetailed_map] :: SegmentDetailed -> PolylineDetailed
[segmentDetailed_maximumGrade] :: SegmentDetailed -> Double
[segmentDetailed_name] :: SegmentDetailed -> Text
[segmentDetailed_private] :: SegmentDetailed -> Bool
[segmentDetailed_resourceState] :: SegmentDetailed -> ResourceState
[segmentDetailed_starCount] :: SegmentDetailed -> Integer
[segmentDetailed_starred] :: SegmentDetailed -> Bool
[segmentDetailed_startLatitude] :: SegmentDetailed -> Double
[segmentDetailed_startLatlng] :: SegmentDetailed -> (Double, Double)
[segmentDetailed_startLongitude] :: SegmentDetailed -> Double
[segmentDetailed_state] :: SegmentDetailed -> Text
[segmentDetailed_totalElevationGain] :: SegmentDetailed -> Double
[segmentDetailed_updatedAt] :: SegmentDetailed -> UTCTime

-- | <a>http://strava.github.io/api/v3/segments/#summary</a>
data SegmentSummary
SegmentSummary :: ActivityType -> Double -> Text -> Integer -> Text -> Double -> Double -> Double -> Double -> (Double, Double) -> Double -> Integer -> Double -> Text -> Bool -> ResourceState -> Bool -> Double -> (Double, Double) -> Double -> Text -> SegmentSummary
[segmentSummary_activityType] :: SegmentSummary -> ActivityType
[segmentSummary_averageGrade] :: SegmentSummary -> Double
[segmentSummary_city] :: SegmentSummary -> Text
[segmentSummary_climbCategory] :: SegmentSummary -> Integer
[segmentSummary_country] :: SegmentSummary -> Text
[segmentSummary_distance] :: SegmentSummary -> Double
[segmentSummary_elevationHigh] :: SegmentSummary -> Double
[segmentSummary_elevationLow] :: SegmentSummary -> Double
[segmentSummary_endLatitude] :: SegmentSummary -> Double
[segmentSummary_endLatlng] :: SegmentSummary -> (Double, Double)
[segmentSummary_endLongitude] :: SegmentSummary -> Double
[segmentSummary_id] :: SegmentSummary -> Integer
[segmentSummary_maximumGrade] :: SegmentSummary -> Double
[segmentSummary_name] :: SegmentSummary -> Text
[segmentSummary_private] :: SegmentSummary -> Bool
[segmentSummary_resourceState] :: SegmentSummary -> ResourceState
[segmentSummary_starred] :: SegmentSummary -> Bool
[segmentSummary_startLatitude] :: SegmentSummary -> Double
[segmentSummary_startLatlng] :: SegmentSummary -> (Double, Double)
[segmentSummary_startLongitude] :: SegmentSummary -> Double
[segmentSummary_state] :: SegmentSummary -> Text

-- | <a>http://strava.github.io/api/v3/segments/#leaderboard</a>
data SegmentLeaderboardResponse
SegmentLeaderboardResponse :: Integer -> Integer -> [SegmentLeaderboardEntry] -> SegmentLeaderboardResponse
[segmentLeaderboardResponse_effortCount] :: SegmentLeaderboardResponse -> Integer
[segmentLeaderboardResponse_entryCount] :: SegmentLeaderboardResponse -> Integer
[segmentLeaderboardResponse_entries] :: SegmentLeaderboardResponse -> [SegmentLeaderboardEntry]

-- | <a>http://strava.github.io/api/v3/segments/#leaderboard</a>
data SegmentLeaderboardEntry
SegmentLeaderboardEntry :: Integer -> Maybe Gender -> Integer -> Text -> Text -> Double -> Double -> Double -> Integer -> Integer -> Integer -> Integer -> UTCTime -> UTCTime -> SegmentLeaderboardEntry
[segmentLeaderboardEntry_activityId] :: SegmentLeaderboardEntry -> Integer
[segmentLeaderboardEntry_athleteGender] :: SegmentLeaderboardEntry -> Maybe Gender
[segmentLeaderboardEntry_athleteId] :: SegmentLeaderboardEntry -> Integer
[segmentLeaderboardEntry_athleteName] :: SegmentLeaderboardEntry -> Text
[segmentLeaderboardEntry_athleteProfile] :: SegmentLeaderboardEntry -> Text
[segmentLeaderboardEntry_averageHr] :: SegmentLeaderboardEntry -> Double
[segmentLeaderboardEntry_averageWatts] :: SegmentLeaderboardEntry -> Double
[segmentLeaderboardEntry_distance] :: SegmentLeaderboardEntry -> Double
[segmentLeaderboardEntry_effortId] :: SegmentLeaderboardEntry -> Integer
[segmentLeaderboardEntry_elapsedTime] :: SegmentLeaderboardEntry -> Integer
[segmentLeaderboardEntry_movingTime] :: SegmentLeaderboardEntry -> Integer
[segmentLeaderboardEntry_rank] :: SegmentLeaderboardEntry -> Integer
[segmentLeaderboardEntry_startDate] :: SegmentLeaderboardEntry -> UTCTime
[segmentLeaderboardEntry_startDateLocal] :: SegmentLeaderboardEntry -> UTCTime

-- | <a>http://strava.github.io/api/v3/segments/#explore</a>
data SegmentExplorerResponse
SegmentExplorerResponse :: [SegmentExplorerEntry] -> SegmentExplorerResponse
[segmentExplorerResponse_segments] :: SegmentExplorerResponse -> [SegmentExplorerEntry]

-- | <a>http://strava.github.io/api/v3/segments/#explore</a>
data SegmentExplorerEntry
SegmentExplorerEntry :: Double -> Integer -> String -> Double -> Double -> (Double, Double) -> Integer -> Text -> Polyline -> ResourceState -> Bool -> (Double, Double) -> SegmentExplorerEntry
[segmentExplorerEntry_avgGrade] :: SegmentExplorerEntry -> Double
[segmentExplorerEntry_climbCategory] :: SegmentExplorerEntry -> Integer
[segmentExplorerEntry_climbCategoryDesc] :: SegmentExplorerEntry -> String
[segmentExplorerEntry_distance] :: SegmentExplorerEntry -> Double
[segmentExplorerEntry_elevDifference] :: SegmentExplorerEntry -> Double
[segmentExplorerEntry_endLatlng] :: SegmentExplorerEntry -> (Double, Double)
[segmentExplorerEntry_id] :: SegmentExplorerEntry -> Integer
[segmentExplorerEntry_name] :: SegmentExplorerEntry -> Text
[segmentExplorerEntry_points] :: SegmentExplorerEntry -> Polyline
[segmentExplorerEntry_resourceState] :: SegmentExplorerEntry -> ResourceState
[segmentExplorerEntry_starred] :: SegmentExplorerEntry -> Bool
[segmentExplorerEntry_startLatlng] :: SegmentExplorerEntry -> (Double, Double)
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Segments.SegmentExplorerResponse
instance GHC.Show.Show Strive.Types.Segments.SegmentExplorerResponse
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Segments.SegmentExplorerEntry
instance GHC.Show.Show Strive.Types.Segments.SegmentExplorerEntry
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Segments.SegmentLeaderboardResponse
instance GHC.Show.Show Strive.Types.Segments.SegmentLeaderboardResponse
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Segments.SegmentLeaderboardEntry
instance GHC.Show.Show Strive.Types.Segments.SegmentLeaderboardEntry
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Segments.SegmentSummary
instance GHC.Show.Show Strive.Types.Segments.SegmentSummary
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Segments.SegmentDetailed
instance GHC.Show.Show Strive.Types.Segments.SegmentDetailed


-- | <a>http://strava.github.io/api/v3/efforts/</a>
module Strive.Types.Efforts

-- | <a>http://strava.github.io/api/v3/efforts/#detailed</a>
data EffortDetailed
EffortDetailed :: Integer -> Integer -> Maybe Double -> Maybe Double -> Maybe Double -> Double -> Integer -> Integer -> Maybe Bool -> Integer -> Maybe Integer -> Maybe Integer -> Integer -> Text -> Maybe Integer -> ResourceState -> SegmentSummary -> UTCTime -> UTCTime -> Integer -> EffortDetailed
[effortDetailed_activityId] :: EffortDetailed -> Integer
[effortDetailed_athleteId] :: EffortDetailed -> Integer
[effortDetailed_averageCadence] :: EffortDetailed -> Maybe Double
[effortDetailed_averageHeartrate] :: EffortDetailed -> Maybe Double
[effortDetailed_averageWatts] :: EffortDetailed -> Maybe Double
[effortDetailed_distance] :: EffortDetailed -> Double
[effortDetailed_elapsedTime] :: EffortDetailed -> Integer
[effortDetailed_endIndex] :: EffortDetailed -> Integer
[effortDetailed_hidden] :: EffortDetailed -> Maybe Bool
[effortDetailed_id] :: EffortDetailed -> Integer
[effortDetailed_komRank] :: EffortDetailed -> Maybe Integer
[effortDetailed_maxHeartrate] :: EffortDetailed -> Maybe Integer
[effortDetailed_movingTime] :: EffortDetailed -> Integer
[effortDetailed_name] :: EffortDetailed -> Text
[effortDetailed_prRank] :: EffortDetailed -> Maybe Integer
[effortDetailed_resourceState] :: EffortDetailed -> ResourceState
[effortDetailed_segment] :: EffortDetailed -> SegmentSummary
[effortDetailed_startDate] :: EffortDetailed -> UTCTime
[effortDetailed_startDateLocal] :: EffortDetailed -> UTCTime
[effortDetailed_startIndex] :: EffortDetailed -> Integer
instance GHC.Show.Show Strive.Types.Efforts.EffortDetailed
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Efforts.EffortDetailed


-- | <a>http://strava.github.io/api/v3/activities/</a>
module Strive.Types.Activities

-- | <a>http://strava.github.io/api/v3/activities/#detailed</a>
data ActivityDetailed
ActivityDetailed :: Integer -> AthleteMeta -> Integer -> Double -> Maybe Double -> Maybe Double -> Double -> Integer -> Bool -> Maybe Text -> Maybe Bool -> Double -> Integer -> Maybe (Double, Double) -> Maybe Text -> Bool -> GearSummary -> Maybe Text -> Bool -> Integer -> Maybe Text -> Maybe Double -> Maybe Text -> Maybe Text -> Maybe Text -> Bool -> PolylineDetailed -> Maybe Double -> Double -> Integer -> Text -> Integer -> Bool -> ResourceState -> [EffortDetailed] -> UTCTime -> UTCTime -> Double -> Maybe (Double, Double) -> Double -> Text -> Double -> Bool -> Integer -> ActivityType -> Maybe Integer -> Maybe Integer -> ActivityDetailed
[activityDetailed_achievementCount] :: ActivityDetailed -> Integer
[activityDetailed_athlete] :: ActivityDetailed -> AthleteMeta
[activityDetailed_athleteCount] :: ActivityDetailed -> Integer
[activityDetailed_averageSpeed] :: ActivityDetailed -> Double
[activityDetailed_averageWatts] :: ActivityDetailed -> Maybe Double
[activityDetailed_averageHeartrate] :: ActivityDetailed -> Maybe Double
[activityDetailed_calories] :: ActivityDetailed -> Double
[activityDetailed_commentCount] :: ActivityDetailed -> Integer
[activityDetailed_commute] :: ActivityDetailed -> Bool
[activityDetailed_description] :: ActivityDetailed -> Maybe Text
[activityDetailed_deviceWatts] :: ActivityDetailed -> Maybe Bool
[activityDetailed_distance] :: ActivityDetailed -> Double
[activityDetailed_elapsedTime] :: ActivityDetailed -> Integer
[activityDetailed_endLatlng] :: ActivityDetailed -> Maybe (Double, Double)
[activityDetailed_externalId] :: ActivityDetailed -> Maybe Text
[activityDetailed_flagged] :: ActivityDetailed -> Bool
[activityDetailed_gear] :: ActivityDetailed -> GearSummary
[activityDetailed_gearId] :: ActivityDetailed -> Maybe Text
[activityDetailed_hasKudoed] :: ActivityDetailed -> Bool
[activityDetailed_id] :: ActivityDetailed -> Integer
[activityDetailed_instagramPrimaryPhoto] :: ActivityDetailed -> Maybe Text
[activityDetailed_kilojoules] :: ActivityDetailed -> Maybe Double
[activityDetailed_locationCity] :: ActivityDetailed -> Maybe Text
[activityDetailed_locationCountry] :: ActivityDetailed -> Maybe Text
[activityDetailed_locationState] :: ActivityDetailed -> Maybe Text
[activityDetailed_manual] :: ActivityDetailed -> Bool
[activityDetailed_map] :: ActivityDetailed -> PolylineDetailed
[activityDetailed_maxHeartrate] :: ActivityDetailed -> Maybe Double
[activityDetailed_maxSpeed] :: ActivityDetailed -> Double
[activityDetailed_movingTime] :: ActivityDetailed -> Integer
[activityDetailed_name] :: ActivityDetailed -> Text
[activityDetailed_photoCount] :: ActivityDetailed -> Integer
[activityDetailed_private] :: ActivityDetailed -> Bool
[activityDetailed_resourceState] :: ActivityDetailed -> ResourceState
[activityDetailed_segmentEfforts] :: ActivityDetailed -> [EffortDetailed]
[activityDetailed_startDate] :: ActivityDetailed -> UTCTime
[activityDetailed_startDateLocal] :: ActivityDetailed -> UTCTime
[activityDetailed_startLatitude] :: ActivityDetailed -> Double
[activityDetailed_startLatlng] :: ActivityDetailed -> Maybe (Double, Double)
[activityDetailed_startLongitude] :: ActivityDetailed -> Double
[activityDetailed_timezone] :: ActivityDetailed -> Text
[activityDetailed_totalElevationGain] :: ActivityDetailed -> Double
[activityDetailed_trainer] :: ActivityDetailed -> Bool
[activityDetailed_truncated] :: ActivityDetailed -> Integer
[activityDetailed_type] :: ActivityDetailed -> ActivityType
[activityDetailed_uploadId] :: ActivityDetailed -> Maybe Integer
[activityDetailed_weightedAverageWatts] :: ActivityDetailed -> Maybe Integer

-- | <a>http://strava.github.io/api/v3/activities/#summary</a>
data ActivitySummary
ActivitySummary :: Integer -> AthleteMeta -> Integer -> Double -> Maybe Double -> Maybe Double -> Integer -> Bool -> Maybe Bool -> Double -> Integer -> Maybe (Double, Double) -> Maybe Text -> Bool -> Maybe Text -> Bool -> Integer -> Maybe Double -> Integer -> Maybe Text -> Maybe Text -> Maybe Text -> Bool -> PolylineSummary -> Maybe Double -> Double -> Integer -> Text -> Integer -> Bool -> ResourceState -> UTCTime -> UTCTime -> Double -> Maybe (Double, Double) -> Double -> Text -> Double -> Bool -> ActivityType -> Maybe Integer -> Maybe Integer -> ActivitySummary
[activitySummary_achievementCount] :: ActivitySummary -> Integer
[activitySummary_athlete] :: ActivitySummary -> AthleteMeta
[activitySummary_athleteCount] :: ActivitySummary -> Integer
[activitySummary_averageSpeed] :: ActivitySummary -> Double
[activitySummary_averageWatts] :: ActivitySummary -> Maybe Double
[activitySummary_averageHeartrate] :: ActivitySummary -> Maybe Double
[activitySummary_commentCount] :: ActivitySummary -> Integer
[activitySummary_commute] :: ActivitySummary -> Bool
[activitySummary_deviceWatts] :: ActivitySummary -> Maybe Bool
[activitySummary_distance] :: ActivitySummary -> Double
[activitySummary_elapsedTime] :: ActivitySummary -> Integer
[activitySummary_endLatlng] :: ActivitySummary -> Maybe (Double, Double)
[activitySummary_externalId] :: ActivitySummary -> Maybe Text
[activitySummary_flagged] :: ActivitySummary -> Bool
[activitySummary_gearId] :: ActivitySummary -> Maybe Text
[activitySummary_hasKudoed] :: ActivitySummary -> Bool
[activitySummary_id] :: ActivitySummary -> Integer
[activitySummary_kilojoules] :: ActivitySummary -> Maybe Double
[activitySummary_kudosCount] :: ActivitySummary -> Integer
[activitySummary_locationCity] :: ActivitySummary -> Maybe Text
[activitySummary_locationCountry] :: ActivitySummary -> Maybe Text
[activitySummary_locationState] :: ActivitySummary -> Maybe Text
[activitySummary_manual] :: ActivitySummary -> Bool
[activitySummary_map] :: ActivitySummary -> PolylineSummary
[activitySummary_maxHeartrate] :: ActivitySummary -> Maybe Double
[activitySummary_maxSpeed] :: ActivitySummary -> Double
[activitySummary_movingTime] :: ActivitySummary -> Integer
[activitySummary_name] :: ActivitySummary -> Text
[activitySummary_photoCount] :: ActivitySummary -> Integer
[activitySummary_private] :: ActivitySummary -> Bool
[activitySummary_resourceState] :: ActivitySummary -> ResourceState
[activitySummary_startDate] :: ActivitySummary -> UTCTime
[activitySummary_startDateLocal] :: ActivitySummary -> UTCTime
[activitySummary_startLatitude] :: ActivitySummary -> Double
[activitySummary_startLatlng] :: ActivitySummary -> Maybe (Double, Double)
[activitySummary_startLongitude] :: ActivitySummary -> Double
[activitySummary_timezone] :: ActivitySummary -> Text
[activitySummary_totalElevationGain] :: ActivitySummary -> Double
[activitySummary_trainer] :: ActivitySummary -> Bool
[activitySummary_type] :: ActivitySummary -> ActivityType
[activitySummary_uploadId] :: ActivitySummary -> Maybe Integer
[activitySummary_weightedAverageWatts] :: ActivitySummary -> Maybe Integer

-- | <a>http://strava.github.io/api/v3/activities/#zones</a>
data ActivityZoneDetailed
ActivityZoneDetailed :: [ActivityZoneDistributionBucket] -> ResourceState -> Bool -> ActivityZoneType -> ActivityZoneDetailed
[activityZoneDetailed_distributionBuckets] :: ActivityZoneDetailed -> [ActivityZoneDistributionBucket]
[activityZoneDetailed_resourceState] :: ActivityZoneDetailed -> ResourceState
[activityZoneDetailed_sensorBased] :: ActivityZoneDetailed -> Bool
[activityZoneDetailed_type] :: ActivityZoneDetailed -> ActivityZoneType

-- | <a>http://strava.github.io/api/v3/activities/#zones</a>
data ActivityZoneDistributionBucket
ActivityZoneDistributionBucket :: Integer -> Integer -> Integer -> ActivityZoneDistributionBucket
[activityZoneDistributionBucket_max] :: ActivityZoneDistributionBucket -> Integer
[activityZoneDistributionBucket_min] :: ActivityZoneDistributionBucket -> Integer
[activityZoneDistributionBucket_time] :: ActivityZoneDistributionBucket -> Integer

-- | <a>http://strava.github.io/api/v3/activities/#laps</a>
data ActivityLapSummary
ActivityLapSummary :: Integer -> Integer -> Double -> Double -> Double -> Integer -> Integer -> Integer -> Integer -> Double -> Double -> Text -> ResourceState -> UTCTime -> UTCTime -> Integer -> Double -> ActivityLapSummary
[activityLapSummary_activityId] :: ActivityLapSummary -> Integer
[activityLapSummary_athleteId] :: ActivityLapSummary -> Integer
[activityLapSummary_averageSpeed] :: ActivityLapSummary -> Double
[activityLapSummary_averageWatts] :: ActivityLapSummary -> Double
[activityLapSummary_distance] :: ActivityLapSummary -> Double
[activityLapSummary_elapsedTime] :: ActivityLapSummary -> Integer
[activityLapSummary_endIndex] :: ActivityLapSummary -> Integer
[activityLapSummary_id] :: ActivityLapSummary -> Integer
[activityLapSummary_lapIndex] :: ActivityLapSummary -> Integer
[activityLapSummary_maxSpeed] :: ActivityLapSummary -> Double
[activityLapSummary_movingTime] :: ActivityLapSummary -> Double
[activityLapSummary_name] :: ActivityLapSummary -> Text
[activityLapSummary_resourceState] :: ActivityLapSummary -> ResourceState
[activityLapSummary_startDate] :: ActivityLapSummary -> UTCTime
[activityLapSummary_startDateLocal] :: ActivityLapSummary -> UTCTime
[activityLapSummary_startIndex] :: ActivityLapSummary -> Integer
[activityLapSummary_totalElevationGain] :: ActivityLapSummary -> Double
instance GHC.Show.Show Strive.Types.Activities.ActivityLapSummary
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Activities.ActivityLapSummary
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Activities.ActivityZoneDetailed
instance GHC.Show.Show Strive.Types.Activities.ActivityZoneDetailed
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Activities.ActivityZoneDistributionBucket
instance GHC.Show.Show Strive.Types.Activities.ActivityZoneDistributionBucket
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Activities.ActivitySummary
instance GHC.Show.Show Strive.Types.Activities.ActivitySummary
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Activities.ActivityDetailed
instance GHC.Show.Show Strive.Types.Activities.ActivityDetailed


-- | <a>http://strava.github.io/api/v3/streams/</a>
module Strive.Types.Streams

-- | <a>http://strava.github.io/api/v3/streams/#detailed</a>
data StreamDetailed
StreamDetailed :: [Value] -> Integer -> Resolution -> SeriesType -> Text -> StreamDetailed
[streamDetailed_data] :: StreamDetailed -> [Value]
[streamDetailed_originalSize] :: StreamDetailed -> Integer
[streamDetailed_resolution] :: StreamDetailed -> Resolution
[streamDetailed_seriesType] :: StreamDetailed -> SeriesType
[streamDetailed_type] :: StreamDetailed -> Text
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Streams.StreamDetailed
instance GHC.Show.Show Strive.Types.Streams.StreamDetailed


-- | <a>http://strava.github.io/api/v3/uploads/</a>
module Strive.Types.Uploads

-- | <a>http://strava.github.io/api/v3/uploads/#attributes</a>
data UploadStatus
UploadStatus :: Maybe Integer -> Maybe Text -> Maybe Text -> Integer -> Text -> UploadStatus
[uploadStatus_activityId] :: UploadStatus -> Maybe Integer
[uploadStatus_error] :: UploadStatus -> Maybe Text
[uploadStatus_externalId] :: UploadStatus -> Maybe Text
[uploadStatus_id] :: UploadStatus -> Integer
[uploadStatus_status] :: UploadStatus -> Text
instance Data.Aeson.Types.FromJSON.FromJSON Strive.Types.Uploads.UploadStatus
instance GHC.Show.Show Strive.Types.Uploads.UploadStatus


-- | Data types representing responses from the API.
module Strive.Types


-- | <a>http://strava.github.io/api/v3/uploads/</a>
module Strive.Actions.Uploads

-- | <a>http://strava.github.io/api/v3/uploads/#post-file</a>
uploadActivity :: Client -> ByteString -> Extension -> UploadActivityOptions -> IO (Result UploadStatus)

-- | <a>http://strava.github.io/api/v3/uploads/#get-status</a>
getUpload :: Client -> UploadId -> IO (Result UploadStatus)


-- | <a>http://strava.github.io/api/v3/streams/</a>
module Strive.Actions.Streams

-- | <a>http://strava.github.io/api/v3/streams/#activity</a>
getActivityStreams :: Client -> StreamId -> [StreamType] -> GetStreamsOptions -> IO (Result [StreamDetailed])

-- | <a>http://strava.github.io/api/v3/streams/#effort</a>
getEffortStreams :: Client -> StreamId -> [StreamType] -> GetStreamsOptions -> IO (Result [StreamDetailed])

-- | <a>http://strava.github.io/api/v3/streams/#segment</a>
getSegmentStreams :: Client -> StreamId -> [StreamType] -> GetStreamsOptions -> IO (Result [StreamDetailed])


-- | <a>http://strava.github.io/api/v3/segments/</a>
module Strive.Actions.Segments

-- | <a>http://strava.github.io/api/v3/segments/#retrieve</a>
getSegment :: Client -> SegmentId -> IO (Result SegmentDetailed)

-- | <a>http://strava.github.io/api/v3/segments/#starred</a>
getStarredSegments :: Client -> GetStarredSegmentsOptions -> IO (Result [SegmentSummary])

-- | <a>http://strava.github.io/api/v3/segments/#efforts</a>
getSegmentEfforts :: Client -> SegmentId -> GetSegmentEffortsOptions -> IO (Result [EffortDetailed])

-- | <a>http://strava.github.io/api/v3/segments/#leaderboard</a>
getSegmentLeaderboard :: Client -> SegmentId -> GetSegmentLeaderboardOptions -> IO (Result SegmentLeaderboardResponse)

-- | <a>http://strava.github.io/api/v3/segments/#explore</a>
exploreSegments :: Client -> (Latitude, Longitude, Latitude, Longitude) -> ExploreSegmentsOptions -> IO (Result SegmentExplorerResponse)


-- | <a>http://strava.github.io/api/v3/photos/</a>
module Strive.Actions.Photos

-- | <a>http://strava.github.io/api/v3/photos/#list</a>
getActivityPhotos :: Client -> ActivityId -> IO (Result [PhotoSummary])


-- | <a>http://strava.github.io/api/v3/kudos/</a>
module Strive.Actions.Kudos

-- | <a>http://strava.github.io/api/v3/kudos/#list</a>
getActivityKudoers :: Client -> ActivityId -> GetActivityKudoersOptions -> IO (Result [AthleteSummary])


-- | <a>http://strava.github.io/api/v3/gear/</a>
module Strive.Actions.Gear

-- | <a>http://strava.github.io/api/v3/gear/#show</a>
getGear :: Client -> GearId -> IO (Result GearDetailed)


-- | <a>http://strava.github.io/api/v3/follow/</a>
module Strive.Actions.Friends

-- | <a>http://strava.github.io/api/v3/follow/#friends</a>
getCurrentFriends :: Client -> GetCurrentFriendsOptions -> IO (Result [AthleteSummary])

-- | <a>http://strava.github.io/api/v3/follow/#friends</a>
getFriends :: Client -> AthleteId -> GetFriendsOptions -> IO (Result [AthleteSummary])

-- | <a>http://strava.github.io/api/v3/follow/#followers</a>
getCurrentFollowers :: Client -> GetCurrentFollowersOptions -> IO (Result [AthleteSummary])

-- | <a>http://strava.github.io/api/v3/follow/#followers</a>
getFollowers :: Client -> AthleteId -> GetFollowersOptions -> IO (Result [AthleteSummary])

-- | <a>http://strava.github.io/api/v3/follow/#both</a>
getCommonFriends :: Client -> AthleteId -> GetCommonFriendsOptions -> IO (Result [AthleteSummary])


-- | <a>http://strava.github.io/api/v3/efforts/</a>
module Strive.Actions.Efforts

-- | <a>http://strava.github.io/api/v3/efforts/#retrieve</a>
getSegmentEffort :: Client -> EffortId -> IO (Result EffortDetailed)


-- | <a>http://strava.github.io/api/v3/comments/</a>
module Strive.Actions.Comments

-- | <a>http://strava.github.io/api/v3/comments/#list</a>
getActivityComments :: Client -> ActivityId -> GetActivityCommentsOptions -> IO (Result [CommentSummary])


-- | <a>http://strava.github.io/api/v3/clubs/</a>
module Strive.Actions.Clubs

-- | <a>http://strava.github.io/api/v3/clubs/#get-details</a>
getClub :: Client -> ClubId -> IO (Result ClubDetailed)

-- | <a>http://strava.github.io/api/v3/clubs/#get-athletes</a>
getCurrentClubs :: Client -> IO (Result [ClubSummary])

-- | <a>http://strava.github.io/api/v3/clubs/#get-members</a>
getClubMembers :: Client -> ClubId -> GetClubMembersOptions -> IO (Result [AthleteSummary])

-- | <a>http://strava.github.io/api/v3/clubs/#get-activities</a>
getClubActivities :: Client -> ClubId -> GetClubActivitiesOptions -> IO (Result [ActivitySummary])

-- | <a>http://strava.github.io/api/v3/clubs/#join</a>
joinClub :: Client -> ClubId -> IO (Result ())

-- | <a>http://strava.github.io/api/v3/clubs/#leave</a>
leaveClub :: Client -> ClubId -> IO (Result ())


-- | <a>http://strava.github.io/api/v3/oauth/</a>
module Strive.Actions.Authentication

-- | <a>http://strava.github.io/api/v3/oauth/#get-authorize</a>
buildAuthorizeUrl :: ApplicationId -> RedirectUri -> BuildAuthorizeUrlOptions -> String

-- | <a>http://strava.github.io/api/v3/oauth/#post-token</a>
exchangeToken :: ApplicationId -> ApplicationSecret -> AuthorizationCode -> IO (Result TokenExchangeResponse)

-- | <a>http://strava.github.io/api/v3/oauth/#deauthorize</a>
deauthorize :: Client -> IO (Result DeauthorizationResponse)


-- | <a>http://strava.github.io/api/v3/athlete/</a>
module Strive.Actions.Athletes

-- | <a>http://strava.github.io/api/v3/athlete/#get-details</a>
getCurrentAthlete :: Client -> IO (Result AthleteDetailed)

-- | <a>http://strava.github.io/api/v3/athlete/#get-another-details</a>
getAthlete :: Client -> AthleteId -> IO (Result AthleteSummary)

-- | <a>http://strava.github.io/api/v3/athlete/#update</a>
updateCurrentAthlete :: Client -> UpdateCurrentAthleteOptions -> IO (Result AthleteDetailed)

-- | <a>http://strava.github.io/api/v3/athlete/#stats</a>
getAthleteStats :: Client -> Integer -> IO (Result AthleteStats)

-- | <a>http://strava.github.io/api/v3/athlete/#koms</a>
getAthleteCrs :: Client -> AthleteId -> GetAthleteCrsOptions -> IO (Result [EffortDetailed])


-- | <a>http://strava.github.io/api/v3/activities/</a>
module Strive.Actions.Activities

-- | <a>http://strava.github.io/api/v3/activities/#create</a>
createActivity :: Client -> Name -> ActivityType -> StartTime -> ElapsedTime -> CreateActivityOptions -> IO (Result ActivityDetailed)

-- | <a>http://strava.github.io/api/v3/activities/#get-details</a>
getActivity :: Client -> ActivityId -> GetActivityOptions -> IO (Result ActivitySummary)

-- | <a>http://strava.github.io/api/v3/activities/#put-updates</a>
updateActivity :: Client -> ActivityId -> UpdateActivityOptions -> IO (Result ActivityDetailed)

-- | <a>http://strava.github.io/api/v3/activities/#delete</a>
deleteActivity :: Client -> ActivityId -> IO (Result ())

-- | <a>http://strava.github.io/api/v3/activities/#get-activities</a>
getCurrentActivities :: Client -> GetCurrentActivitiesOptions -> IO (Result [ActivitySummary])

-- | <a>http://strava.github.io/api/v3/activities/#get-related</a>
getRelatedActivities :: Client -> ActivityId -> GetRelatedActivitiesOptions -> IO (Result [ActivitySummary])

-- | <a>http://strava.github.io/api/v3/activities/#get-feed</a>
getFeed :: Client -> GetFeedOptions -> IO (Result [ActivitySummary])

-- | <a>http://strava.github.io/api/v3/activities/#zones</a>
getActivityZones :: Client -> ActivityId -> IO (Result [ActivityZoneDetailed])

-- | <a>http://strava.github.io/api/v3/activities/#laps</a>
getActivityLaps :: Client -> ActivityId -> IO (Result [ActivityLapSummary])


-- | Functions for performing actions against the API.
module Strive.Actions


-- | Utility functions for making common actions easier.
module Strive.Utilities

-- | Modify an action's default options by listing changes to it.
with :: Default a => [a -> a] -> a
altitudeStream :: StreamDetailed -> Maybe [Double]
cadenceStream :: StreamDetailed -> Maybe [Integer]
distanceStream :: StreamDetailed -> Maybe [Double]
gradeSmoothStream :: StreamDetailed -> Maybe [Double]
heartrateStream :: StreamDetailed -> Maybe [Integer]
latlngStream :: StreamDetailed -> Maybe [(Double, Double)]
movingStream :: StreamDetailed -> Maybe [Bool]
tempStream :: StreamDetailed -> Maybe [Integer]
timeStream :: StreamDetailed -> Maybe [Integer]
velocitySmoothStream :: StreamDetailed -> Maybe [Double]
wattsStream :: StreamDetailed -> Maybe [Integer]


-- | A Haskell client for the <a>Strava V3 API</a>.
module Strive
