ebird-api-0.2.0.0: A Haskell description of the eBird API
Copyright(c) 2023 Finley McIlwaine
LicenseMIT (see LICENSE)
MaintainerFinley McIlwaine <finleymcilwaine@gmail.com>
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.EBird.API.Observations

Description

Types and functions related to eBird observation API values.

Synopsis

Observation types

data Observation (detail :: DetailLevel) Source #

An observation of a species submitted to eBird within a checklist. The DetailLevel index indicates whether the observation data includes "full" details.

Constructors

Observation 

Fields

Instances

Instances details
(k ~ A_Lens, a ~ Text, b ~ Text) => LabelOptic "commonName" k (Observation detail) (Observation detail) a b Source # 
Instance details

Defined in Data.EBird.API.Observations

Methods

labelOptic :: Optic k NoIx (Observation detail) (Observation detail) a b #

(k ~ A_Lens, a ~ EBirdDateTime, b ~ EBirdDateTime) => LabelOptic "dateTime" k (Observation detail) (Observation detail) a b Source # 
Instance details

Defined in Data.EBird.API.Observations

Methods

labelOptic :: Optic k NoIx (Observation detail) (Observation detail) a b #

(k ~ A_Lens, a ~ ObservationDetails detail1, b ~ ObservationDetails detail2) => LabelOptic "fullDetail" k (Observation detail1) (Observation detail2) a b Source # 
Instance details

Defined in Data.EBird.API.Observations

Methods

labelOptic :: Optic k NoIx (Observation detail1) (Observation detail2) a b #

(k ~ A_Lens, a ~ Maybe Integer, b ~ Maybe Integer) => LabelOptic "howMany" k (Observation detail) (Observation detail) a b Source # 
Instance details

Defined in Data.EBird.API.Observations

Methods

labelOptic :: Optic k NoIx (Observation detail) (Observation detail) a b #

(k ~ A_Lens, a ~ Double, b ~ Double) => LabelOptic "latitude" k (Observation detail) (Observation detail) a b Source # 
Instance details

Defined in Data.EBird.API.Observations

Methods

labelOptic :: Optic k NoIx (Observation detail) (Observation detail) a b #

(k ~ A_Lens, a ~ Text, b ~ Text) => LabelOptic "locationId" k (Observation detail) (Observation detail) a b Source # 
Instance details

Defined in Data.EBird.API.Observations

Methods

labelOptic :: Optic k NoIx (Observation detail) (Observation detail) a b #

(k ~ A_Lens, a ~ Text, b ~ Text) => LabelOptic "locationName" k (Observation detail) (Observation detail) a b Source # 
Instance details

Defined in Data.EBird.API.Observations

Methods

labelOptic :: Optic k NoIx (Observation detail) (Observation detail) a b #

(k ~ A_Lens, a ~ Bool, b ~ Bool) => LabelOptic "locationPrivate" k (Observation detail) (Observation detail) a b Source # 
Instance details

Defined in Data.EBird.API.Observations

Methods

labelOptic :: Optic k NoIx (Observation detail) (Observation detail) a b #

(k ~ A_Lens, a ~ Double, b ~ Double) => LabelOptic "longitude" k (Observation detail) (Observation detail) a b Source # 
Instance details

Defined in Data.EBird.API.Observations

Methods

labelOptic :: Optic k NoIx (Observation detail) (Observation detail) a b #

(k ~ A_Lens, a ~ Bool, b ~ Bool) => LabelOptic "reviewed" k (Observation detail) (Observation detail) a b Source # 
Instance details

Defined in Data.EBird.API.Observations

Methods

labelOptic :: Optic k NoIx (Observation detail) (Observation detail) a b #

(k ~ A_Lens, a ~ Text, b ~ Text) => LabelOptic "scientificName" k (Observation detail) (Observation detail) a b Source # 
Instance details

Defined in Data.EBird.API.Observations

Methods

labelOptic :: Optic k NoIx (Observation detail) (Observation detail) a b #

(k ~ A_Lens, a ~ Text, b ~ Text) => LabelOptic "speciesCode" k (Observation detail) (Observation detail) a b Source # 
Instance details

Defined in Data.EBird.API.Observations

Methods

labelOptic :: Optic k NoIx (Observation detail) (Observation detail) a b #

(k ~ A_Lens, a ~ Text, b ~ Text) => LabelOptic "subId" k (Observation detail) (Observation detail) a b Source # 
Instance details

Defined in Data.EBird.API.Observations

Methods

labelOptic :: Optic k NoIx (Observation detail) (Observation detail) a b #

(k ~ A_Lens, a ~ Bool, b ~ Bool) => LabelOptic "valid" k (Observation detail) (Observation detail) a b Source # 
Instance details

Defined in Data.EBird.API.Observations

Methods

labelOptic :: Optic k NoIx (Observation detail) (Observation detail) a b #

Show (Observation 'Full) Source # 
Instance details

Defined in Data.EBird.API.Observations

Show (Observation 'Simple) Source # 
Instance details

Defined in Data.EBird.API.Observations

Eq (Observation 'Full) Source # 
Instance details

Defined in Data.EBird.API.Observations

Eq (Observation 'Simple) Source # 
Instance details

Defined in Data.EBird.API.Observations

FromJSON (Observation 'Full) Source #

Explicit instance for compatibility with their field names

Instance details

Defined in Data.EBird.API.Observations

FromJSON (Observation 'Simple) Source #

Explicit instance for compatibility with their field names

Instance details

Defined in Data.EBird.API.Observations

ToJSON (Observation 'Full) Source #

Explicit instance for compatibility with their field names

Instance details

Defined in Data.EBird.API.Observations

ToJSON (Observation 'Simple) Source #

Explicit instance for compatibility with their field names

Instance details

Defined in Data.EBird.API.Observations

data ObservationDetails (detail :: DetailLevel) where Source #

Extra details that may be attached to an observation. At the moment, it only seems possible to get Full detailed observations from the notable observation endpoints (e.g. RecentNotableObservationsAPI).

Constructors

NoDetails :: ObservationDetails 'Simple 
FullDetails 

Fields

Instances

Instances details
k ~ A_Lens => LabelOptic "checklistId" k (ObservationDetails 'Full) (ObservationDetails 'Full) Text Text Source # 
Instance details

Defined in Data.EBird.API.Observations

k ~ A_Lens => LabelOptic "countryCode" k (ObservationDetails 'Full) (ObservationDetails 'Full) Region Region Source # 
Instance details

Defined in Data.EBird.API.Observations

k ~ A_Lens => LabelOptic "countryName" k (ObservationDetails 'Full) (ObservationDetails 'Full) Text Text Source # 
Instance details

Defined in Data.EBird.API.Observations

k ~ A_Lens => LabelOptic "firstName" k (ObservationDetails 'Full) (ObservationDetails 'Full) Text Text Source # 
Instance details

Defined in Data.EBird.API.Observations

k ~ A_Lens => LabelOptic "hasComments" k (ObservationDetails 'Full) (ObservationDetails 'Full) Bool Bool Source # 
Instance details

Defined in Data.EBird.API.Observations

k ~ A_Lens => LabelOptic "hasRichMedia" k (ObservationDetails 'Full) (ObservationDetails 'Full) Bool Bool Source # 
Instance details

Defined in Data.EBird.API.Observations

k ~ A_Lens => LabelOptic "lastName" k (ObservationDetails 'Full) (ObservationDetails 'Full) Text Text Source # 
Instance details

Defined in Data.EBird.API.Observations

k ~ A_Lens => LabelOptic "obsId" k (ObservationDetails 'Full) (ObservationDetails 'Full) Text Text Source # 
Instance details

Defined in Data.EBird.API.Observations

k ~ A_Lens => LabelOptic "presenceNoted" k (ObservationDetails 'Full) (ObservationDetails 'Full) Bool Bool Source # 
Instance details

Defined in Data.EBird.API.Observations

k ~ A_Lens => LabelOptic "subnational1Code" k (ObservationDetails 'Full) (ObservationDetails 'Full) Region Region Source # 
Instance details

Defined in Data.EBird.API.Observations

k ~ A_Lens => LabelOptic "subnational1Name" k (ObservationDetails 'Full) (ObservationDetails 'Full) Text Text Source # 
Instance details

Defined in Data.EBird.API.Observations

k ~ A_Lens => LabelOptic "subnational2Code" k (ObservationDetails 'Full) (ObservationDetails 'Full) Region Region Source # 
Instance details

Defined in Data.EBird.API.Observations

k ~ A_Lens => LabelOptic "subnational2Name" k (ObservationDetails 'Full) (ObservationDetails 'Full) Text Text Source # 
Instance details

Defined in Data.EBird.API.Observations

k ~ A_Lens => LabelOptic "userDisplayName" k (ObservationDetails 'Full) (ObservationDetails 'Full) Text Text Source # 
Instance details

Defined in Data.EBird.API.Observations

Show (ObservationDetails 'Full) Source # 
Instance details

Defined in Data.EBird.API.Observations

Show (ObservationDetails 'Simple) Source # 
Instance details

Defined in Data.EBird.API.Observations

Eq (ObservationDetails 'Full) Source # 
Instance details

Defined in Data.EBird.API.Observations

Eq (ObservationDetails 'Simple) Source # 
Instance details

Defined in Data.EBird.API.Observations

data SomeObservation where Source #

Observation values of existentially quantified detail.

Constructors

SomeObservation :: Observation detail -> SomeObservation 

Instances

Instances details
Show SomeObservation Source # 
Instance details

Defined in Data.EBird.API.Observations

FromJSON SomeObservation Source #

Switches between parsing a Simple detail Observation and a Full detail Observation depending on whether the "firstName" key is present.

Instance details

Defined in Data.EBird.API.Observations

ToJSON SomeObservation Source #

Switches between encoding a Simple Observation and a Full Observation depending on the evidence introduced by pattern-matching on the observationFullDetail field.

Instance details

Defined in Data.EBird.API.Observations

Auxiliary eBird observation API types

data DetailLevel Source #

The promoted constructors of this type are used as type-level indices on the Observation type to determine whether an observation is Simple detail or Full detail.

Constructors

Simple 
Full 

Instances

Instances details
IsString DetailLevel Source #

Use this instance carefully! It throws runtime exceptions if the string is malformatted.

Instance details

Defined in Data.EBird.API.Observations

Read DetailLevel Source # 
Instance details

Defined in Data.EBird.API.Observations

Show DetailLevel Source # 
Instance details

Defined in Data.EBird.API.Observations

EBirdString DetailLevel Source #

The eBird string for a DetailLevel value is simply the lowercase constructor name.

Instance details

Defined in Data.EBird.API.Observations

Eq DetailLevel Source # 
Instance details

Defined in Data.EBird.API.Observations

ToHttpApiData DetailLevel Source # 
Instance details

Defined in Data.EBird.API.Observations

data SortObservationsBy Source #

Values representing the ways that observations may be sorted in responses from the API.

Instances

Instances details
IsString SortObservationsBy Source #

Use this instance carefully! It throws runtime exceptions if the string is malformatted.

Instance details

Defined in Data.EBird.API.Observations

Read SortObservationsBy Source # 
Instance details

Defined in Data.EBird.API.Observations

Show SortObservationsBy Source # 
Instance details

Defined in Data.EBird.API.Observations

EBirdString SortObservationsBy Source #

The eBird string for a SortObservationsBy value is either "date" or "species".

Instance details

Defined in Data.EBird.API.Observations

Eq SortObservationsBy Source # 
Instance details

Defined in Data.EBird.API.Observations

ToHttpApiData SortObservationsBy Source # 
Instance details

Defined in Data.EBird.API.Observations

data SelectObservation Source #

Values representing how to pick which Observations are returned from the HistoricalObservationsAPI in the case that there are several observations of the same species on the date.

Instances

Instances details
IsString SelectObservation Source #

Use this instance carefully! It throws runtime exceptions if the string is malformatted.

Instance details

Defined in Data.EBird.API.Observations

Read SelectObservation Source # 
Instance details

Defined in Data.EBird.API.Observations

Show SelectObservation Source # 
Instance details

Defined in Data.EBird.API.Observations

EBirdString SelectObservation Source #

The eBird string for a SelectObservation value is either "create" or "mrec".

Instance details

Defined in Data.EBird.API.Observations

Eq SelectObservation Source # 
Instance details

Defined in Data.EBird.API.Observations

ToHttpApiData SelectObservation Source # 
Instance details

Defined in Data.EBird.API.Observations

Optics for observation types

observationValid :: forall detail. Lens' (Observation detail) Bool Source #

observationSubId :: forall detail. Lens' (Observation detail) Text Source #

observationReviewed :: forall detail. Lens' (Observation detail) Bool Source #

observationLocationId :: forall detail. Lens' (Observation detail) Text Source #

observationLatitude :: forall detail. Lens' (Observation detail) Double Source #

observationFullDetail :: forall detail detail. Lens (Observation detail) (Observation detail) (ObservationDetails detail) (ObservationDetails detail) Source #

observationCommonName :: forall detail. Lens' (Observation detail) Text Source #

attoparsec parsers

parseDetailLevel :: Parser DetailLevel Source #

Parse a list of eBird API taxononomy categories. To avoid the partial behavior of converting a sepBy1 result into a NonEmpty, we manually parse the first category followed by an optional tail.