{-# LANGUAGE DataKinds #-} {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE ImportQualifiedPost #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-duplicate-exports #-} {-# OPTIONS_GHC -fno-warn-name-shadowing #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- | -- Module : Gogol.StreetViewPublish.Internal.Product -- Copyright : (c) 2015-2025 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Toni Cebrián -- Stability : auto-generated -- Portability : non-portable (GHC extensions) module Gogol.StreetViewPublish.Internal.Product ( -- * BatchDeletePhotosRequest BatchDeletePhotosRequest (..), newBatchDeletePhotosRequest, -- * BatchDeletePhotosResponse BatchDeletePhotosResponse (..), newBatchDeletePhotosResponse, -- * BatchGetPhotosResponse BatchGetPhotosResponse (..), newBatchGetPhotosResponse, -- * BatchUpdatePhotosRequest BatchUpdatePhotosRequest (..), newBatchUpdatePhotosRequest, -- * BatchUpdatePhotosResponse BatchUpdatePhotosResponse (..), newBatchUpdatePhotosResponse, -- * Connection Connection (..), newConnection, -- * Empty Empty (..), newEmpty, -- * GpsDataGapFailureDetails GpsDataGapFailureDetails (..), newGpsDataGapFailureDetails, -- * Imu Imu (..), newImu, -- * ImuDataGapFailureDetails ImuDataGapFailureDetails (..), newImuDataGapFailureDetails, -- * InsufficientGpsFailureDetails InsufficientGpsFailureDetails (..), newInsufficientGpsFailureDetails, -- * LatLng LatLng (..), newLatLng, -- * LatLngBounds LatLngBounds (..), newLatLngBounds, -- * Level Level (..), newLevel, -- * ListPhotoSequencesResponse ListPhotoSequencesResponse (..), newListPhotoSequencesResponse, -- * ListPhotosResponse ListPhotosResponse (..), newListPhotosResponse, -- * Measurement3d Measurement3d (..), newMeasurement3d, -- * NoOverlapGpsFailureDetails NoOverlapGpsFailureDetails (..), newNoOverlapGpsFailureDetails, -- * NotOutdoorsFailureDetails NotOutdoorsFailureDetails (..), newNotOutdoorsFailureDetails, -- * Operation Operation (..), newOperation, -- * Operation_Metadata Operation_Metadata (..), newOperation_Metadata, -- * Operation_Response Operation_Response (..), newOperation_Response, -- * Photo Photo (..), newPhoto, -- * PhotoId PhotoId (..), newPhotoId, -- * PhotoResponse PhotoResponse (..), newPhotoResponse, -- * PhotoSequence PhotoSequence (..), newPhotoSequence, -- * Place Place (..), newPlace, -- * Pose Pose (..), newPose, -- * ProcessingFailureDetails ProcessingFailureDetails (..), newProcessingFailureDetails, -- * Status Status (..), newStatus, -- * Status_DetailsItem Status_DetailsItem (..), newStatus_DetailsItem, -- * UpdatePhotoRequest UpdatePhotoRequest (..), newUpdatePhotoRequest, -- * UploadRef UploadRef (..), newUploadRef, ) where import Gogol.Prelude qualified as Core import Gogol.StreetViewPublish.Internal.Sum -- | Request to delete multiple Photos. -- -- /See:/ 'newBatchDeletePhotosRequest' smart constructor. newtype BatchDeletePhotosRequest = BatchDeletePhotosRequest { -- | Required. IDs of the Photos. HTTP GET requests require the following syntax for the URL query parameter: @photoIds=&photoIds=&...@. photoIds :: (Core.Maybe [Core.Text]) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'BatchDeletePhotosRequest' with the minimum fields required to make a request. newBatchDeletePhotosRequest :: BatchDeletePhotosRequest newBatchDeletePhotosRequest = BatchDeletePhotosRequest {photoIds = Core.Nothing} instance Core.FromJSON BatchDeletePhotosRequest where parseJSON = Core.withObject "BatchDeletePhotosRequest" (\o -> BatchDeletePhotosRequest Core.<$> (o Core..:? "photoIds")) instance Core.ToJSON BatchDeletePhotosRequest where toJSON BatchDeletePhotosRequest {..} = Core.object (Core.catMaybes [("photoIds" Core..=) Core.<$> photoIds]) -- | Response to batch delete of one or more Photos. -- -- /See:/ 'newBatchDeletePhotosResponse' smart constructor. newtype BatchDeletePhotosResponse = BatchDeletePhotosResponse { -- | The status for the operation to delete a single Photo in the batch request. status :: (Core.Maybe [Status]) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'BatchDeletePhotosResponse' with the minimum fields required to make a request. newBatchDeletePhotosResponse :: BatchDeletePhotosResponse newBatchDeletePhotosResponse = BatchDeletePhotosResponse {status = Core.Nothing} instance Core.FromJSON BatchDeletePhotosResponse where parseJSON = Core.withObject "BatchDeletePhotosResponse" (\o -> BatchDeletePhotosResponse Core.<$> (o Core..:? "status")) instance Core.ToJSON BatchDeletePhotosResponse where toJSON BatchDeletePhotosResponse {..} = Core.object (Core.catMaybes [("status" Core..=) Core.<$> status]) -- | Response to batch get of Photos. -- -- /See:/ 'newBatchGetPhotosResponse' smart constructor. newtype BatchGetPhotosResponse = BatchGetPhotosResponse { -- | List of results for each individual Photo requested, in the same order as the requests in BatchGetPhotos. results :: (Core.Maybe [PhotoResponse]) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'BatchGetPhotosResponse' with the minimum fields required to make a request. newBatchGetPhotosResponse :: BatchGetPhotosResponse newBatchGetPhotosResponse = BatchGetPhotosResponse {results = Core.Nothing} instance Core.FromJSON BatchGetPhotosResponse where parseJSON = Core.withObject "BatchGetPhotosResponse" (\o -> BatchGetPhotosResponse Core.<$> (o Core..:? "results")) instance Core.ToJSON BatchGetPhotosResponse where toJSON BatchGetPhotosResponse {..} = Core.object (Core.catMaybes [("results" Core..=) Core.<$> results]) -- | Request to update the metadata of photos. Updating the pixels of photos is not supported. -- -- /See:/ 'newBatchUpdatePhotosRequest' smart constructor. newtype BatchUpdatePhotosRequest = BatchUpdatePhotosRequest { -- | Required. List of UpdatePhotoRequests. updatePhotoRequests :: (Core.Maybe [UpdatePhotoRequest]) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'BatchUpdatePhotosRequest' with the minimum fields required to make a request. newBatchUpdatePhotosRequest :: BatchUpdatePhotosRequest newBatchUpdatePhotosRequest = BatchUpdatePhotosRequest {updatePhotoRequests = Core.Nothing} instance Core.FromJSON BatchUpdatePhotosRequest where parseJSON = Core.withObject "BatchUpdatePhotosRequest" ( \o -> BatchUpdatePhotosRequest Core.<$> (o Core..:? "updatePhotoRequests") ) instance Core.ToJSON BatchUpdatePhotosRequest where toJSON BatchUpdatePhotosRequest {..} = Core.object ( Core.catMaybes [("updatePhotoRequests" Core..=) Core.<$> updatePhotoRequests] ) -- | Response to batch update of metadata of one or more Photos. -- -- /See:/ 'newBatchUpdatePhotosResponse' smart constructor. newtype BatchUpdatePhotosResponse = BatchUpdatePhotosResponse { -- | List of results for each individual Photo updated, in the same order as the request. results :: (Core.Maybe [PhotoResponse]) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'BatchUpdatePhotosResponse' with the minimum fields required to make a request. newBatchUpdatePhotosResponse :: BatchUpdatePhotosResponse newBatchUpdatePhotosResponse = BatchUpdatePhotosResponse {results = Core.Nothing} instance Core.FromJSON BatchUpdatePhotosResponse where parseJSON = Core.withObject "BatchUpdatePhotosResponse" (\o -> BatchUpdatePhotosResponse Core.<$> (o Core..:? "results")) instance Core.ToJSON BatchUpdatePhotosResponse where toJSON BatchUpdatePhotosResponse {..} = Core.object (Core.catMaybes [("results" Core..=) Core.<$> results]) -- | A connection is the link from a source photo to a destination photo. -- -- /See:/ 'newConnection' smart constructor. newtype Connection = Connection { -- | Required. The destination of the connection from the containing photo to another photo. target :: (Core.Maybe PhotoId) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Connection' with the minimum fields required to make a request. newConnection :: Connection newConnection = Connection {target = Core.Nothing} instance Core.FromJSON Connection where parseJSON = Core.withObject "Connection" (\o -> Connection Core.<$> (o Core..:? "target")) instance Core.ToJSON Connection where toJSON Connection {..} = Core.object (Core.catMaybes [("target" Core..=) Core.<$> target]) -- | A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } -- -- /See:/ 'newEmpty' smart constructor. data Empty = Empty deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Empty' with the minimum fields required to make a request. newEmpty :: Empty newEmpty = Empty instance Core.FromJSON Empty where parseJSON = Core.withObject "Empty" (\o -> Core.pure Empty) instance Core.ToJSON Empty where toJSON = Core.const Core.emptyObject -- | Details related to ProcessingFailureReason#GPS/DATA/GAP. If there are multiple GPS data gaps, only the one with the largest duration is reported here. -- -- /See:/ 'newGpsDataGapFailureDetails' smart constructor. data GpsDataGapFailureDetails = GpsDataGapFailureDetails { -- | The duration of the gap in GPS data that was found. gapDuration :: (Core.Maybe Core.Duration), -- | Relative time (from the start of the video stream) when the gap started. gapStartTime :: (Core.Maybe Core.Duration) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'GpsDataGapFailureDetails' with the minimum fields required to make a request. newGpsDataGapFailureDetails :: GpsDataGapFailureDetails newGpsDataGapFailureDetails = GpsDataGapFailureDetails { gapDuration = Core.Nothing, gapStartTime = Core.Nothing } instance Core.FromJSON GpsDataGapFailureDetails where parseJSON = Core.withObject "GpsDataGapFailureDetails" ( \o -> GpsDataGapFailureDetails Core.<$> (o Core..:? "gapDuration") Core.<*> (o Core..:? "gapStartTime") ) instance Core.ToJSON GpsDataGapFailureDetails where toJSON GpsDataGapFailureDetails {..} = Core.object ( Core.catMaybes [ ("gapDuration" Core..=) Core.<$> gapDuration, ("gapStartTime" Core..=) Core.<$> gapStartTime ] ) -- | IMU data from the device sensors. -- -- /See:/ 'newImu' smart constructor. data Imu = Imu { -- | The accelerometer measurements in meters\/sec^2 with increasing timestamps from devices. accelMpsps :: (Core.Maybe [Measurement3d]), -- | The gyroscope measurements in radians\/sec with increasing timestamps from devices. gyroRps :: (Core.Maybe [Measurement3d]), -- | The magnetometer measurements of the magnetic field in microtesla (uT) with increasing timestamps from devices. magUt :: (Core.Maybe [Measurement3d]) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Imu' with the minimum fields required to make a request. newImu :: Imu newImu = Imu { accelMpsps = Core.Nothing, gyroRps = Core.Nothing, magUt = Core.Nothing } instance Core.FromJSON Imu where parseJSON = Core.withObject "Imu" ( \o -> Imu Core.<$> (o Core..:? "accelMpsps") Core.<*> (o Core..:? "gyroRps") Core.<*> (o Core..:? "magUt") ) instance Core.ToJSON Imu where toJSON Imu {..} = Core.object ( Core.catMaybes [ ("accelMpsps" Core..=) Core.<$> accelMpsps, ("gyroRps" Core..=) Core.<$> gyroRps, ("magUt" Core..=) Core.<$> magUt ] ) -- | Details related to ProcessingFailureReason#IMU/DATA/GAP. If there are multiple IMU data gaps, only the one with the largest duration is reported here. -- -- /See:/ 'newImuDataGapFailureDetails' smart constructor. data ImuDataGapFailureDetails = ImuDataGapFailureDetails { -- | The duration of the gap in IMU data that was found. gapDuration :: (Core.Maybe Core.Duration), -- | Relative time (from the start of the video stream) when the gap started. gapStartTime :: (Core.Maybe Core.Duration) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'ImuDataGapFailureDetails' with the minimum fields required to make a request. newImuDataGapFailureDetails :: ImuDataGapFailureDetails newImuDataGapFailureDetails = ImuDataGapFailureDetails { gapDuration = Core.Nothing, gapStartTime = Core.Nothing } instance Core.FromJSON ImuDataGapFailureDetails where parseJSON = Core.withObject "ImuDataGapFailureDetails" ( \o -> ImuDataGapFailureDetails Core.<$> (o Core..:? "gapDuration") Core.<*> (o Core..:? "gapStartTime") ) instance Core.ToJSON ImuDataGapFailureDetails where toJSON ImuDataGapFailureDetails {..} = Core.object ( Core.catMaybes [ ("gapDuration" Core..=) Core.<$> gapDuration, ("gapStartTime" Core..=) Core.<$> gapStartTime ] ) -- | Details related to ProcessingFailureReason#INSUFFICIENT_GPS. -- -- /See:/ 'newInsufficientGpsFailureDetails' smart constructor. newtype InsufficientGpsFailureDetails = InsufficientGpsFailureDetails { -- | The number of GPS points that were found in the video. gpsPointsFound :: (Core.Maybe Core.Int32) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'InsufficientGpsFailureDetails' with the minimum fields required to make a request. newInsufficientGpsFailureDetails :: InsufficientGpsFailureDetails newInsufficientGpsFailureDetails = InsufficientGpsFailureDetails {gpsPointsFound = Core.Nothing} instance Core.FromJSON InsufficientGpsFailureDetails where parseJSON = Core.withObject "InsufficientGpsFailureDetails" ( \o -> InsufficientGpsFailureDetails Core.<$> (o Core..:? "gpsPointsFound") ) instance Core.ToJSON InsufficientGpsFailureDetails where toJSON InsufficientGpsFailureDetails {..} = Core.object ( Core.catMaybes [("gpsPointsFound" Core..=) Core.<$> gpsPointsFound] ) -- | An object that represents a latitude\/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. -- -- /See:/ 'newLatLng' smart constructor. data LatLng = LatLng { -- | The latitude in degrees. It must be in the range [-90.0, +90.0]. latitude :: (Core.Maybe Core.Double), -- | The longitude in degrees. It must be in the range [-180.0, +180.0]. longitude :: (Core.Maybe Core.Double) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'LatLng' with the minimum fields required to make a request. newLatLng :: LatLng newLatLng = LatLng {latitude = Core.Nothing, longitude = Core.Nothing} instance Core.FromJSON LatLng where parseJSON = Core.withObject "LatLng" ( \o -> LatLng Core.<$> (o Core..:? "latitude") Core.<*> (o Core..:? "longitude") ) instance Core.ToJSON LatLng where toJSON LatLng {..} = Core.object ( Core.catMaybes [ ("latitude" Core..=) Core.<$> latitude, ("longitude" Core..=) Core.<$> longitude ] ) -- | A rectangle in geographical coordinates. -- -- /See:/ 'newLatLngBounds' smart constructor. data LatLngBounds = LatLngBounds { -- | The northeast corner of these bounds. northeast :: (Core.Maybe LatLng), -- | The southwest corner of these bounds. southwest :: (Core.Maybe LatLng) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'LatLngBounds' with the minimum fields required to make a request. newLatLngBounds :: LatLngBounds newLatLngBounds = LatLngBounds {northeast = Core.Nothing, southwest = Core.Nothing} instance Core.FromJSON LatLngBounds where parseJSON = Core.withObject "LatLngBounds" ( \o -> LatLngBounds Core.<$> (o Core..:? "northeast") Core.<*> (o Core..:? "southwest") ) instance Core.ToJSON LatLngBounds where toJSON LatLngBounds {..} = Core.object ( Core.catMaybes [ ("northeast" Core..=) Core.<$> northeast, ("southwest" Core..=) Core.<$> southwest ] ) -- | Level information containing level number and its corresponding name. -- -- /See:/ 'newLevel' smart constructor. data Level = Level { -- | Required. A name assigned to this Level, restricted to 3 characters. Consider how the elevator buttons would be labeled for this level if there was an elevator. name :: (Core.Maybe Core.Text), -- | Optional. Floor number, used for ordering. 0 indicates the ground level, 1 indicates the first level above ground level, -1 indicates the first level under ground level. Non-integer values are OK. number :: (Core.Maybe Core.Double) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Level' with the minimum fields required to make a request. newLevel :: Level newLevel = Level {name = Core.Nothing, number = Core.Nothing} instance Core.FromJSON Level where parseJSON = Core.withObject "Level" ( \o -> Level Core.<$> (o Core..:? "name") Core.<*> (o Core..:? "number") ) instance Core.ToJSON Level where toJSON Level {..} = Core.object ( Core.catMaybes [ ("name" Core..=) Core.<$> name, ("number" Core..=) Core.<$> number ] ) -- | Response to list all photo sequences that belong to a user. -- -- /See:/ 'newListPhotoSequencesResponse' smart constructor. data ListPhotoSequencesResponse = ListPhotoSequencesResponse { -- | Token to retrieve the next page of results, or empty if there are no more results in the list. nextPageToken :: (Core.Maybe Core.Text), -- | List of photo sequences via Operation interface. The maximum number of items returned is based on the pageSize field in the request. Each item in the list can have three possible states, * @Operation.done@ = false, if the processing of PhotoSequence is not finished yet. * @Operation.done@ = true and @Operation.error@ is populated, if there was an error in processing. * @Operation.done@ = true and @Operation.response@ contains a PhotoSequence message, In each sequence, only Id is populated. photoSequences :: (Core.Maybe [Operation]) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'ListPhotoSequencesResponse' with the minimum fields required to make a request. newListPhotoSequencesResponse :: ListPhotoSequencesResponse newListPhotoSequencesResponse = ListPhotoSequencesResponse { nextPageToken = Core.Nothing, photoSequences = Core.Nothing } instance Core.FromJSON ListPhotoSequencesResponse where parseJSON = Core.withObject "ListPhotoSequencesResponse" ( \o -> ListPhotoSequencesResponse Core.<$> (o Core..:? "nextPageToken") Core.<*> (o Core..:? "photoSequences") ) instance Core.ToJSON ListPhotoSequencesResponse where toJSON ListPhotoSequencesResponse {..} = Core.object ( Core.catMaybes [ ("nextPageToken" Core..=) Core.<$> nextPageToken, ("photoSequences" Core..=) Core.<$> photoSequences ] ) -- | Response to list all photos that belong to a user. -- -- /See:/ 'newListPhotosResponse' smart constructor. data ListPhotosResponse = ListPhotosResponse { -- | Token to retrieve the next page of results, or empty if there are no more results in the list. nextPageToken :: (Core.Maybe Core.Text), -- | List of photos. The pageSize field in the request determines the number of items returned. photos :: (Core.Maybe [Photo]) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'ListPhotosResponse' with the minimum fields required to make a request. newListPhotosResponse :: ListPhotosResponse newListPhotosResponse = ListPhotosResponse { nextPageToken = Core.Nothing, photos = Core.Nothing } instance Core.FromJSON ListPhotosResponse where parseJSON = Core.withObject "ListPhotosResponse" ( \o -> ListPhotosResponse Core.<$> (o Core..:? "nextPageToken") Core.<*> (o Core..:? "photos") ) instance Core.ToJSON ListPhotosResponse where toJSON ListPhotosResponse {..} = Core.object ( Core.catMaybes [ ("nextPageToken" Core..=) Core.<$> nextPageToken, ("photos" Core..=) Core.<$> photos ] ) -- | A Generic 3d measurement sample. -- -- /See:/ 'newMeasurement3d' smart constructor. data Measurement3d = Measurement3d { -- | The timestamp of the IMU measurement. captureTime :: (Core.Maybe Core.DateTime), -- | The sensor measurement in the x axis. x :: (Core.Maybe Core.Double), -- | The sensor measurement in the y axis. y :: (Core.Maybe Core.Double), -- | The sensor measurement in the z axis. z :: (Core.Maybe Core.Double) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Measurement3d' with the minimum fields required to make a request. newMeasurement3d :: Measurement3d newMeasurement3d = Measurement3d { captureTime = Core.Nothing, x = Core.Nothing, y = Core.Nothing, z = Core.Nothing } instance Core.FromJSON Measurement3d where parseJSON = Core.withObject "Measurement3d" ( \o -> Measurement3d Core.<$> (o Core..:? "captureTime") Core.<*> (o Core..:? "x") Core.<*> (o Core..:? "y") Core.<*> (o Core..:? "z") ) instance Core.ToJSON Measurement3d where toJSON Measurement3d {..} = Core.object ( Core.catMaybes [ ("captureTime" Core..=) Core.<$> captureTime, ("x" Core..=) Core.<$> x, ("y" Core..=) Core.<$> y, ("z" Core..=) Core.<$> z ] ) -- | Details related to PhotoSequenceProcessingFailureReason#NO/OVERLAP/GPS. -- -- /See:/ 'newNoOverlapGpsFailureDetails' smart constructor. data NoOverlapGpsFailureDetails = NoOverlapGpsFailureDetails { -- | Time of last recorded GPS point. gpsEndTime :: (Core.Maybe Core.DateTime), -- | Time of first recorded GPS point. gpsStartTime :: (Core.Maybe Core.DateTime), -- | End time of video. videoEndTime :: (Core.Maybe Core.DateTime), -- | Start time of video. videoStartTime :: (Core.Maybe Core.DateTime) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'NoOverlapGpsFailureDetails' with the minimum fields required to make a request. newNoOverlapGpsFailureDetails :: NoOverlapGpsFailureDetails newNoOverlapGpsFailureDetails = NoOverlapGpsFailureDetails { gpsEndTime = Core.Nothing, gpsStartTime = Core.Nothing, videoEndTime = Core.Nothing, videoStartTime = Core.Nothing } instance Core.FromJSON NoOverlapGpsFailureDetails where parseJSON = Core.withObject "NoOverlapGpsFailureDetails" ( \o -> NoOverlapGpsFailureDetails Core.<$> (o Core..:? "gpsEndTime") Core.<*> (o Core..:? "gpsStartTime") Core.<*> (o Core..:? "videoEndTime") Core.<*> (o Core..:? "videoStartTime") ) instance Core.ToJSON NoOverlapGpsFailureDetails where toJSON NoOverlapGpsFailureDetails {..} = Core.object ( Core.catMaybes [ ("gpsEndTime" Core..=) Core.<$> gpsEndTime, ("gpsStartTime" Core..=) Core.<$> gpsStartTime, ("videoEndTime" Core..=) Core.<$> videoEndTime, ("videoStartTime" Core..=) Core.<$> videoStartTime ] ) -- | Details related to ProcessingFailureReason#NOT_OUTDOORS. If there are multiple indoor frames found, the first frame is recorded here. -- -- /See:/ 'newNotOutdoorsFailureDetails' smart constructor. newtype NotOutdoorsFailureDetails = NotOutdoorsFailureDetails { -- | Relative time (from the start of the video stream) when an indoor frame was found. startTime :: (Core.Maybe Core.Duration) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'NotOutdoorsFailureDetails' with the minimum fields required to make a request. newNotOutdoorsFailureDetails :: NotOutdoorsFailureDetails newNotOutdoorsFailureDetails = NotOutdoorsFailureDetails {startTime = Core.Nothing} instance Core.FromJSON NotOutdoorsFailureDetails where parseJSON = Core.withObject "NotOutdoorsFailureDetails" ( \o -> NotOutdoorsFailureDetails Core.<$> (o Core..:? "startTime") ) instance Core.ToJSON NotOutdoorsFailureDetails where toJSON NotOutdoorsFailureDetails {..} = Core.object (Core.catMaybes [("startTime" Core..=) Core.<$> startTime]) -- | This resource represents a long-running operation that is the result of a network API call. -- -- /See:/ 'newOperation' smart constructor. data Operation = Operation { -- | If the value is @false@, it means the operation is still in progress. If @true@, the operation is completed, and either @error@ or @response@ is available. done :: (Core.Maybe Core.Bool), -- | The error result of the operation in case of failure or cancellation. error :: (Core.Maybe Status), -- | Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any. metadata :: (Core.Maybe Operation_Metadata), -- | The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the @name@ should be a resource name ending with @operations\/{unique_id}@. name :: (Core.Maybe Core.Text), -- | The normal, successful response of the operation. If the original method returns no data on success, such as @Delete@, the response is @google.protobuf.Empty@. If the original method is standard @Get@\/@Create@\/@Update@, the response should be the resource. For other methods, the response should have the type @XxxResponse@, where @Xxx@ is the original method name. For example, if the original method name is @TakeSnapshot()@, the inferred response type is @TakeSnapshotResponse@. response :: (Core.Maybe Operation_Response) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Operation' with the minimum fields required to make a request. newOperation :: Operation newOperation = Operation { done = Core.Nothing, error = Core.Nothing, metadata = Core.Nothing, name = Core.Nothing, response = Core.Nothing } instance Core.FromJSON Operation where parseJSON = Core.withObject "Operation" ( \o -> Operation Core.<$> (o Core..:? "done") Core.<*> (o Core..:? "error") Core.<*> (o Core..:? "metadata") Core.<*> (o Core..:? "name") Core.<*> (o Core..:? "response") ) instance Core.ToJSON Operation where toJSON Operation {..} = Core.object ( Core.catMaybes [ ("done" Core..=) Core.<$> done, ("error" Core..=) Core.<$> error, ("metadata" Core..=) Core.<$> metadata, ("name" Core..=) Core.<$> name, ("response" Core..=) Core.<$> response ] ) -- | Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any. -- -- /See:/ 'newOperation_Metadata' smart constructor. newtype Operation_Metadata = Operation_Metadata { -- | Properties of the object. Contains field \@type with type URL. additional :: (Core.HashMap Core.Text Core.Value) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Operation_Metadata' with the minimum fields required to make a request. newOperation_Metadata :: -- | Properties of the object. Contains field \@type with type URL. See 'additional'. Core.HashMap Core.Text Core.Value -> Operation_Metadata newOperation_Metadata additional = Operation_Metadata {additional = additional} instance Core.FromJSON Operation_Metadata where parseJSON = Core.withObject "Operation_Metadata" (\o -> Operation_Metadata Core.<$> (Core.parseJSONObject o)) instance Core.ToJSON Operation_Metadata where toJSON Operation_Metadata {..} = Core.toJSON additional -- | The normal, successful response of the operation. If the original method returns no data on success, such as @Delete@, the response is @google.protobuf.Empty@. If the original method is standard @Get@\/@Create@\/@Update@, the response should be the resource. For other methods, the response should have the type @XxxResponse@, where @Xxx@ is the original method name. For example, if the original method name is @TakeSnapshot()@, the inferred response type is @TakeSnapshotResponse@. -- -- /See:/ 'newOperation_Response' smart constructor. newtype Operation_Response = Operation_Response { -- | Properties of the object. Contains field \@type with type URL. additional :: (Core.HashMap Core.Text Core.Value) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Operation_Response' with the minimum fields required to make a request. newOperation_Response :: -- | Properties of the object. Contains field \@type with type URL. See 'additional'. Core.HashMap Core.Text Core.Value -> Operation_Response newOperation_Response additional = Operation_Response {additional = additional} instance Core.FromJSON Operation_Response where parseJSON = Core.withObject "Operation_Response" (\o -> Operation_Response Core.<$> (Core.parseJSONObject o)) instance Core.ToJSON Operation_Response where toJSON Operation_Response {..} = Core.toJSON additional -- | Photo is used to store 360 photos along with photo metadata. -- -- /See:/ 'newPhoto' smart constructor. data Photo = Photo { -- | Optional. Absolute time when the photo was captured. When the photo has no exif timestamp, this is used to set a timestamp in the photo metadata. captureTime :: (Core.Maybe Core.DateTime), -- | Optional. Connections to other photos. A connection represents the link from this photo to another photo. connections :: (Core.Maybe [Connection]), -- | Output only. The download URL for the photo bytes. This field is set only when GetPhotoRequest.view is set to PhotoView.INCLUDE/DOWNLOAD/URL. downloadUrl :: (Core.Maybe Core.Text), -- | Output only. Status in Google Maps, whether this photo was published or rejected. mapsPublishStatus :: (Core.Maybe Photo_MapsPublishStatus), -- | Required. Output only. Required when updating a photo. Output only when creating a photo. Identifier for the photo, which is unique among all photos in Google. photoId :: (Core.Maybe PhotoId), -- | Optional. Places where this photo belongs. places :: (Core.Maybe [Place]), -- | Optional. Pose of the photo. pose :: (Core.Maybe Pose), -- | Output only. The share link for the photo. shareLink :: (Core.Maybe Core.Text), -- | Output only. The thumbnail URL for showing a preview of the given photo. thumbnailUrl :: (Core.Maybe Core.Text), -- | Output only. Status of rights transfer on this photo. transferStatus :: (Core.Maybe Photo_TransferStatus), -- | Input only. Required when creating a photo. Input only. The resource URL where the photo bytes are uploaded to. uploadReference :: (Core.Maybe UploadRef), -- | Output only. Time when the image was uploaded. uploadTime :: (Core.Maybe Core.DateTime), -- | Output only. View count of the photo. viewCount :: (Core.Maybe Core.Int64) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Photo' with the minimum fields required to make a request. newPhoto :: Photo newPhoto = Photo { captureTime = Core.Nothing, connections = Core.Nothing, downloadUrl = Core.Nothing, mapsPublishStatus = Core.Nothing, photoId = Core.Nothing, places = Core.Nothing, pose = Core.Nothing, shareLink = Core.Nothing, thumbnailUrl = Core.Nothing, transferStatus = Core.Nothing, uploadReference = Core.Nothing, uploadTime = Core.Nothing, viewCount = Core.Nothing } instance Core.FromJSON Photo where parseJSON = Core.withObject "Photo" ( \o -> Photo Core.<$> (o Core..:? "captureTime") Core.<*> (o Core..:? "connections") Core.<*> (o Core..:? "downloadUrl") Core.<*> (o Core..:? "mapsPublishStatus") Core.<*> (o Core..:? "photoId") Core.<*> (o Core..:? "places") Core.<*> (o Core..:? "pose") Core.<*> (o Core..:? "shareLink") Core.<*> (o Core..:? "thumbnailUrl") Core.<*> (o Core..:? "transferStatus") Core.<*> (o Core..:? "uploadReference") Core.<*> (o Core..:? "uploadTime") Core.<*> (o Core..:? "viewCount" Core.<&> Core.fmap Core.fromAsText) ) instance Core.ToJSON Photo where toJSON Photo {..} = Core.object ( Core.catMaybes [ ("captureTime" Core..=) Core.<$> captureTime, ("connections" Core..=) Core.<$> connections, ("downloadUrl" Core..=) Core.<$> downloadUrl, ("mapsPublishStatus" Core..=) Core.<$> mapsPublishStatus, ("photoId" Core..=) Core.<$> photoId, ("places" Core..=) Core.<$> places, ("pose" Core..=) Core.<$> pose, ("shareLink" Core..=) Core.<$> shareLink, ("thumbnailUrl" Core..=) Core.<$> thumbnailUrl, ("transferStatus" Core..=) Core.<$> transferStatus, ("uploadReference" Core..=) Core.<$> uploadReference, ("uploadTime" Core..=) Core.<$> uploadTime, ("viewCount" Core..=) Core.. Core.AsText Core.<$> viewCount ] ) -- | Identifier for a Photo. -- -- /See:/ 'newPhotoId' smart constructor. newtype PhotoId = PhotoId { -- | A unique identifier for a photo. id :: (Core.Maybe Core.Text) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'PhotoId' with the minimum fields required to make a request. newPhotoId :: PhotoId newPhotoId = PhotoId {id = Core.Nothing} instance Core.FromJSON PhotoId where parseJSON = Core.withObject "PhotoId" (\o -> PhotoId Core.<$> (o Core..:? "id")) instance Core.ToJSON PhotoId where toJSON PhotoId {..} = Core.object (Core.catMaybes [("id" Core..=) Core.<$> id]) -- | Response payload for a single Photo in batch operations including BatchGetPhotos and BatchUpdatePhotos. -- -- /See:/ 'newPhotoResponse' smart constructor. data PhotoResponse = PhotoResponse { -- | The Photo resource, if the request was successful. photo :: (Core.Maybe Photo), -- | The status for the operation to get or update a single photo in the batch request. status :: (Core.Maybe Status) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'PhotoResponse' with the minimum fields required to make a request. newPhotoResponse :: PhotoResponse newPhotoResponse = PhotoResponse {photo = Core.Nothing, status = Core.Nothing} instance Core.FromJSON PhotoResponse where parseJSON = Core.withObject "PhotoResponse" ( \o -> PhotoResponse Core.<$> (o Core..:? "photo") Core.<*> (o Core..:? "status") ) instance Core.ToJSON PhotoResponse where toJSON PhotoResponse {..} = Core.object ( Core.catMaybes [ ("photo" Core..=) Core.<$> photo, ("status" Core..=) Core.<$> status ] ) -- | A sequence of 360 photos along with metadata. -- -- /See:/ 'newPhotoSequence' smart constructor. data PhotoSequence = PhotoSequence { -- | Optional. Absolute time when the photo sequence starts to be captured. If the photo sequence is a video, this is the start time of the video. If this field is populated in input, it overrides the capture time in the video or XDM file. captureTimeOverride :: (Core.Maybe Core.DateTime), -- | Output only. The computed distance of the photo sequence in meters. distanceMeters :: (Core.Maybe Core.Double), -- | Output only. If this sequence has @failure_reason@ set, this may contain additional details about the failure. failureDetails :: (Core.Maybe ProcessingFailureDetails), -- | Output only. If this sequence has processing/state = FAILED, this will contain the reason why it failed. If the processing/state is any other value, this field will be unset. failureReason :: (Core.Maybe PhotoSequence_FailureReason), -- | Output only. The filename of the upload. Does not include the directory path. Only available if the sequence was uploaded on a platform that provides the filename. filename :: (Core.Maybe Core.Text), -- | Input only. If both raw/gps/timeline and the Camera Motion Metadata Track (CAMM) contain GPS measurements, indicate which takes precedence. gpsSource :: (Core.Maybe PhotoSequence_GpsSource), -- | Output only. Unique identifier for the photo sequence. This also acts as a long running operation ID if uploading is performed asynchronously. id :: (Core.Maybe Core.Text), -- | Input only. Three axis IMU data for the collection. If this data is too large to put in the request, then it should be put in the CAMM track for the video. This data always takes precedence over the equivalent CAMM data, if it exists. imu :: (Core.Maybe Imu), -- | Output only. Photos with increasing timestamps. photos :: (Core.Maybe [Photo]), -- | Output only. The processing state of this sequence. processingState :: (Core.Maybe PhotoSequence_ProcessingState), -- | Input only. Raw GPS measurements with increasing timestamps from the device that aren\'t time synced with each photo. These raw measurements will be used to infer the pose of each frame. Required in input when InputType is VIDEO and raw GPS measurements are not in Camera Motion Metadata Track (CAMM). User can indicate which takes precedence using gps/source if raw GPS measurements are provided in both raw/gps_timeline and Camera Motion Metadata Track (CAMM). rawGpsTimeline :: (Core.Maybe [Pose]), -- | Output only. A rectangular box that encapsulates every image in this photo sequence. sequenceBounds :: (Core.Maybe LatLngBounds), -- | Input only. Required when creating photo sequence. The resource name where the bytes of the photo sequence (in the form of video) are uploaded. uploadReference :: (Core.Maybe UploadRef), -- | Output only. The time this photo sequence was created in uSV Store service. uploadTime :: (Core.Maybe Core.DateTime), -- | Output only. The total number of views that all the published images in this PhotoSequence have received. viewCount :: (Core.Maybe Core.Int64) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'PhotoSequence' with the minimum fields required to make a request. newPhotoSequence :: PhotoSequence newPhotoSequence = PhotoSequence { captureTimeOverride = Core.Nothing, distanceMeters = Core.Nothing, failureDetails = Core.Nothing, failureReason = Core.Nothing, filename = Core.Nothing, gpsSource = Core.Nothing, id = Core.Nothing, imu = Core.Nothing, photos = Core.Nothing, processingState = Core.Nothing, rawGpsTimeline = Core.Nothing, sequenceBounds = Core.Nothing, uploadReference = Core.Nothing, uploadTime = Core.Nothing, viewCount = Core.Nothing } instance Core.FromJSON PhotoSequence where parseJSON = Core.withObject "PhotoSequence" ( \o -> PhotoSequence Core.<$> (o Core..:? "captureTimeOverride") Core.<*> (o Core..:? "distanceMeters") Core.<*> (o Core..:? "failureDetails") Core.<*> (o Core..:? "failureReason") Core.<*> (o Core..:? "filename") Core.<*> (o Core..:? "gpsSource") Core.<*> (o Core..:? "id") Core.<*> (o Core..:? "imu") Core.<*> (o Core..:? "photos") Core.<*> (o Core..:? "processingState") Core.<*> (o Core..:? "rawGpsTimeline") Core.<*> (o Core..:? "sequenceBounds") Core.<*> (o Core..:? "uploadReference") Core.<*> (o Core..:? "uploadTime") Core.<*> (o Core..:? "viewCount" Core.<&> Core.fmap Core.fromAsText) ) instance Core.ToJSON PhotoSequence where toJSON PhotoSequence {..} = Core.object ( Core.catMaybes [ ("captureTimeOverride" Core..=) Core.<$> captureTimeOverride, ("distanceMeters" Core..=) Core.<$> distanceMeters, ("failureDetails" Core..=) Core.<$> failureDetails, ("failureReason" Core..=) Core.<$> failureReason, ("filename" Core..=) Core.<$> filename, ("gpsSource" Core..=) Core.<$> gpsSource, ("id" Core..=) Core.<$> id, ("imu" Core..=) Core.<$> imu, ("photos" Core..=) Core.<$> photos, ("processingState" Core..=) Core.<$> processingState, ("rawGpsTimeline" Core..=) Core.<$> rawGpsTimeline, ("sequenceBounds" Core..=) Core.<$> sequenceBounds, ("uploadReference" Core..=) Core.<$> uploadReference, ("uploadTime" Core..=) Core.<$> uploadTime, ("viewCount" Core..=) Core.. Core.AsText Core.<$> viewCount ] ) -- | Place metadata for an entity. -- -- /See:/ 'newPlace' smart constructor. data Place = Place { -- | Output only. The language/code that the name is localized with. This should be the language/code specified in the request, but may be a fallback. languageCode :: (Core.Maybe Core.Text), -- | Output only. The name of the place, localized to the language_code. name :: (Core.Maybe Core.Text), -- | Place identifier, as described in https:\/\/developers.google.com\/places\/place-id. placeId :: (Core.Maybe Core.Text) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Place' with the minimum fields required to make a request. newPlace :: Place newPlace = Place { languageCode = Core.Nothing, name = Core.Nothing, placeId = Core.Nothing } instance Core.FromJSON Place where parseJSON = Core.withObject "Place" ( \o -> Place Core.<$> (o Core..:? "languageCode") Core.<*> (o Core..:? "name") Core.<*> (o Core..:? "placeId") ) instance Core.ToJSON Place where toJSON Place {..} = Core.object ( Core.catMaybes [ ("languageCode" Core..=) Core.<$> languageCode, ("name" Core..=) Core.<$> name, ("placeId" Core..=) Core.<$> placeId ] ) -- | Raw pose measurement for an entity. -- -- /See:/ 'newPose' smart constructor. data Pose = Pose { -- | The estimated horizontal accuracy of this pose in meters with 68% confidence (one standard deviation). For example, on Android, this value is available from this method: https:\/\/developer.android.com\/reference\/android\/location\/Location#getAccuracy(). Other platforms have different methods of obtaining similar accuracy estimations. accuracyMeters :: (Core.Maybe Core.Double), -- | Altitude of the pose in meters above WGS84 ellipsoid. NaN indicates an unmeasured quantity. altitude :: (Core.Maybe Core.Double), -- | Time of the GPS record since UTC epoch. gpsRecordTimestampUnixEpoch :: (Core.Maybe Core.DateTime), -- | The following pose parameters pertain to the center of the photo. They match https:\/\/developers.google.com\/streetview\/spherical-metadata. Compass heading, measured at the center of the photo in degrees clockwise from North. Value must be >=0 and \<360. NaN indicates an unmeasured quantity. heading :: (Core.Maybe Core.Double), -- | Latitude and longitude pair of the pose, as explained here: https:\/\/cloud.google.com\/datastore\/docs\/reference\/rest\/Shared.Types\/LatLng When creating a Photo, if the latitude and longitude pair are not provided, the geolocation from the exif header is used. A latitude and longitude pair not provided in the photo or exif header causes the photo process to fail. latLngPair :: (Core.Maybe LatLng), -- | Level (the floor in a building) used to configure vertical navigation. level :: (Core.Maybe Level), -- | Pitch, measured at the center of the photo in degrees. Value must be >=-90 and \<= 90. A value of -90 means looking directly down, and a value of 90 means looking directly up. NaN indicates an unmeasured quantity. pitch :: (Core.Maybe Core.Double), -- | Roll, measured in degrees. Value must be >= 0 and \<360. A value of 0 means level with the horizon. NaN indicates an unmeasured quantity. roll :: (Core.Maybe Core.Double) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Pose' with the minimum fields required to make a request. newPose :: Pose newPose = Pose { accuracyMeters = Core.Nothing, altitude = Core.Nothing, gpsRecordTimestampUnixEpoch = Core.Nothing, heading = Core.Nothing, latLngPair = Core.Nothing, level = Core.Nothing, pitch = Core.Nothing, roll = Core.Nothing } instance Core.FromJSON Pose where parseJSON = Core.withObject "Pose" ( \o -> Pose Core.<$> (o Core..:? "accuracyMeters") Core.<*> (o Core..:? "altitude") Core.<*> (o Core..:? "gpsRecordTimestampUnixEpoch") Core.<*> (o Core..:? "heading") Core.<*> (o Core..:? "latLngPair") Core.<*> (o Core..:? "level") Core.<*> (o Core..:? "pitch") Core.<*> (o Core..:? "roll") ) instance Core.ToJSON Pose where toJSON Pose {..} = Core.object ( Core.catMaybes [ ("accuracyMeters" Core..=) Core.<$> accuracyMeters, ("altitude" Core..=) Core.<$> altitude, ("gpsRecordTimestampUnixEpoch" Core..=) Core.<$> gpsRecordTimestampUnixEpoch, ("heading" Core..=) Core.<$> heading, ("latLngPair" Core..=) Core.<$> latLngPair, ("level" Core..=) Core.<$> level, ("pitch" Core..=) Core.<$> pitch, ("roll" Core..=) Core.<$> roll ] ) -- | Additional details to accompany the ProcessingFailureReason enum. This message is always expected to be used in conjunction with ProcessingFailureReason, and the oneof value set in this message should match the FailureReason. -- -- /See:/ 'newProcessingFailureDetails' smart constructor. data ProcessingFailureDetails = ProcessingFailureDetails { -- | See GpsDataGapFailureDetails. gpsDataGapDetails :: (Core.Maybe GpsDataGapFailureDetails), -- | See ImuDataGapFailureDetails. imuDataGapDetails :: (Core.Maybe ImuDataGapFailureDetails), -- | See InsufficientGpsFailureDetails. insufficientGpsDetails :: (Core.Maybe InsufficientGpsFailureDetails), -- | See NoOverlapGpsFailureDetails. noOverlapGpsDetails :: (Core.Maybe NoOverlapGpsFailureDetails), -- | See NotOutdoorsFailureDetails. notOutdoorsDetails :: (Core.Maybe NotOutdoorsFailureDetails) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'ProcessingFailureDetails' with the minimum fields required to make a request. newProcessingFailureDetails :: ProcessingFailureDetails newProcessingFailureDetails = ProcessingFailureDetails { gpsDataGapDetails = Core.Nothing, imuDataGapDetails = Core.Nothing, insufficientGpsDetails = Core.Nothing, noOverlapGpsDetails = Core.Nothing, notOutdoorsDetails = Core.Nothing } instance Core.FromJSON ProcessingFailureDetails where parseJSON = Core.withObject "ProcessingFailureDetails" ( \o -> ProcessingFailureDetails Core.<$> (o Core..:? "gpsDataGapDetails") Core.<*> (o Core..:? "imuDataGapDetails") Core.<*> (o Core..:? "insufficientGpsDetails") Core.<*> (o Core..:? "noOverlapGpsDetails") Core.<*> (o Core..:? "notOutdoorsDetails") ) instance Core.ToJSON ProcessingFailureDetails where toJSON ProcessingFailureDetails {..} = Core.object ( Core.catMaybes [ ("gpsDataGapDetails" Core..=) Core.<$> gpsDataGapDetails, ("imuDataGapDetails" Core..=) Core.<$> imuDataGapDetails, ("insufficientGpsDetails" Core..=) Core.<$> insufficientGpsDetails, ("noOverlapGpsDetails" Core..=) Core.<$> noOverlapGpsDetails, ("notOutdoorsDetails" Core..=) Core.<$> notOutdoorsDetails ] ) -- | The @Status@ type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by . Each @Status@ message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the . -- -- /See:/ 'newStatus' smart constructor. data Status = Status { -- | The status code, which should be an enum value of google.rpc.Code. code :: (Core.Maybe Core.Int32), -- | A list of messages that carry the error details. There is a common set of message types for APIs to use. details :: (Core.Maybe [Status_DetailsItem]), -- | A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client. message :: (Core.Maybe Core.Text) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Status' with the minimum fields required to make a request. newStatus :: Status newStatus = Status { code = Core.Nothing, details = Core.Nothing, message = Core.Nothing } instance Core.FromJSON Status where parseJSON = Core.withObject "Status" ( \o -> Status Core.<$> (o Core..:? "code") Core.<*> (o Core..:? "details") Core.<*> (o Core..:? "message") ) instance Core.ToJSON Status where toJSON Status {..} = Core.object ( Core.catMaybes [ ("code" Core..=) Core.<$> code, ("details" Core..=) Core.<$> details, ("message" Core..=) Core.<$> message ] ) -- -- /See:/ 'newStatus_DetailsItem' smart constructor. newtype Status_DetailsItem = Status_DetailsItem { -- | Properties of the object. Contains field \@type with type URL. additional :: (Core.HashMap Core.Text Core.Value) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Status_DetailsItem' with the minimum fields required to make a request. newStatus_DetailsItem :: -- | Properties of the object. Contains field \@type with type URL. See 'additional'. Core.HashMap Core.Text Core.Value -> Status_DetailsItem newStatus_DetailsItem additional = Status_DetailsItem {additional = additional} instance Core.FromJSON Status_DetailsItem where parseJSON = Core.withObject "Status_DetailsItem" (\o -> Status_DetailsItem Core.<$> (Core.parseJSONObject o)) instance Core.ToJSON Status_DetailsItem where toJSON Status_DetailsItem {..} = Core.toJSON additional -- | Request to update the metadata of a Photo. Updating the pixels of a photo is not supported. -- -- /See:/ 'newUpdatePhotoRequest' smart constructor. data UpdatePhotoRequest = UpdatePhotoRequest { -- | Required. Photo object containing the new metadata. photo :: (Core.Maybe Photo), -- | Required. Mask that identifies fields on the photo metadata to update. If not present, the old Photo metadata is entirely replaced with the new Photo metadata in this request. The update fails if invalid fields are specified. Multiple fields can be specified in a comma-delimited list. The following fields are valid: * @pose.heading@ * @pose.lat_lng_pair@ * @pose.pitch@ * @pose.roll@ * @pose.level@ * @pose.altitude@ * @connections@ * @places@ > Note: When updateMask contains repeated fields, the entire set of repeated values get replaced with the new contents. For example, if updateMask contains @connections@ and @UpdatePhotoRequest.photo.connections@ is empty, all connections are removed. updateMask :: (Core.Maybe Core.FieldMask) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'UpdatePhotoRequest' with the minimum fields required to make a request. newUpdatePhotoRequest :: UpdatePhotoRequest newUpdatePhotoRequest = UpdatePhotoRequest { photo = Core.Nothing, updateMask = Core.Nothing } instance Core.FromJSON UpdatePhotoRequest where parseJSON = Core.withObject "UpdatePhotoRequest" ( \o -> UpdatePhotoRequest Core.<$> (o Core..:? "photo") Core.<*> (o Core..:? "updateMask") ) instance Core.ToJSON UpdatePhotoRequest where toJSON UpdatePhotoRequest {..} = Core.object ( Core.catMaybes [ ("photo" Core..=) Core.<$> photo, ("updateMask" Core..=) Core.<$> updateMask ] ) -- | Upload reference for media files. -- -- /See:/ 'newUploadRef' smart constructor. newtype UploadRef = UploadRef { -- | An upload reference should be unique for each user. It follows the form: \"https:\/\/streetviewpublish.googleapis.com\/media\/user\/{account/id}\/photo\/{upload/reference}\" uploadUrl :: (Core.Maybe Core.Text) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'UploadRef' with the minimum fields required to make a request. newUploadRef :: UploadRef newUploadRef = UploadRef {uploadUrl = Core.Nothing} instance Core.FromJSON UploadRef where parseJSON = Core.withObject "UploadRef" (\o -> UploadRef Core.<$> (o Core..:? "uploadUrl")) instance Core.ToJSON UploadRef where toJSON UploadRef {..} = Core.object (Core.catMaybes [("uploadUrl" Core..=) Core.<$> uploadUrl])