{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- | -- Module : Network.Google.Mirror.Types.Product -- Copyright : (c) 2015-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- module Network.Google.Mirror.Types.Product where import Network.Google.Mirror.Types.Sum import Network.Google.Prelude -- | Controls how notifications for a timeline item are presented to the -- user. -- -- /See:/ 'notificationConfig' smart constructor. data NotificationConfig = NotificationConfig' { _ncDeliveryTime :: !(Maybe DateTime') , _ncLevel :: !(Maybe Text) } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'NotificationConfig' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'ncDeliveryTime' -- -- * 'ncLevel' notificationConfig :: NotificationConfig notificationConfig = NotificationConfig' { _ncDeliveryTime = Nothing , _ncLevel = Nothing } -- | The time at which the notification should be delivered. ncDeliveryTime :: Lens' NotificationConfig (Maybe UTCTime) ncDeliveryTime = lens _ncDeliveryTime (\ s a -> s{_ncDeliveryTime = a}) . mapping _DateTime -- | Describes how important the notification is. Allowed values are: - -- DEFAULT - Notifications of default importance. A chime will be played to -- alert users. ncLevel :: Lens' NotificationConfig (Maybe Text) ncLevel = lens _ncLevel (\ s a -> s{_ncLevel = a}) instance FromJSON NotificationConfig where parseJSON = withObject "NotificationConfig" (\ o -> NotificationConfig' <$> (o .:? "deliveryTime") <*> (o .:? "level")) instance ToJSON NotificationConfig where toJSON NotificationConfig'{..} = object (catMaybes [("deliveryTime" .=) <$> _ncDeliveryTime, ("level" .=) <$> _ncLevel]) -- | A single menu command that is part of a Contact. -- -- /See:/ 'command' smart constructor. newtype Command = Command' { _cType :: Maybe Text } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'Command' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cType' command :: Command command = Command' { _cType = Nothing } -- | The type of operation this command corresponds to. Allowed values are: - -- TAKE_A_NOTE - Shares a timeline item with the transcription of user -- speech from the \"Take a note\" voice menu command. - POST_AN_UPDATE - -- Shares a timeline item with the transcription of user speech from the -- \"Post an update\" voice menu command. cType :: Lens' Command (Maybe Text) cType = lens _cType (\ s a -> s{_cType = a}) instance FromJSON Command where parseJSON = withObject "Command" (\ o -> Command' <$> (o .:? "type")) instance ToJSON Command where toJSON Command'{..} = object (catMaybes [("type" .=) <$> _cType]) -- | A list of Locations. This is the response from the server to GET -- requests on the locations collection. -- -- /See:/ 'locationsListResponse' smart constructor. data LocationsListResponse = LocationsListResponse' { _llrKind :: !Text , _llrItems :: !(Maybe [Location]) } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'LocationsListResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'llrKind' -- -- * 'llrItems' locationsListResponse :: LocationsListResponse locationsListResponse = LocationsListResponse' { _llrKind = "mirror#locationsList" , _llrItems = Nothing } -- | The type of resource. This is always mirror#locationsList. llrKind :: Lens' LocationsListResponse Text llrKind = lens _llrKind (\ s a -> s{_llrKind = a}) -- | The list of locations. llrItems :: Lens' LocationsListResponse [Location] llrItems = lens _llrItems (\ s a -> s{_llrItems = a}) . _Default . _Coerce instance FromJSON LocationsListResponse where parseJSON = withObject "LocationsListResponse" (\ o -> LocationsListResponse' <$> (o .:? "kind" .!= "mirror#locationsList") <*> (o .:? "items" .!= mempty)) instance ToJSON LocationsListResponse where toJSON LocationsListResponse'{..} = object (catMaybes [Just ("kind" .= _llrKind), ("items" .=) <$> _llrItems]) -- | A geographic location that can be associated with a timeline item. -- -- /See:/ 'location' smart constructor. data Location = Location' { _lKind :: !Text , _lLatitude :: !(Maybe (Textual Double)) , _lAddress :: !(Maybe Text) , _lDisplayName :: !(Maybe Text) , _lId :: !(Maybe Text) , _lAccuracy :: !(Maybe (Textual Double)) , _lLongitude :: !(Maybe (Textual Double)) , _lTimestamp :: !(Maybe DateTime') } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'Location' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'lKind' -- -- * 'lLatitude' -- -- * 'lAddress' -- -- * 'lDisplayName' -- -- * 'lId' -- -- * 'lAccuracy' -- -- * 'lLongitude' -- -- * 'lTimestamp' location :: Location location = Location' { _lKind = "mirror#location" , _lLatitude = Nothing , _lAddress = Nothing , _lDisplayName = Nothing , _lId = Nothing , _lAccuracy = Nothing , _lLongitude = Nothing , _lTimestamp = Nothing } -- | The type of resource. This is always mirror#location. lKind :: Lens' Location Text lKind = lens _lKind (\ s a -> s{_lKind = a}) -- | The latitude, in degrees. lLatitude :: Lens' Location (Maybe Double) lLatitude = lens _lLatitude (\ s a -> s{_lLatitude = a}) . mapping _Coerce -- | The full address of the location. lAddress :: Lens' Location (Maybe Text) lAddress = lens _lAddress (\ s a -> s{_lAddress = a}) -- | The name to be displayed. This may be a business name or a user-defined -- place, such as \"Home\". lDisplayName :: Lens' Location (Maybe Text) lDisplayName = lens _lDisplayName (\ s a -> s{_lDisplayName = a}) -- | The ID of the location. lId :: Lens' Location (Maybe Text) lId = lens _lId (\ s a -> s{_lId = a}) -- | The accuracy of the location fix in meters. lAccuracy :: Lens' Location (Maybe Double) lAccuracy = lens _lAccuracy (\ s a -> s{_lAccuracy = a}) . mapping _Coerce -- | The longitude, in degrees. lLongitude :: Lens' Location (Maybe Double) lLongitude = lens _lLongitude (\ s a -> s{_lLongitude = a}) . mapping _Coerce -- | The time at which this location was captured, formatted according to RFC -- 3339. lTimestamp :: Lens' Location (Maybe UTCTime) lTimestamp = lens _lTimestamp (\ s a -> s{_lTimestamp = a}) . mapping _DateTime instance FromJSON Location where parseJSON = withObject "Location" (\ o -> Location' <$> (o .:? "kind" .!= "mirror#location") <*> (o .:? "latitude") <*> (o .:? "address") <*> (o .:? "displayName") <*> (o .:? "id") <*> (o .:? "accuracy") <*> (o .:? "longitude") <*> (o .:? "timestamp")) instance ToJSON Location where toJSON Location'{..} = object (catMaybes [Just ("kind" .= _lKind), ("latitude" .=) <$> _lLatitude, ("address" .=) <$> _lAddress, ("displayName" .=) <$> _lDisplayName, ("id" .=) <$> _lId, ("accuracy" .=) <$> _lAccuracy, ("longitude" .=) <$> _lLongitude, ("timestamp" .=) <$> _lTimestamp]) -- | A notification delivered by the API. -- -- /See:/ 'notification' smart constructor. data Notification = Notification' { _nOperation :: !(Maybe Text) , _nItemId :: !(Maybe Text) , _nCollection :: !(Maybe Text) , _nUserActions :: !(Maybe [UserAction]) , _nVerifyToken :: !(Maybe Text) , _nUserToken :: !(Maybe Text) } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'Notification' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'nOperation' -- -- * 'nItemId' -- -- * 'nCollection' -- -- * 'nUserActions' -- -- * 'nVerifyToken' -- -- * 'nUserToken' notification :: Notification notification = Notification' { _nOperation = Nothing , _nItemId = Nothing , _nCollection = Nothing , _nUserActions = Nothing , _nVerifyToken = Nothing , _nUserToken = Nothing } -- | The type of operation that generated the notification. nOperation :: Lens' Notification (Maybe Text) nOperation = lens _nOperation (\ s a -> s{_nOperation = a}) -- | The ID of the item that generated the notification. nItemId :: Lens' Notification (Maybe Text) nItemId = lens _nItemId (\ s a -> s{_nItemId = a}) -- | The collection that generated the notification. nCollection :: Lens' Notification (Maybe Text) nCollection = lens _nCollection (\ s a -> s{_nCollection = a}) -- | A list of actions taken by the user that triggered the notification. nUserActions :: Lens' Notification [UserAction] nUserActions = lens _nUserActions (\ s a -> s{_nUserActions = a}) . _Default . _Coerce -- | The secret verify token provided by the service when it subscribed for -- notifications. nVerifyToken :: Lens' Notification (Maybe Text) nVerifyToken = lens _nVerifyToken (\ s a -> s{_nVerifyToken = a}) -- | The user token provided by the service when it subscribed for -- notifications. nUserToken :: Lens' Notification (Maybe Text) nUserToken = lens _nUserToken (\ s a -> s{_nUserToken = a}) instance FromJSON Notification where parseJSON = withObject "Notification" (\ o -> Notification' <$> (o .:? "operation") <*> (o .:? "itemId") <*> (o .:? "collection") <*> (o .:? "userActions" .!= mempty) <*> (o .:? "verifyToken") <*> (o .:? "userToken")) instance ToJSON Notification where toJSON Notification'{..} = object (catMaybes [("operation" .=) <$> _nOperation, ("itemId" .=) <$> _nItemId, ("collection" .=) <$> _nCollection, ("userActions" .=) <$> _nUserActions, ("verifyToken" .=) <$> _nVerifyToken, ("userToken" .=) <$> _nUserToken]) -- | A person or group that can be used as a creator or a contact. -- -- /See:/ 'contact' smart constructor. data Contact = Contact' { _conAcceptCommands :: !(Maybe [Command]) , _conSharingFeatures :: !(Maybe [Text]) , _conImageURLs :: !(Maybe [Text]) , _conPriority :: !(Maybe (Textual Word32)) , _conKind :: !Text , _conAcceptTypes :: !(Maybe [Text]) , _conPhoneNumber :: !(Maybe Text) , _conDisplayName :: !(Maybe Text) , _conSource :: !(Maybe Text) , _conId :: !(Maybe Text) , _conType :: !(Maybe Text) , _conSpeakableName :: !(Maybe Text) } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'Contact' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'conAcceptCommands' -- -- * 'conSharingFeatures' -- -- * 'conImageURLs' -- -- * 'conPriority' -- -- * 'conKind' -- -- * 'conAcceptTypes' -- -- * 'conPhoneNumber' -- -- * 'conDisplayName' -- -- * 'conSource' -- -- * 'conId' -- -- * 'conType' -- -- * 'conSpeakableName' contact :: Contact contact = Contact' { _conAcceptCommands = Nothing , _conSharingFeatures = Nothing , _conImageURLs = Nothing , _conPriority = Nothing , _conKind = "mirror#contact" , _conAcceptTypes = Nothing , _conPhoneNumber = Nothing , _conDisplayName = Nothing , _conSource = Nothing , _conId = Nothing , _conType = Nothing , _conSpeakableName = Nothing } -- | A list of voice menu commands that a contact can handle. Glass shows up -- to three contacts for each voice menu command. If there are more than -- that, the three contacts with the highest priority are shown for that -- particular command. conAcceptCommands :: Lens' Contact [Command] conAcceptCommands = lens _conAcceptCommands (\ s a -> s{_conAcceptCommands = a}) . _Default . _Coerce -- | A list of sharing features that a contact can handle. Allowed values -- are: - ADD_CAPTION conSharingFeatures :: Lens' Contact [Text] conSharingFeatures = lens _conSharingFeatures (\ s a -> s{_conSharingFeatures = a}) . _Default . _Coerce -- | Set of image URLs to display for a contact. Most contacts will have a -- single image, but a \"group\" contact may include up to 8 image URLs and -- they will be resized and cropped into a mosaic on the client. conImageURLs :: Lens' Contact [Text] conImageURLs = lens _conImageURLs (\ s a -> s{_conImageURLs = a}) . _Default . _Coerce -- | Priority for the contact to determine ordering in a list of contacts. -- Contacts with higher priorities will be shown before ones with lower -- priorities. conPriority :: Lens' Contact (Maybe Word32) conPriority = lens _conPriority (\ s a -> s{_conPriority = a}) . mapping _Coerce -- | The type of resource. This is always mirror#contact. conKind :: Lens' Contact Text conKind = lens _conKind (\ s a -> s{_conKind = a}) -- | A list of MIME types that a contact supports. The contact will be shown -- to the user if any of its acceptTypes matches any of the types of the -- attachments on the item. If no acceptTypes are given, the contact will -- be shown for all items. conAcceptTypes :: Lens' Contact [Text] conAcceptTypes = lens _conAcceptTypes (\ s a -> s{_conAcceptTypes = a}) . _Default . _Coerce -- | Primary phone number for the contact. This can be a fully-qualified -- number, with country calling code and area code, or a local number. conPhoneNumber :: Lens' Contact (Maybe Text) conPhoneNumber = lens _conPhoneNumber (\ s a -> s{_conPhoneNumber = a}) -- | The name to display for this contact. conDisplayName :: Lens' Contact (Maybe Text) conDisplayName = lens _conDisplayName (\ s a -> s{_conDisplayName = a}) -- | The ID of the application that created this contact. This is populated -- by the API conSource :: Lens' Contact (Maybe Text) conSource = lens _conSource (\ s a -> s{_conSource = a}) -- | An ID for this contact. This is generated by the application and is -- treated as an opaque token. conId :: Lens' Contact (Maybe Text) conId = lens _conId (\ s a -> s{_conId = a}) -- | The type for this contact. This is used for sorting in UIs. Allowed -- values are: - INDIVIDUAL - Represents a single person. This is the -- default. - GROUP - Represents more than a single person. conType :: Lens' Contact (Maybe Text) conType = lens _conType (\ s a -> s{_conType = a}) -- | Name of this contact as it should be pronounced. If this contact\'s name -- must be spoken as part of a voice disambiguation menu, this name is used -- as the expected pronunciation. This is useful for contact names with -- unpronounceable characters or whose display spelling is otherwise not -- phonetic. conSpeakableName :: Lens' Contact (Maybe Text) conSpeakableName = lens _conSpeakableName (\ s a -> s{_conSpeakableName = a}) instance FromJSON Contact where parseJSON = withObject "Contact" (\ o -> Contact' <$> (o .:? "acceptCommands" .!= mempty) <*> (o .:? "sharingFeatures" .!= mempty) <*> (o .:? "imageUrls" .!= mempty) <*> (o .:? "priority") <*> (o .:? "kind" .!= "mirror#contact") <*> (o .:? "acceptTypes" .!= mempty) <*> (o .:? "phoneNumber") <*> (o .:? "displayName") <*> (o .:? "source") <*> (o .:? "id") <*> (o .:? "type") <*> (o .:? "speakableName")) instance ToJSON Contact where toJSON Contact'{..} = object (catMaybes [("acceptCommands" .=) <$> _conAcceptCommands, ("sharingFeatures" .=) <$> _conSharingFeatures, ("imageUrls" .=) <$> _conImageURLs, ("priority" .=) <$> _conPriority, Just ("kind" .= _conKind), ("acceptTypes" .=) <$> _conAcceptTypes, ("phoneNumber" .=) <$> _conPhoneNumber, ("displayName" .=) <$> _conDisplayName, ("source" .=) <$> _conSource, ("id" .=) <$> _conId, ("type" .=) <$> _conType, ("speakableName" .=) <$> _conSpeakableName]) -- -- /See:/ 'authToken' smart constructor. data AuthToken = AuthToken' { _atAuthToken :: !(Maybe Text) , _atType :: !(Maybe Text) } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'AuthToken' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'atAuthToken' -- -- * 'atType' authToken :: AuthToken authToken = AuthToken' { _atAuthToken = Nothing , _atType = Nothing } atAuthToken :: Lens' AuthToken (Maybe Text) atAuthToken = lens _atAuthToken (\ s a -> s{_atAuthToken = a}) atType :: Lens' AuthToken (Maybe Text) atType = lens _atType (\ s a -> s{_atType = a}) instance FromJSON AuthToken where parseJSON = withObject "AuthToken" (\ o -> AuthToken' <$> (o .:? "authToken") <*> (o .:? "type")) instance ToJSON AuthToken where toJSON AuthToken'{..} = object (catMaybes [("authToken" .=) <$> _atAuthToken, ("type" .=) <$> _atType]) -- | A list of Attachments. This is the response from the server to GET -- requests on the attachments collection. -- -- /See:/ 'attachmentsListResponse' smart constructor. data AttachmentsListResponse = AttachmentsListResponse' { _alrKind :: !Text , _alrItems :: !(Maybe [Attachment]) } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'AttachmentsListResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'alrKind' -- -- * 'alrItems' attachmentsListResponse :: AttachmentsListResponse attachmentsListResponse = AttachmentsListResponse' { _alrKind = "mirror#attachmentsList" , _alrItems = Nothing } -- | The type of resource. This is always mirror#attachmentsList. alrKind :: Lens' AttachmentsListResponse Text alrKind = lens _alrKind (\ s a -> s{_alrKind = a}) -- | The list of attachments. alrItems :: Lens' AttachmentsListResponse [Attachment] alrItems = lens _alrItems (\ s a -> s{_alrItems = a}) . _Default . _Coerce instance FromJSON AttachmentsListResponse where parseJSON = withObject "AttachmentsListResponse" (\ o -> AttachmentsListResponse' <$> (o .:? "kind" .!= "mirror#attachmentsList") <*> (o .:? "items" .!= mempty)) instance ToJSON AttachmentsListResponse where toJSON AttachmentsListResponse'{..} = object (catMaybes [Just ("kind" .= _alrKind), ("items" .=) <$> _alrItems]) -- | A custom menu item that can be presented to the user by a timeline item. -- -- /See:/ 'menuItem' smart constructor. data MenuItem = MenuItem' { _miValues :: !(Maybe [MenuValue]) , _miRemoveWhenSelected :: !(Maybe Bool) , _miAction :: !(Maybe Text) , _miPayload :: !(Maybe Text) , _miContextualCommand :: !(Maybe Text) , _miId :: !(Maybe Text) } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'MenuItem' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'miValues' -- -- * 'miRemoveWhenSelected' -- -- * 'miAction' -- -- * 'miPayload' -- -- * 'miContextualCommand' -- -- * 'miId' menuItem :: MenuItem menuItem = MenuItem' { _miValues = Nothing , _miRemoveWhenSelected = Nothing , _miAction = Nothing , _miPayload = Nothing , _miContextualCommand = Nothing , _miId = Nothing } -- | For CUSTOM items, a list of values controlling the appearance of the -- menu item in each of its states. A value for the DEFAULT state must be -- provided. If the PENDING or CONFIRMED states are missing, they will not -- be shown. miValues :: Lens' MenuItem [MenuValue] miValues = lens _miValues (\ s a -> s{_miValues = a}) . _Default . _Coerce -- | If set to true on a CUSTOM menu item, that item will be removed from the -- menu after it is selected. miRemoveWhenSelected :: Lens' MenuItem (Maybe Bool) miRemoveWhenSelected = lens _miRemoveWhenSelected (\ s a -> s{_miRemoveWhenSelected = a}) -- | Controls the behavior when the user picks the menu option. Allowed -- values are: - CUSTOM - Custom action set by the service. When the user -- selects this menuItem, the API triggers a notification to your -- callbackUrl with the userActions.type set to CUSTOM and the -- userActions.payload set to the ID of this menu item. This is the default -- value. - Built-in actions: - REPLY - Initiate a reply to the timeline -- item using the voice recording UI. The creator attribute must be set in -- the timeline item for this menu to be available. - REPLY_ALL - Same -- behavior as REPLY. The original timeline item\'s recipients will be -- added to the reply item. - DELETE - Delete the timeline item. - SHARE - -- Share the timeline item with the available contacts. - READ_ALOUD - Read -- the timeline item\'s speakableText aloud; if this field is not set, read -- the text field; if none of those fields are set, this menu item is -- ignored. - GET_MEDIA_INPUT - Allow users to provide media payloads to -- Glassware from a menu item (currently, only transcribed text from voice -- input is supported). Subscribe to notifications when users invoke this -- menu item to receive the timeline item ID. Retrieve the media from the -- timeline item in the payload property. - VOICE_CALL - Initiate a phone -- call using the timeline item\'s creator.phoneNumber attribute as -- recipient. - NAVIGATE - Navigate to the timeline item\'s location. - -- TOGGLE_PINNED - Toggle the isPinned state of the timeline item. - -- OPEN_URI - Open the payload of the menu item in the browser. - -- PLAY_VIDEO - Open the payload of the menu item in the Glass video -- player. - SEND_MESSAGE - Initiate sending a message to the timeline -- item\'s creator: - If the creator.phoneNumber is set and Glass is -- connected to an Android phone, the message is an SMS. - Otherwise, if -- the creator.email is set, the message is an email. miAction :: Lens' MenuItem (Maybe Text) miAction = lens _miAction (\ s a -> s{_miAction = a}) -- | A generic payload whose meaning changes depending on this MenuItem\'s -- action. - When the action is OPEN_URI, the payload is the URL of the -- website to view. - When the action is PLAY_VIDEO, the payload is the -- streaming URL of the video - When the action is GET_MEDIA_INPUT, the -- payload is the text transcription of a user\'s speech input miPayload :: Lens' MenuItem (Maybe Text) miPayload = lens _miPayload (\ s a -> s{_miPayload = a}) -- | The ContextualMenus.Command associated with this MenuItem (e.g. -- READ_ALOUD). The voice label for this command will be displayed in the -- voice menu and the touch label will be displayed in the touch menu. Note -- that the default menu value\'s display name will be overriden if you -- specify this property. Values that do not correspond to a -- ContextualMenus.Command name will be ignored. miContextualCommand :: Lens' MenuItem (Maybe Text) miContextualCommand = lens _miContextualCommand (\ s a -> s{_miContextualCommand = a}) -- | The ID for this menu item. This is generated by the application and is -- treated as an opaque token. miId :: Lens' MenuItem (Maybe Text) miId = lens _miId (\ s a -> s{_miId = a}) instance FromJSON MenuItem where parseJSON = withObject "MenuItem" (\ o -> MenuItem' <$> (o .:? "values" .!= mempty) <*> (o .:? "removeWhenSelected") <*> (o .:? "action") <*> (o .:? "payload") <*> (o .:? "contextual_command") <*> (o .:? "id")) instance ToJSON MenuItem where toJSON MenuItem'{..} = object (catMaybes [("values" .=) <$> _miValues, ("removeWhenSelected" .=) <$> _miRemoveWhenSelected, ("action" .=) <$> _miAction, ("payload" .=) <$> _miPayload, ("contextual_command" .=) <$> _miContextualCommand, ("id" .=) <$> _miId]) -- | A setting for Glass. -- -- /See:/ 'setting' smart constructor. data Setting = Setting' { _sKind :: !Text , _sValue :: !(Maybe Text) , _sId :: !(Maybe Text) } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'Setting' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'sKind' -- -- * 'sValue' -- -- * 'sId' setting :: Setting setting = Setting' { _sKind = "mirror#setting" , _sValue = Nothing , _sId = Nothing } -- | The type of resource. This is always mirror#setting. sKind :: Lens' Setting Text sKind = lens _sKind (\ s a -> s{_sKind = a}) -- | The setting value, as a string. sValue :: Lens' Setting (Maybe Text) sValue = lens _sValue (\ s a -> s{_sValue = a}) -- | The setting\'s ID. The following IDs are valid: - locale - The key to -- the user’s language\/locale (BCP 47 identifier) that Glassware should -- use to render localized content. - timezone - The key to the user’s -- current time zone region as defined in the tz database. Example: -- America\/Los_Angeles. sId :: Lens' Setting (Maybe Text) sId = lens _sId (\ s a -> s{_sId = a}) instance FromJSON Setting where parseJSON = withObject "Setting" (\ o -> Setting' <$> (o .:? "kind" .!= "mirror#setting") <*> (o .:? "value") <*> (o .:? "id")) instance ToJSON Setting where toJSON Setting'{..} = object (catMaybes [Just ("kind" .= _sKind), ("value" .=) <$> _sValue, ("id" .=) <$> _sId]) -- | Represents media content, such as a photo, that can be attached to a -- timeline item. -- -- /See:/ 'attachment' smart constructor. data Attachment = Attachment' { _aContentURL :: !(Maybe Text) , _aId :: !(Maybe Text) , _aIsProcessingContent :: !(Maybe Bool) , _aContentType :: !(Maybe Text) } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'Attachment' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'aContentURL' -- -- * 'aId' -- -- * 'aIsProcessingContent' -- -- * 'aContentType' attachment :: Attachment attachment = Attachment' { _aContentURL = Nothing , _aId = Nothing , _aIsProcessingContent = Nothing , _aContentType = Nothing } -- | The URL for the content. aContentURL :: Lens' Attachment (Maybe Text) aContentURL = lens _aContentURL (\ s a -> s{_aContentURL = a}) -- | The ID of the attachment. aId :: Lens' Attachment (Maybe Text) aId = lens _aId (\ s a -> s{_aId = a}) -- | Indicates that the contentUrl is not available because the attachment -- content is still being processed. If the caller wishes to retrieve the -- content, it should try again later. aIsProcessingContent :: Lens' Attachment (Maybe Bool) aIsProcessingContent = lens _aIsProcessingContent (\ s a -> s{_aIsProcessingContent = a}) -- | The MIME type of the attachment. aContentType :: Lens' Attachment (Maybe Text) aContentType = lens _aContentType (\ s a -> s{_aContentType = a}) instance FromJSON Attachment where parseJSON = withObject "Attachment" (\ o -> Attachment' <$> (o .:? "contentUrl") <*> (o .:? "id") <*> (o .:? "isProcessingContent") <*> (o .:? "contentType")) instance ToJSON Attachment where toJSON Attachment'{..} = object (catMaybes [("contentUrl" .=) <$> _aContentURL, ("id" .=) <$> _aId, ("isProcessingContent" .=) <$> _aIsProcessingContent, ("contentType" .=) <$> _aContentType]) -- | Represents an account passed into the Account Manager on Glass. -- -- /See:/ 'account' smart constructor. data Account = Account' { _aAuthTokens :: !(Maybe [AuthToken]) , _aUserData :: !(Maybe [UserData]) , _aPassword :: !(Maybe Text) , _aFeatures :: !(Maybe [Text]) } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'Account' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'aAuthTokens' -- -- * 'aUserData' -- -- * 'aPassword' -- -- * 'aFeatures' account :: Account account = Account' { _aAuthTokens = Nothing , _aUserData = Nothing , _aPassword = Nothing , _aFeatures = Nothing } aAuthTokens :: Lens' Account [AuthToken] aAuthTokens = lens _aAuthTokens (\ s a -> s{_aAuthTokens = a}) . _Default . _Coerce aUserData :: Lens' Account [UserData] aUserData = lens _aUserData (\ s a -> s{_aUserData = a}) . _Default . _Coerce aPassword :: Lens' Account (Maybe Text) aPassword = lens _aPassword (\ s a -> s{_aPassword = a}) aFeatures :: Lens' Account [Text] aFeatures = lens _aFeatures (\ s a -> s{_aFeatures = a}) . _Default . _Coerce instance FromJSON Account where parseJSON = withObject "Account" (\ o -> Account' <$> (o .:? "authTokens" .!= mempty) <*> (o .:? "userData" .!= mempty) <*> (o .:? "password") <*> (o .:? "features" .!= mempty)) instance ToJSON Account where toJSON Account'{..} = object (catMaybes [("authTokens" .=) <$> _aAuthTokens, ("userData" .=) <$> _aUserData, ("password" .=) <$> _aPassword, ("features" .=) <$> _aFeatures]) -- -- /See:/ 'userData' smart constructor. data UserData = UserData' { _udValue :: !(Maybe Text) , _udKey :: !(Maybe Text) } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'UserData' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'udValue' -- -- * 'udKey' userData :: UserData userData = UserData' { _udValue = Nothing , _udKey = Nothing } udValue :: Lens' UserData (Maybe Text) udValue = lens _udValue (\ s a -> s{_udValue = a}) udKey :: Lens' UserData (Maybe Text) udKey = lens _udKey (\ s a -> s{_udKey = a}) instance FromJSON UserData where parseJSON = withObject "UserData" (\ o -> UserData' <$> (o .:? "value") <*> (o .:? "key")) instance ToJSON UserData where toJSON UserData'{..} = object (catMaybes [("value" .=) <$> _udValue, ("key" .=) <$> _udKey]) -- | Represents an action taken by the user that triggered a notification. -- -- /See:/ 'userAction' smart constructor. data UserAction = UserAction' { _uaPayload :: !(Maybe Text) , _uaType :: !(Maybe Text) } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'UserAction' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'uaPayload' -- -- * 'uaType' userAction :: UserAction userAction = UserAction' { _uaPayload = Nothing , _uaType = Nothing } -- | An optional payload for the action. For actions of type CUSTOM, this is -- the ID of the custom menu item that was selected. uaPayload :: Lens' UserAction (Maybe Text) uaPayload = lens _uaPayload (\ s a -> s{_uaPayload = a}) -- | The type of action. The value of this can be: - SHARE - the user shared -- an item. - REPLY - the user replied to an item. - REPLY_ALL - the user -- replied to all recipients of an item. - CUSTOM - the user selected a -- custom menu item on the timeline item. - DELETE - the user deleted the -- item. - PIN - the user pinned the item. - UNPIN - the user unpinned the -- item. - LAUNCH - the user initiated a voice command. In the future, -- additional types may be added. UserActions with unrecognized types -- should be ignored. uaType :: Lens' UserAction (Maybe Text) uaType = lens _uaType (\ s a -> s{_uaType = a}) instance FromJSON UserAction where parseJSON = withObject "UserAction" (\ o -> UserAction' <$> (o .:? "payload") <*> (o .:? "type")) instance ToJSON UserAction where toJSON UserAction'{..} = object (catMaybes [("payload" .=) <$> _uaPayload, ("type" .=) <$> _uaType]) -- | A list of timeline items. This is the response from the server to GET -- requests on the timeline collection. -- -- /See:/ 'timelineListResponse' smart constructor. data TimelineListResponse = TimelineListResponse' { _tlrNextPageToken :: !(Maybe Text) , _tlrKind :: !Text , _tlrItems :: !(Maybe [TimelineItem]) } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'TimelineListResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'tlrNextPageToken' -- -- * 'tlrKind' -- -- * 'tlrItems' timelineListResponse :: TimelineListResponse timelineListResponse = TimelineListResponse' { _tlrNextPageToken = Nothing , _tlrKind = "mirror#timeline" , _tlrItems = Nothing } -- | The next page token. Provide this as the pageToken parameter in the -- request to retrieve the next page of results. tlrNextPageToken :: Lens' TimelineListResponse (Maybe Text) tlrNextPageToken = lens _tlrNextPageToken (\ s a -> s{_tlrNextPageToken = a}) -- | The type of resource. This is always mirror#timeline. tlrKind :: Lens' TimelineListResponse Text tlrKind = lens _tlrKind (\ s a -> s{_tlrKind = a}) -- | Items in the timeline. tlrItems :: Lens' TimelineListResponse [TimelineItem] tlrItems = lens _tlrItems (\ s a -> s{_tlrItems = a}) . _Default . _Coerce instance FromJSON TimelineListResponse where parseJSON = withObject "TimelineListResponse" (\ o -> TimelineListResponse' <$> (o .:? "nextPageToken") <*> (o .:? "kind" .!= "mirror#timeline") <*> (o .:? "items" .!= mempty)) instance ToJSON TimelineListResponse where toJSON TimelineListResponse'{..} = object (catMaybes [("nextPageToken" .=) <$> _tlrNextPageToken, Just ("kind" .= _tlrKind), ("items" .=) <$> _tlrItems]) -- | A list of Contacts representing contacts. This is the response from the -- server to GET requests on the contacts collection. -- -- /See:/ 'contactsListResponse' smart constructor. data ContactsListResponse = ContactsListResponse' { _clrKind :: !Text , _clrItems :: !(Maybe [Contact]) } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'ContactsListResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'clrKind' -- -- * 'clrItems' contactsListResponse :: ContactsListResponse contactsListResponse = ContactsListResponse' { _clrKind = "mirror#contacts" , _clrItems = Nothing } -- | The type of resource. This is always mirror#contacts. clrKind :: Lens' ContactsListResponse Text clrKind = lens _clrKind (\ s a -> s{_clrKind = a}) -- | Contact list. clrItems :: Lens' ContactsListResponse [Contact] clrItems = lens _clrItems (\ s a -> s{_clrItems = a}) . _Default . _Coerce instance FromJSON ContactsListResponse where parseJSON = withObject "ContactsListResponse" (\ o -> ContactsListResponse' <$> (o .:? "kind" .!= "mirror#contacts") <*> (o .:? "items" .!= mempty)) instance ToJSON ContactsListResponse where toJSON ContactsListResponse'{..} = object (catMaybes [Just ("kind" .= _clrKind), ("items" .=) <$> _clrItems]) -- | A single value that is part of a MenuItem. -- -- /See:/ 'menuValue' smart constructor. data MenuValue = MenuValue' { _mvState :: !(Maybe Text) , _mvDisplayName :: !(Maybe Text) , _mvIconURL :: !(Maybe Text) } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'MenuValue' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'mvState' -- -- * 'mvDisplayName' -- -- * 'mvIconURL' menuValue :: MenuValue menuValue = MenuValue' { _mvState = Nothing , _mvDisplayName = Nothing , _mvIconURL = Nothing } -- | The state that this value applies to. Allowed values are: - DEFAULT - -- Default value shown when displayed in the menuItems list. - PENDING - -- Value shown when the menuItem has been selected by the user but can -- still be cancelled. - CONFIRMED - Value shown when the menuItem has been -- selected by the user and can no longer be cancelled. mvState :: Lens' MenuValue (Maybe Text) mvState = lens _mvState (\ s a -> s{_mvState = a}) -- | The name to display for the menu item. If you specify this property for -- a built-in menu item, the default contextual voice command for that menu -- item is not shown. mvDisplayName :: Lens' MenuValue (Maybe Text) mvDisplayName = lens _mvDisplayName (\ s a -> s{_mvDisplayName = a}) -- | URL of an icon to display with the menu item. mvIconURL :: Lens' MenuValue (Maybe Text) mvIconURL = lens _mvIconURL (\ s a -> s{_mvIconURL = a}) instance FromJSON MenuValue where parseJSON = withObject "MenuValue" (\ o -> MenuValue' <$> (o .:? "state") <*> (o .:? "displayName") <*> (o .:? "iconUrl")) instance ToJSON MenuValue where toJSON MenuValue'{..} = object (catMaybes [("state" .=) <$> _mvState, ("displayName" .=) <$> _mvDisplayName, ("iconUrl" .=) <$> _mvIconURL]) -- | A subscription to events on a collection. -- -- /See:/ 'subscription' smart constructor. data Subscription = Subscription' { _subCallbackURL :: !(Maybe Text) , _subOperation :: !(Maybe [Text]) , _subNotification :: !(Maybe Notification) , _subKind :: !Text , _subCollection :: !(Maybe Text) , _subVerifyToken :: !(Maybe Text) , _subUserToken :: !(Maybe Text) , _subId :: !(Maybe Text) , _subUpdated :: !(Maybe DateTime') } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'Subscription' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'subCallbackURL' -- -- * 'subOperation' -- -- * 'subNotification' -- -- * 'subKind' -- -- * 'subCollection' -- -- * 'subVerifyToken' -- -- * 'subUserToken' -- -- * 'subId' -- -- * 'subUpdated' subscription :: Subscription subscription = Subscription' { _subCallbackURL = Nothing , _subOperation = Nothing , _subNotification = Nothing , _subKind = "mirror#subscription" , _subCollection = Nothing , _subVerifyToken = Nothing , _subUserToken = Nothing , _subId = Nothing , _subUpdated = Nothing } -- | The URL where notifications should be delivered (must start with -- https:\/\/). subCallbackURL :: Lens' Subscription (Maybe Text) subCallbackURL = lens _subCallbackURL (\ s a -> s{_subCallbackURL = a}) -- | A list of operations that should be subscribed to. An empty list -- indicates that all operations on the collection should be subscribed to. -- Allowed values are: - UPDATE - The item has been updated. - INSERT - A -- new item has been inserted. - DELETE - The item has been deleted. - -- MENU_ACTION - A custom menu item has been triggered by the user. subOperation :: Lens' Subscription [Text] subOperation = lens _subOperation (\ s a -> s{_subOperation = a}) . _Default . _Coerce -- | Container object for notifications. This is not populated in the -- Subscription resource. subNotification :: Lens' Subscription (Maybe Notification) subNotification = lens _subNotification (\ s a -> s{_subNotification = a}) -- | The type of resource. This is always mirror#subscription. subKind :: Lens' Subscription Text subKind = lens _subKind (\ s a -> s{_subKind = a}) -- | The collection to subscribe to. Allowed values are: - timeline - Changes -- in the timeline including insertion, deletion, and updates. - locations -- - Location updates. - settings - Settings updates. subCollection :: Lens' Subscription (Maybe Text) subCollection = lens _subCollection (\ s a -> s{_subCollection = a}) -- | A secret token sent to the subscriber in notifications so that it can -- verify that the notification was generated by Google. subVerifyToken :: Lens' Subscription (Maybe Text) subVerifyToken = lens _subVerifyToken (\ s a -> s{_subVerifyToken = a}) -- | An opaque token sent to the subscriber in notifications so that it can -- determine the ID of the user. subUserToken :: Lens' Subscription (Maybe Text) subUserToken = lens _subUserToken (\ s a -> s{_subUserToken = a}) -- | The ID of the subscription. subId :: Lens' Subscription (Maybe Text) subId = lens _subId (\ s a -> s{_subId = a}) -- | The time at which this subscription was last modified, formatted -- according to RFC 3339. subUpdated :: Lens' Subscription (Maybe UTCTime) subUpdated = lens _subUpdated (\ s a -> s{_subUpdated = a}) . mapping _DateTime instance FromJSON Subscription where parseJSON = withObject "Subscription" (\ o -> Subscription' <$> (o .:? "callbackUrl") <*> (o .:? "operation" .!= mempty) <*> (o .:? "notification") <*> (o .:? "kind" .!= "mirror#subscription") <*> (o .:? "collection") <*> (o .:? "verifyToken") <*> (o .:? "userToken") <*> (o .:? "id") <*> (o .:? "updated")) instance ToJSON Subscription where toJSON Subscription'{..} = object (catMaybes [("callbackUrl" .=) <$> _subCallbackURL, ("operation" .=) <$> _subOperation, ("notification" .=) <$> _subNotification, Just ("kind" .= _subKind), ("collection" .=) <$> _subCollection, ("verifyToken" .=) <$> _subVerifyToken, ("userToken" .=) <$> _subUserToken, ("id" .=) <$> _subId, ("updated" .=) <$> _subUpdated]) -- | Each item in the user\'s timeline is represented as a TimelineItem JSON -- structure, described below. -- -- /See:/ 'timelineItem' smart constructor. data TimelineItem = TimelineItem' { _tiCreator :: !(Maybe Contact) , _tiDisplayTime :: !(Maybe DateTime') , _tiEtag :: !(Maybe Text) , _tiIsDeleted :: !(Maybe Bool) , _tiPinScore :: !(Maybe (Textual Int32)) , _tiAttachments :: !(Maybe [Attachment]) , _tiLocation :: !(Maybe Location) , _tiMenuItems :: !(Maybe [MenuItem]) , _tiNotification :: !(Maybe NotificationConfig) , _tiText :: !(Maybe Text) , _tiKind :: !Text , _tiCreated :: !(Maybe DateTime') , _tiSpeakableText :: !(Maybe Text) , _tiIsBundleCover :: !(Maybe Bool) , _tiSpeakableType :: !(Maybe Text) , _tiBundleId :: !(Maybe Text) , _tiCanonicalURL :: !(Maybe Text) , _tiSelfLink :: !(Maybe Text) , _tiIsPinned :: !(Maybe Bool) , _tiSourceItemId :: !(Maybe Text) , _tiId :: !(Maybe Text) , _tiHTML :: !(Maybe Text) , _tiUpdated :: !(Maybe DateTime') , _tiRecipients :: !(Maybe [Contact]) , _tiTitle :: !(Maybe Text) , _tiInReplyTo :: !(Maybe Text) } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'TimelineItem' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'tiCreator' -- -- * 'tiDisplayTime' -- -- * 'tiEtag' -- -- * 'tiIsDeleted' -- -- * 'tiPinScore' -- -- * 'tiAttachments' -- -- * 'tiLocation' -- -- * 'tiMenuItems' -- -- * 'tiNotification' -- -- * 'tiText' -- -- * 'tiKind' -- -- * 'tiCreated' -- -- * 'tiSpeakableText' -- -- * 'tiIsBundleCover' -- -- * 'tiSpeakableType' -- -- * 'tiBundleId' -- -- * 'tiCanonicalURL' -- -- * 'tiSelfLink' -- -- * 'tiIsPinned' -- -- * 'tiSourceItemId' -- -- * 'tiId' -- -- * 'tiHTML' -- -- * 'tiUpdated' -- -- * 'tiRecipients' -- -- * 'tiTitle' -- -- * 'tiInReplyTo' timelineItem :: TimelineItem timelineItem = TimelineItem' { _tiCreator = Nothing , _tiDisplayTime = Nothing , _tiEtag = Nothing , _tiIsDeleted = Nothing , _tiPinScore = Nothing , _tiAttachments = Nothing , _tiLocation = Nothing , _tiMenuItems = Nothing , _tiNotification = Nothing , _tiText = Nothing , _tiKind = "mirror#timelineItem" , _tiCreated = Nothing , _tiSpeakableText = Nothing , _tiIsBundleCover = Nothing , _tiSpeakableType = Nothing , _tiBundleId = Nothing , _tiCanonicalURL = Nothing , _tiSelfLink = Nothing , _tiIsPinned = Nothing , _tiSourceItemId = Nothing , _tiId = Nothing , _tiHTML = Nothing , _tiUpdated = Nothing , _tiRecipients = Nothing , _tiTitle = Nothing , _tiInReplyTo = Nothing } -- | The user or group that created this item. tiCreator :: Lens' TimelineItem (Maybe Contact) tiCreator = lens _tiCreator (\ s a -> s{_tiCreator = a}) -- | The time that should be displayed when this item is viewed in the -- timeline, formatted according to RFC 3339. This user\'s timeline is -- sorted chronologically on display time, so this will also determine -- where the item is displayed in the timeline. If not set by the service, -- the display time defaults to the updated time. tiDisplayTime :: Lens' TimelineItem (Maybe UTCTime) tiDisplayTime = lens _tiDisplayTime (\ s a -> s{_tiDisplayTime = a}) . mapping _DateTime -- | ETag for this item. tiEtag :: Lens' TimelineItem (Maybe Text) tiEtag = lens _tiEtag (\ s a -> s{_tiEtag = a}) -- | When true, indicates this item is deleted, and only the ID property is -- set. tiIsDeleted :: Lens' TimelineItem (Maybe Bool) tiIsDeleted = lens _tiIsDeleted (\ s a -> s{_tiIsDeleted = a}) -- | For pinned items, this determines the order in which the item is -- displayed in the timeline, with a higher score appearing closer to the -- clock. Note: setting this field is currently not supported. tiPinScore :: Lens' TimelineItem (Maybe Int32) tiPinScore = lens _tiPinScore (\ s a -> s{_tiPinScore = a}) . mapping _Coerce -- | A list of media attachments associated with this item. As a convenience, -- you can refer to attachments in your HTML payloads with the attachment -- or cid scheme. For example: - attachment: -- <> where attachment_index is the 0-based -- index of this array. - cid: <> where attachment_id -- is the ID of the attachment. tiAttachments :: Lens' TimelineItem [Attachment] tiAttachments = lens _tiAttachments (\ s a -> s{_tiAttachments = a}) . _Default . _Coerce -- | The geographic location associated with this item. tiLocation :: Lens' TimelineItem (Maybe Location) tiLocation = lens _tiLocation (\ s a -> s{_tiLocation = a}) -- | A list of menu items that will be presented to the user when this item -- is selected in the timeline. tiMenuItems :: Lens' TimelineItem [MenuItem] tiMenuItems = lens _tiMenuItems (\ s a -> s{_tiMenuItems = a}) . _Default . _Coerce -- | Controls how notifications for this item are presented on the device. If -- this is missing, no notification will be generated. tiNotification :: Lens' TimelineItem (Maybe NotificationConfig) tiNotification = lens _tiNotification (\ s a -> s{_tiNotification = a}) -- | Text content of this item. tiText :: Lens' TimelineItem (Maybe Text) tiText = lens _tiText (\ s a -> s{_tiText = a}) -- | The type of resource. This is always mirror#timelineItem. tiKind :: Lens' TimelineItem Text tiKind = lens _tiKind (\ s a -> s{_tiKind = a}) -- | The time at which this item was created, formatted according to RFC -- 3339. tiCreated :: Lens' TimelineItem (Maybe UTCTime) tiCreated = lens _tiCreated (\ s a -> s{_tiCreated = a}) . mapping _DateTime -- | The speakable version of the content of this item. Along with the -- READ_ALOUD menu item, use this field to provide text that would be -- clearer when read aloud, or to provide extended information to what is -- displayed visually on Glass. Glassware should also specify the -- speakableType field, which will be spoken before this text in cases -- where the additional context is useful, for example when the user -- requests that the item be read aloud following a notification. tiSpeakableText :: Lens' TimelineItem (Maybe Text) tiSpeakableText = lens _tiSpeakableText (\ s a -> s{_tiSpeakableText = a}) -- | Whether this item is a bundle cover. If an item is marked as a bundle -- cover, it will be the entry point to the bundle of items that have the -- same bundleId as that item. It will be shown only on the main timeline — -- not within the opened bundle. On the main timeline, items that are shown -- are: - Items that have isBundleCover set to true - Items that do not -- have a bundleId In a bundle sub-timeline, items that are shown are: - -- Items that have the bundleId in question AND isBundleCover set to false tiIsBundleCover :: Lens' TimelineItem (Maybe Bool) tiIsBundleCover = lens _tiIsBundleCover (\ s a -> s{_tiIsBundleCover = a}) -- | A speakable description of the type of this item. This will be announced -- to the user prior to reading the content of the item in cases where the -- additional context is useful, for example when the user requests that -- the item be read aloud following a notification. This should be a short, -- simple noun phrase such as \"Email\", \"Text message\", or \"Daily -- Planet News Update\". Glassware are encouraged to populate this field -- for every timeline item, even if the item does not contain speakableText -- or text so that the user can learn the type of the item without looking -- at the screen. tiSpeakableType :: Lens' TimelineItem (Maybe Text) tiSpeakableType = lens _tiSpeakableType (\ s a -> s{_tiSpeakableType = a}) -- | The bundle ID for this item. Services can specify a bundleId to group -- many items together. They appear under a single top-level item on the -- device. tiBundleId :: Lens' TimelineItem (Maybe Text) tiBundleId = lens _tiBundleId (\ s a -> s{_tiBundleId = a}) -- | A canonical URL pointing to the canonical\/high quality version of the -- data represented by the timeline item. tiCanonicalURL :: Lens' TimelineItem (Maybe Text) tiCanonicalURL = lens _tiCanonicalURL (\ s a -> s{_tiCanonicalURL = a}) -- | A URL that can be used to retrieve this item. tiSelfLink :: Lens' TimelineItem (Maybe Text) tiSelfLink = lens _tiSelfLink (\ s a -> s{_tiSelfLink = a}) -- | When true, indicates this item is pinned, which means it\'s grouped -- alongside \"active\" items like navigation and hangouts, on the opposite -- side of the home screen from historical (non-pinned) timeline items. You -- can allow the user to toggle the value of this property with the -- TOGGLE_PINNED built-in menu item. tiIsPinned :: Lens' TimelineItem (Maybe Bool) tiIsPinned = lens _tiIsPinned (\ s a -> s{_tiIsPinned = a}) -- | Opaque string you can use to map a timeline item to data in your own -- service. tiSourceItemId :: Lens' TimelineItem (Maybe Text) tiSourceItemId = lens _tiSourceItemId (\ s a -> s{_tiSourceItemId = a}) -- | The ID of the timeline item. This is unique within a user\'s timeline. tiId :: Lens' TimelineItem (Maybe Text) tiId = lens _tiId (\ s a -> s{_tiId = a}) -- | HTML content for this item. If both text and html are provided for an -- item, the html will be rendered in the timeline. Allowed HTML elements - -- You can use these elements in your timeline cards. - Headers: h1, h2, -- h3, h4, h5, h6 - Images: img - Lists: li, ol, ul - HTML5 semantics: -- article, aside, details, figure, figcaption, footer, header, nav, -- section, summary, time - Structural: blockquote, br, div, hr, p, span - -- Style: b, big, center, em, i, u, s, small, strike, strong, style, sub, -- sup - Tables: table, tbody, td, tfoot, th, thead, tr Blocked HTML -- elements: These elements and their contents are removed from HTML -- payloads. - Document headers: head, title - Embeds: audio, embed, -- object, source, video - Frames: frame, frameset - Scripting: applet, -- script Other elements: Any elements that aren\'t listed are removed, but -- their contents are preserved. tiHTML :: Lens' TimelineItem (Maybe Text) tiHTML = lens _tiHTML (\ s a -> s{_tiHTML = a}) -- | The time at which this item was last modified, formatted according to -- RFC 3339. tiUpdated :: Lens' TimelineItem (Maybe UTCTime) tiUpdated = lens _tiUpdated (\ s a -> s{_tiUpdated = a}) . mapping _DateTime -- | A list of users or groups that this item has been shared with. tiRecipients :: Lens' TimelineItem [Contact] tiRecipients = lens _tiRecipients (\ s a -> s{_tiRecipients = a}) . _Default . _Coerce -- | The title of this item. tiTitle :: Lens' TimelineItem (Maybe Text) tiTitle = lens _tiTitle (\ s a -> s{_tiTitle = a}) -- | If this item was generated as a reply to another item, this field will -- be set to the ID of the item being replied to. This can be used to -- attach a reply to the appropriate conversation or post. tiInReplyTo :: Lens' TimelineItem (Maybe Text) tiInReplyTo = lens _tiInReplyTo (\ s a -> s{_tiInReplyTo = a}) instance FromJSON TimelineItem where parseJSON = withObject "TimelineItem" (\ o -> TimelineItem' <$> (o .:? "creator") <*> (o .:? "displayTime") <*> (o .:? "etag") <*> (o .:? "isDeleted") <*> (o .:? "pinScore") <*> (o .:? "attachments" .!= mempty) <*> (o .:? "location") <*> (o .:? "menuItems" .!= mempty) <*> (o .:? "notification") <*> (o .:? "text") <*> (o .:? "kind" .!= "mirror#timelineItem") <*> (o .:? "created") <*> (o .:? "speakableText") <*> (o .:? "isBundleCover") <*> (o .:? "speakableType") <*> (o .:? "bundleId") <*> (o .:? "canonicalUrl") <*> (o .:? "selfLink") <*> (o .:? "isPinned") <*> (o .:? "sourceItemId") <*> (o .:? "id") <*> (o .:? "html") <*> (o .:? "updated") <*> (o .:? "recipients" .!= mempty) <*> (o .:? "title") <*> (o .:? "inReplyTo")) instance ToJSON TimelineItem where toJSON TimelineItem'{..} = object (catMaybes [("creator" .=) <$> _tiCreator, ("displayTime" .=) <$> _tiDisplayTime, ("etag" .=) <$> _tiEtag, ("isDeleted" .=) <$> _tiIsDeleted, ("pinScore" .=) <$> _tiPinScore, ("attachments" .=) <$> _tiAttachments, ("location" .=) <$> _tiLocation, ("menuItems" .=) <$> _tiMenuItems, ("notification" .=) <$> _tiNotification, ("text" .=) <$> _tiText, Just ("kind" .= _tiKind), ("created" .=) <$> _tiCreated, ("speakableText" .=) <$> _tiSpeakableText, ("isBundleCover" .=) <$> _tiIsBundleCover, ("speakableType" .=) <$> _tiSpeakableType, ("bundleId" .=) <$> _tiBundleId, ("canonicalUrl" .=) <$> _tiCanonicalURL, ("selfLink" .=) <$> _tiSelfLink, ("isPinned" .=) <$> _tiIsPinned, ("sourceItemId" .=) <$> _tiSourceItemId, ("id" .=) <$> _tiId, ("html" .=) <$> _tiHTML, ("updated" .=) <$> _tiUpdated, ("recipients" .=) <$> _tiRecipients, ("title" .=) <$> _tiTitle, ("inReplyTo" .=) <$> _tiInReplyTo]) -- | A list of Subscriptions. This is the response from the server to GET -- requests on the subscription collection. -- -- /See:/ 'subscriptionsListResponse' smart constructor. data SubscriptionsListResponse = SubscriptionsListResponse' { _slrKind :: !Text , _slrItems :: !(Maybe [Subscription]) } deriving (Eq,Show,Data,Typeable,Generic) -- | Creates a value of 'SubscriptionsListResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'slrKind' -- -- * 'slrItems' subscriptionsListResponse :: SubscriptionsListResponse subscriptionsListResponse = SubscriptionsListResponse' { _slrKind = "mirror#subscriptionsList" , _slrItems = Nothing } -- | The type of resource. This is always mirror#subscriptionsList. slrKind :: Lens' SubscriptionsListResponse Text slrKind = lens _slrKind (\ s a -> s{_slrKind = a}) -- | The list of subscriptions. slrItems :: Lens' SubscriptionsListResponse [Subscription] slrItems = lens _slrItems (\ s a -> s{_slrItems = a}) . _Default . _Coerce instance FromJSON SubscriptionsListResponse where parseJSON = withObject "SubscriptionsListResponse" (\ o -> SubscriptionsListResponse' <$> (o .:? "kind" .!= "mirror#subscriptionsList") <*> (o .:? "items" .!= mempty)) instance ToJSON SubscriptionsListResponse where toJSON SubscriptionsListResponse'{..} = object (catMaybes [Just ("kind" .= _slrKind), ("items" .=) <$> _slrItems])