packages feed

gogol-dataflow (empty) → 0.0.1

raw patch · 16 files changed

+9856/−0 lines, 16 filesdep +basedep +gogol-coresetup-changed

Dependencies added: base, gogol-core

Files

+ LICENSE view
@@ -0,0 +1,367 @@+Mozilla Public License Version 2.0+==================================++1. Definitions+--------------++1.1. "Contributor"+    means each individual or legal entity that creates, contributes to+    the creation of, or owns Covered Software.++1.2. "Contributor Version"+    means the combination of the Contributions of others (if any) used+    by a Contributor and that particular Contributor's Contribution.++1.3. "Contribution"+    means Covered Software of a particular Contributor.++1.4. "Covered Software"+    means Source Code Form to which the initial Contributor has attached+    the notice in Exhibit A, the Executable Form of such Source Code+    Form, and Modifications of such Source Code Form, in each case+    including portions thereof.++1.5. "Incompatible With Secondary Licenses"+    means++    (a) that the initial Contributor has attached the notice described+        in Exhibit B to the Covered Software; or++    (b) that the Covered Software was made available under the terms of+        version 1.1 or earlier of the License, but not also under the+        terms of a Secondary License.++1.6. "Executable Form"+    means any form of the work other than Source Code Form.++1.7. "Larger Work"+    means a work that combines Covered Software with other material, in+    a separate file or files, that is not Covered Software.++1.8. "License"+    means this document.++1.9. "Licensable"+    means having the right to grant, to the maximum extent possible,+    whether at the time of the initial grant or subsequently, any and+    all of the rights conveyed by this License.++1.10. "Modifications"+    means any of the following:++    (a) any file in Source Code Form that results from an addition to,+        deletion from, or modification of the contents of Covered+        Software; or++    (b) any new file in Source Code Form that contains any Covered+        Software.++1.11. "Patent Claims" of a Contributor+    means any patent claim(s), including without limitation, method,+    process, and apparatus claims, in any patent Licensable by such+    Contributor that would be infringed, but for the grant of the+    License, by the making, using, selling, offering for sale, having+    made, import, or transfer of either its Contributions or its+    Contributor Version.++1.12. "Secondary License"+    means either the GNU General Public License, Version 2.0, the GNU+    Lesser General Public License, Version 2.1, the GNU Affero General+    Public License, Version 3.0, or any later versions of those+    licenses.++1.13. "Source Code Form"+    means the form of the work preferred for making modifications.++1.14. "You" (or "Your")+    means an individual or a legal entity exercising rights under this+    License. For legal entities, "You" includes any entity that+    controls, is controlled by, or is under common control with You. For+    purposes of this definition, "control" means (a) the power, direct+    or indirect, to cause the direction or management of such entity,+    whether by contract or otherwise, or (b) ownership of more than+    fifty percent (50%) of the outstanding shares or beneficial+    ownership of such entity.++2. License Grants and Conditions+--------------------------------++2.1. Grants++Each Contributor hereby grants You a world-wide, royalty-free,+non-exclusive license:++(a) under intellectual property rights (other than patent or trademark)+    Licensable by such Contributor to use, reproduce, make available,+    modify, display, perform, distribute, and otherwise exploit its+    Contributions, either on an unmodified basis, with Modifications, or+    as part of a Larger Work; and++(b) under Patent Claims of such Contributor to make, use, sell, offer+    for sale, have made, import, and otherwise transfer either its+    Contributions or its Contributor Version.++2.2. Effective Date++The licenses granted in Section 2.1 with respect to any Contribution+become effective for each Contribution on the date the Contributor first+distributes such Contribution.++2.3. Limitations on Grant Scope++The licenses granted in this Section 2 are the only rights granted under+this License. No additional rights or licenses will be implied from the+distribution or licensing of Covered Software under this License.+Notwithstanding Section 2.1(b) above, no patent license is granted by a+Contributor:++(a) for any code that a Contributor has removed from Covered Software;+    or++(b) for infringements caused by: (i) Your and any other third party's+    modifications of Covered Software, or (ii) the combination of its+    Contributions with other software (except as part of its Contributor+    Version); or++(c) under Patent Claims infringed by Covered Software in the absence of+    its Contributions.++This License does not grant any rights in the trademarks, service marks,+or logos of any Contributor (except as may be necessary to comply with+the notice requirements in Section 3.4).++2.4. Subsequent Licenses++No Contributor makes additional grants as a result of Your choice to+distribute the Covered Software under a subsequent version of this+License (see Section 10.2) or under the terms of a Secondary License (if+permitted under the terms of Section 3.3).++2.5. Representation++Each Contributor represents that the Contributor believes its+Contributions are its original creation(s) or it has sufficient rights+to grant the rights to its Contributions conveyed by this License.++2.6. Fair Use++This License is not intended to limit any rights You have under+applicable copyright doctrines of fair use, fair dealing, or other+equivalents.++2.7. Conditions++Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted+in Section 2.1.++3. Responsibilities+-------------------++3.1. Distribution of Source Form++All distribution of Covered Software in Source Code Form, including any+Modifications that You create or to which You contribute, must be under+the terms of this License. You must inform recipients that the Source+Code Form of the Covered Software is governed by the terms of this+License, and how they can obtain a copy of this License. You may not+attempt to alter or restrict the recipients' rights in the Source Code+Form.++3.2. Distribution of Executable Form++If You distribute Covered Software in Executable Form then:++(a) such Covered Software must also be made available in Source Code+    Form, as described in Section 3.1, and You must inform recipients of+    the Executable Form how they can obtain a copy of such Source Code+    Form by reasonable means in a timely manner, at a charge no more+    than the cost of distribution to the recipient; and++(b) You may distribute such Executable Form under the terms of this+    License, or sublicense it under different terms, provided that the+    license for the Executable Form does not attempt to limit or alter+    the recipients' rights in the Source Code Form under this License.++3.3. Distribution of a Larger Work++You may create and distribute a Larger Work under terms of Your choice,+provided that You also comply with the requirements of this License for+the Covered Software. If the Larger Work is a combination of Covered+Software with a work governed by one or more Secondary Licenses, and the+Covered Software is not Incompatible With Secondary Licenses, this+License permits You to additionally distribute such Covered Software+under the terms of such Secondary License(s), so that the recipient of+the Larger Work may, at their option, further distribute the Covered+Software under the terms of either this License or such Secondary+License(s).++3.4. Notices++You may not remove or alter the substance of any license notices+(including copyright notices, patent notices, disclaimers of warranty,+or limitations of liability) contained within the Source Code Form of+the Covered Software, except that You may alter any license notices to+the extent required to remedy known factual inaccuracies.++3.5. Application of Additional Terms++You may choose to offer, and to charge a fee for, warranty, support,+indemnity or liability obligations to one or more recipients of Covered+Software. However, You may do so only on Your own behalf, and not on+behalf of any Contributor. You must make it absolutely clear that any+such warranty, support, indemnity, or liability obligation is offered by+You alone, and You hereby agree to indemnify every Contributor for any+liability incurred by such Contributor as a result of warranty, support,+indemnity or liability terms You offer. You may include additional+disclaimers of warranty and limitations of liability specific to any+jurisdiction.++4. Inability to Comply Due to Statute or Regulation+---------------------------------------------------++If it is impossible for You to comply with any of the terms of this+License with respect to some or all of the Covered Software due to+statute, judicial order, or regulation then You must: (a) comply with+the terms of this License to the maximum extent possible; and (b)+describe the limitations and the code they affect. Such description must+be placed in a text file included with all distributions of the Covered+Software under this License. Except to the extent prohibited by statute+or regulation, such description must be sufficiently detailed for a+recipient of ordinary skill to be able to understand it.++5. Termination+--------------++5.1. The rights granted under this License will terminate automatically+if You fail to comply with any of its terms. However, if You become+compliant, then the rights granted under this License from a particular+Contributor are reinstated (a) provisionally, unless and until such+Contributor explicitly and finally terminates Your grants, and (b) on an+ongoing basis, if such Contributor fails to notify You of the+non-compliance by some reasonable means prior to 60 days after You have+come back into compliance. Moreover, Your grants from a particular+Contributor are reinstated on an ongoing basis if such Contributor+notifies You of the non-compliance by some reasonable means, this is the+first time You have received notice of non-compliance with this License+from such Contributor, and You become compliant prior to 30 days after+Your receipt of the notice.++5.2. If You initiate litigation against any entity by asserting a patent+infringement claim (excluding declaratory judgment actions,+counter-claims, and cross-claims) alleging that a Contributor Version+directly or indirectly infringes any patent, then the rights granted to+You by any and all Contributors for the Covered Software under Section+2.1 of this License shall terminate.++5.3. In the event of termination under Sections 5.1 or 5.2 above, all+end user license agreements (excluding distributors and resellers) which+have been validly granted by You or Your distributors under this License+prior to termination shall survive termination.++************************************************************************+*                                                                      *+*  6. Disclaimer of Warranty                                           *+*  -------------------------                                           *+*                                                                      *+*  Covered Software is provided under this License on an "as is"       *+*  basis, without warranty of any kind, either expressed, implied, or  *+*  statutory, including, without limitation, warranties that the       *+*  Covered Software is free of defects, merchantable, fit for a        *+*  particular purpose or non-infringing. The entire risk as to the     *+*  quality and performance of the Covered Software is with You.        *+*  Should any Covered Software prove defective in any respect, You     *+*  (not any Contributor) assume the cost of any necessary servicing,   *+*  repair, or correction. This disclaimer of warranty constitutes an   *+*  essential part of this License. No use of any Covered Software is   *+*  authorized under this License except under this disclaimer.         *+*                                                                      *+************************************************************************++************************************************************************+*                                                                      *+*  7. Limitation of Liability                                          *+*  --------------------------                                          *+*                                                                      *+*  Under no circumstances and under no legal theory, whether tort      *+*  (including negligence), contract, or otherwise, shall any           *+*  Contributor, or anyone who distributes Covered Software as          *+*  permitted above, be liable to You for any direct, indirect,         *+*  special, incidental, or consequential damages of any character      *+*  including, without limitation, damages for lost profits, loss of    *+*  goodwill, work stoppage, computer failure or malfunction, or any    *+*  and all other commercial damages or losses, even if such party      *+*  shall have been informed of the possibility of such damages. This   *+*  limitation of liability shall not apply to liability for death or   *+*  personal injury resulting from such party's negligence to the       *+*  extent applicable law prohibits such limitation. Some               *+*  jurisdictions do not allow the exclusion or limitation of           *+*  incidental or consequential damages, so this exclusion and          *+*  limitation may not apply to You.                                    *+*                                                                      *+************************************************************************++8. Litigation+-------------++Any litigation relating to this License may be brought only in the+courts of a jurisdiction where the defendant maintains its principal+place of business and such litigation shall be governed by laws of that+jurisdiction, without reference to its conflict-of-law provisions.+Nothing in this Section shall prevent a party's ability to bring+cross-claims or counter-claims.++9. Miscellaneous+----------------++This License represents the complete agreement concerning the subject+matter hereof. If any provision of this License is held to be+unenforceable, such provision shall be reformed only to the extent+necessary to make it enforceable. Any law or regulation which provides+that the language of a contract shall be construed against the drafter+shall not be used to construe this License against a Contributor.++10. Versions of the License+---------------------------++10.1. New Versions++Mozilla Foundation is the license steward. Except as provided in Section+10.3, no one other than the license steward has the right to modify or+publish new versions of this License. Each version will be given a+distinguishing version number.++10.2. Effect of New Versions++You may distribute the Covered Software under the terms of the version+of the License under which You originally received the Covered Software,+or under the terms of any subsequent version published by the license+steward.++10.3. Modified Versions++If you create software not governed by this License, and you want to+create a new license for such software, you may create and use a+modified version of this License if you rename the license and remove+any references to the name of the license steward (except to note that+such modified license differs from this License).++10.4. Distributing Source Code Form that is Incompatible With Secondary+Licenses++If You choose to distribute Source Code Form that is Incompatible With+Secondary Licenses under the terms of this version of the License, the+notice described in Exhibit B of this License must be attached.++Exhibit A - Source Code Form License Notice+-------------------------------------------++  This Source Code Form is subject to the terms of the Mozilla Public+  License, v. 2.0. If a copy of the MPL was not distributed with this+  file, You can obtain one at http://mozilla.org/MPL/2.0/.++If it is not possible or desirable to put the notice in a particular+file, then You may include the notice in a location (such as a LICENSE+file in a relevant directory) where a recipient would be likely to look+for such a notice.++You may add additional accurate notices of copyright ownership.
+ README.md view
@@ -0,0 +1,28 @@+# gogol-dataflow++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version++`0.0.1`+++## Description++A client library for the Google Dataflow.+++## Contribute++For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).++> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.+++## Licence++`gogol-dataflow` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).
+ Setup.hs view
@@ -0,0 +1,2 @@+import           Distribution.Simple+main = defaultMain
+ gen/Network/Google/Dataflow.hs view
@@ -0,0 +1,759 @@+{-# LANGUAGE DataKinds         #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TypeOperators     #-}++{-# OPTIONS_GHC -fno-warn-unused-imports    #-}+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}++-- |+-- Module      : Network.Google.Dataflow+-- Copyright   : (c) 2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Google Dataflow API.+--+-- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference>+module Network.Google.Dataflow+    (+    -- * Service Configuration+      dataflowService++    -- * API Declaration+    , DataflowAPI++    -- * Resources++    -- ** dataflow.projects.jobs.create+    , module Network.Google.Resource.Dataflow.Projects.Jobs.Create++    -- ** dataflow.projects.jobs.get+    , module Network.Google.Resource.Dataflow.Projects.Jobs.Get++    -- ** dataflow.projects.jobs.getMetrics+    , module Network.Google.Resource.Dataflow.Projects.Jobs.GetMetrics++    -- ** dataflow.projects.jobs.list+    , module Network.Google.Resource.Dataflow.Projects.Jobs.List++    -- ** dataflow.projects.jobs.messages.list+    , module Network.Google.Resource.Dataflow.Projects.Jobs.Messages.List++    -- ** dataflow.projects.jobs.update+    , module Network.Google.Resource.Dataflow.Projects.Jobs.Update++    -- ** dataflow.projects.jobs.workItems.lease+    , module Network.Google.Resource.Dataflow.Projects.Jobs.WorkItems.Lease++    -- ** dataflow.projects.jobs.workItems.reportStatus+    , module Network.Google.Resource.Dataflow.Projects.Jobs.WorkItems.ReportStatus++    -- * Types++    -- ** JobExecutionInfoStages+    , JobExecutionInfoStages+    , jobExecutionInfoStages+    , jeisAddtional++    -- ** ComputationTopology+    , ComputationTopology+    , computationTopology+    , ctStateFamilies+    , ctUserStageName+    , ctInputs+    , ctKeyRanges+    , ctOutputs+    , ctComputationId+    , ctSystemStageName++    -- ** SourceSplitResponse+    , SourceSplitResponse+    , sourceSplitResponse+    , ssrBundles+    , ssrShards+    , ssrOutcome++    -- ** Status+    , Status+    , status+    , sDetails+    , sCode+    , sMessage++    -- ** WorkItem+    , WorkItem+    , workItem+    , wiJobId+    , wiReportStatusInterval+    , wiShellTask+    , wiStreamingSetupTask+    , wiInitialReportIndex+    , wiMapTask+    , wiPackages+    , wiStreamingComputationTask+    , wiSourceOperationTask+    , wiId+    , wiProjectId+    , wiLeaseExpireTime+    , wiConfiguration+    , wiSeqMapTask++    -- ** SourceSplitOptions+    , SourceSplitOptions+    , sourceSplitOptions+    , ssoDesiredShardSizeBytes+    , ssoDesiredBundleSizeBytes++    -- ** WorkerPoolMetadata+    , WorkerPoolMetadata+    , workerPoolMetadata+    , wpmAddtional++    -- ** AutoscalingSettings+    , AutoscalingSettings+    , autoscalingSettings+    , asMaxNumWorkers+    , asAlgorithm++    -- ** JobExecutionStageInfo+    , JobExecutionStageInfo+    , jobExecutionStageInfo+    , jesiStepName++    -- ** InstructionOutput+    , InstructionOutput+    , instructionOutput+    , ioCodec+    , ioName+    , ioSystemName++    -- ** ReportWorkItemStatusRequest+    , ReportWorkItemStatusRequest+    , reportWorkItemStatusRequest+    , rwisrCurrentWorkerTime+    , rwisrWorkItemStatuses+    , rwisrWorkerId++    -- ** EnvironmentVersion+    , EnvironmentVersion+    , environmentVersion+    , evAddtional++    -- ** Sink+    , Sink+    , sink+    , sCodec+    , sSpec++    -- ** MetricStructuredName+    , MetricStructuredName+    , metricStructuredName+    , msnOrigin+    , msnContext+    , msnName++    -- ** WriteInstruction+    , WriteInstruction+    , writeInstruction+    , wiSink+    , wiInput++    -- ** EnvironmentUserAgent+    , EnvironmentUserAgent+    , environmentUserAgent+    , euaAddtional++    -- ** Disk+    , Disk+    , disk+    , dSizeGb+    , dDiskType+    , dMountPoint++    -- ** MetricUpdate+    , MetricUpdate+    , metricUpdate+    , muMeanSum+    , muInternal+    , muSet+    , muCumulative+    , muKind+    , muUpdateTime+    , muMeanCount+    , muName+    , muScalar++    -- ** SourceGetMetadataResponse+    , SourceGetMetadataResponse+    , sourceGetMetadataResponse+    , sgmrMetadata++    -- ** Environment+    , Environment+    , environment+    , eDataSet+    , eExperiments+    , eWorkerPools+    , eClusterManagerAPIService+    , eVersion+    , eInternalExperiments+    , eTempStoragePrefix+    , eUserAgent+    , eSdkPipelineOptions++    -- ** ConcatPosition+    , ConcatPosition+    , concatPosition+    , cpIndex+    , cpPosition++    -- ** MetricStructuredNameContext+    , MetricStructuredNameContext+    , metricStructuredNameContext+    , msncAddtional++    -- ** StreamingStageLocation+    , StreamingStageLocation+    , streamingStageLocation+    , sslStreamId++    -- ** DerivedSource+    , DerivedSource+    , derivedSource+    , dsDerivationMode+    , dsSource++    -- ** JobMetrics+    , JobMetrics+    , jobMetrics+    , jmMetrics+    , jmMetricTime++    -- ** WorkItemStatus+    , WorkItemStatus+    , workItemStatus+    , wisProgress+    , wisSourceOperationResponse+    , wisStopPosition+    , wisDynamicSourceSplit+    , wisCompleted+    , wisSourceFork+    , wisReportIndex+    , wisRequestedLeaseDuration+    , wisErrors+    , wisMetricUpdates+    , wisWorkItemId++    -- ** FlattenInstruction+    , FlattenInstruction+    , flattenInstruction+    , fiInputs++    -- ** JobTransformNameMApping+    , JobTransformNameMApping+    , jobTransformNameMApping+    , jtnmaAddtional++    -- ** SourceSpec+    , SourceSpec+    , sourceSpec+    , ssAddtional++    -- ** SourceMetadata+    , SourceMetadata+    , sourceMetadata+    , smEstimatedSizeBytes+    , smProducesSortedKeys+    , smInfinite++    -- ** EnvironmentInternalExperiments+    , EnvironmentInternalExperiments+    , environmentInternalExperiments+    , eieAddtional++    -- ** TaskRunnerSettings+    , TaskRunnerSettings+    , taskRunnerSettings+    , trsContinueOnException+    , trsHarnessCommand+    , trsWorkflowFileName+    , trsTaskGroup+    , trsAlsologtostderr+    , trsDataflowAPIVersion+    , trsLogDir+    , trsCommandlinesFileName+    , trsVMId+    , trsBaseURL+    , trsOAuthScopes+    , trsTaskUser+    , trsStreamingWorkerMainClass+    , trsBaseTaskDir+    , trsLogUploadLocation+    , trsTempStoragePrefix+    , trsLogToSerialconsole+    , trsParallelWorkerSettings+    , trsLanguageHint++    -- ** EnvironmentSdkPipelineOptions+    , EnvironmentSdkPipelineOptions+    , environmentSdkPipelineOptions+    , espoAddtional++    -- ** LeaseWorkItemRequest+    , LeaseWorkItemRequest+    , leaseWorkItemRequest+    , lwirWorkItemTypes+    , lwirCurrentWorkerTime+    , lwirWorkerCapabilities+    , lwirRequestedLeaseDuration+    , lwirWorkerId++    -- ** SourceOperationResponse+    , SourceOperationResponse+    , sourceOperationResponse+    , sorSplit+    , sorGetMetadata++    -- ** TopologyConfigUserStageToComputationNameMap+    , TopologyConfigUserStageToComputationNameMap+    , topologyConfigUserStageToComputationNameMap+    , tcustcnmAddtional++    -- ** ShellTask+    , ShellTask+    , shellTask+    , stCommand+    , stExitCode++    -- ** StatusDetailsItem+    , StatusDetailsItem+    , statusDetailsItem+    , sdiAddtional++    -- ** StepProperties+    , StepProperties+    , stepProperties+    , spAddtional++    -- ** TopologyConfig+    , TopologyConfig+    , topologyConfig+    , tcDataDiskAssignments+    , tcUserStageToComputationNameMap+    , tcComputations++    -- ** WorkerSettings+    , WorkerSettings+    , workerSettings+    , wsServicePath+    , wsBaseURL+    , wsShuffleServicePath+    , wsTempStoragePrefix+    , wsReportingEnabled+    , wsWorkerId++    -- ** WorkItemServiceStateHarnessData+    , WorkItemServiceStateHarnessData+    , workItemServiceStateHarnessData+    , wisshdAddtional++    -- ** DataDiskAssignment+    , DataDiskAssignment+    , dataDiskAssignment+    , ddaVMInstance+    , ddaDataDisks++    -- ** WorkItemServiceState+    , WorkItemServiceState+    , workItemServiceState+    , wissNextReportIndex+    , wissReportStatusInterval+    , wissHarnessData+    , wissSuggestedStopPoint+    , wissSuggestedStopPosition+    , wissLeaseExpireTime++    -- ** StreamingSetupTask+    , StreamingSetupTask+    , streamingSetupTask+    , sstStreamingComputationTopology+    , sstReceiveWorkPort+    , sstWorkerHarnessPort++    -- ** PartialGroupByKeyInstructionInputElementCodec+    , PartialGroupByKeyInstructionInputElementCodec+    , partialGroupByKeyInstructionInputElementCodec+    , pgbkiiecAddtional++    -- ** MapTask+    , MapTask+    , mapTask+    , mtInstructions+    , mtSystemName+    , mtStageName++    -- ** MountedDataDisk+    , MountedDataDisk+    , mountedDataDisk+    , mddDataDisk++    -- ** SinkCodec+    , SinkCodec+    , sinkCodec+    , scAddtional++    -- ** ParDoInstructionUserFn+    , ParDoInstructionUserFn+    , parDoInstructionUserFn+    , pdiufAddtional++    -- ** InstructionOutputCodec+    , InstructionOutputCodec+    , instructionOutputCodec+    , iocAddtional++    -- ** StreamLocation+    , StreamLocation+    , streamLocation+    , slStreamingStageLocation+    , slSideInputLocation+    , slCustomSourceLocation+    , slPubsubLocation++    -- ** WorkerPoolPoolArgs+    , WorkerPoolPoolArgs+    , workerPoolPoolArgs+    , wppaAddtional++    -- ** StreamingSideInputLocation+    , StreamingSideInputLocation+    , streamingSideInputLocation+    , ssilTag+    , ssilStateFamily++    -- ** StreamingComputationTask+    , StreamingComputationTask+    , streamingComputationTask+    , sctTaskType+    , sctDataDisks+    , sctComputationRanges++    -- ** JobMessage+    , JobMessage+    , jobMessage+    , jmTime+    , jmMessageText+    , jmMessageImportance+    , jmId++    -- ** SeqMapTaskOutputInfo+    , SeqMapTaskOutputInfo+    , seqMapTaskOutputInfo+    , smtoiSink+    , smtoiTag++    -- ** SourceGetMetadataRequest+    , SourceGetMetadataRequest+    , sourceGetMetadataRequest+    , sgmrSource++    -- ** SeqMapTaskUserFn+    , SeqMapTaskUserFn+    , seqMapTaskUserFn+    , smtufAddtional++    -- ** PartialGroupByKeyInstructionValueCombiningFn+    , PartialGroupByKeyInstructionValueCombiningFn+    , partialGroupByKeyInstructionValueCombiningFn+    , pgbkivcfAddtional++    -- ** Job+    , Job+    , job+    , jRequestedState+    , jEnvironment+    , jClientRequestId+    , jCurrentState+    , jReplacedByJobId+    , jSteps+    , jExecutionInfo+    , jName+    , jTransformNameMApping+    , jId+    , jProjectId+    , jType+    , jCurrentStateTime+    , jReplaceJobId+    , jCreateTime++    -- ** ReadInstruction+    , ReadInstruction+    , readInstruction+    , riSource++    -- ** SinkSpec+    , SinkSpec+    , sinkSpec+    , sAddtional++    -- ** WorkerPool+    , WorkerPool+    , workerPool+    , wpAutoscalingSettings+    , wpDiskSizeGb+    , wpKind+    , wpTaskrunnerSettings+    , wpNumWorkers+    , wpNetwork+    , wpZone+    , wpPackages+    , wpOnHostMaintenance+    , wpDiskSourceImage+    , wpMachineType+    , wpMetadata+    , wpDiskType+    , wpTeardownPolicy+    , wpDefaultPackageSet+    , wpPoolArgs+    , wpDataDisks++    -- ** Step+    , Step+    , step+    , sKind+    , sName+    , sProperties++    -- ** Package+    , Package+    , package+    , pLocation+    , pName++    -- ** DynamicSourceSplit+    , DynamicSourceSplit+    , dynamicSourceSplit+    , dssResidual+    , dssPrimary++    -- ** ReportWorkItemStatusResponse+    , ReportWorkItemStatusResponse+    , reportWorkItemStatusResponse+    , rwisrWorkItemServiceStates++    -- ** SourceFork+    , SourceFork+    , sourceFork+    , sfResidual+    , sfPrimarySource+    , sfPrimary+    , sfResidualSource++    -- ** StreamingComputationRanges+    , StreamingComputationRanges+    , streamingComputationRanges+    , scrRangeAssignments+    , scrComputationId++    -- ** ListJobsResponse+    , ListJobsResponse+    , listJobsResponse+    , ljrNextPageToken+    , ljrJobs++    -- ** Source+    , Source+    , source+    , souDoesNotNeedSplitting+    , souBaseSpecs+    , souCodec+    , souSpec+    , souMetadata++    -- ** ApproximateProgress+    , ApproximateProgress+    , approximateProgress+    , apRemainingTime+    , apPercentComplete+    , apPosition++    -- ** KeyRangeLocation+    , KeyRangeLocation+    , keyRangeLocation+    , krlPersistentDirectory+    , krlDataDisk+    , krlStart+    , krlDeliveryEndpoint+    , krlEnd++    -- ** MultiOutputInfo+    , MultiOutputInfo+    , multiOutputInfo+    , moiTag++    -- ** PartialGroupByKeyInstruction+    , PartialGroupByKeyInstruction+    , partialGroupByKeyInstruction+    , pgbkiValueCombiningFn+    , pgbkiInput+    , pgbkiInputElementCodec++    -- ** ParDoInstruction+    , ParDoInstruction+    , parDoInstruction+    , pdiNumOutputs+    , pdiMultiOutputInfos+    , pdiSideInputs+    , pdiInput+    , pdiUserFn++    -- ** CustomSourceLocation+    , CustomSourceLocation+    , customSourceLocation+    , cslStateful++    -- ** SourceBaseSpecsItem+    , SourceBaseSpecsItem+    , sourceBaseSpecsItem+    , sbsiAddtional++    -- ** ParallelInstruction+    , ParallelInstruction+    , parallelInstruction+    , piRead+    , piWrite+    , piParDo+    , piPartialGroupByKey+    , piOutputs+    , piName+    , piSystemName+    , piFlatten++    -- ** SideInputInfoKind+    , SideInputInfoKind+    , sideInputInfoKind+    , siikAddtional++    -- ** SourceSplitShard+    , SourceSplitShard+    , sourceSplitShard+    , sssDerivationMode+    , sssSource++    -- ** SideInputInfo+    , SideInputInfo+    , sideInputInfo+    , siiTag+    , siiKind+    , siiSources++    -- ** JobExecutionInfo+    , JobExecutionInfo+    , jobExecutionInfo+    , jeiStages++    -- ** SourceCodec+    , SourceCodec+    , sourceCodec+    , souAddtional++    -- ** StateFamilyConfig+    , StateFamilyConfig+    , stateFamilyConfig+    , sfcIsRead+    , sfcStateFamily++    -- ** KeyRangeDataDiskAssignment+    , KeyRangeDataDiskAssignment+    , keyRangeDataDiskAssignment+    , krddaDataDisk+    , krddaStart+    , krddaEnd++    -- ** SourceSplitRequest+    , SourceSplitRequest+    , sourceSplitRequest+    , ssrSource+    , ssrOptions++    -- ** ListJobMessagesResponse+    , ListJobMessagesResponse+    , listJobMessagesResponse+    , ljmrJobMessages+    , ljmrNextPageToken++    -- ** PubsubLocation+    , PubsubLocation+    , pubsubLocation+    , plTrackingSubscription+    , plDropLateData+    , plTimestampLabel+    , plIdLabel+    , plTopic+    , plSubscription++    -- ** InstructionInput+    , InstructionInput+    , instructionInput+    , iiProducerInstructionIndex+    , iiOutputNum++    -- ** SeqMapTask+    , SeqMapTask+    , seqMapTask+    , smtInputs+    , smtName+    , smtOutputInfos+    , smtSystemName+    , smtStageName+    , smtUserFn++    -- ** SourceOperationRequest+    , SourceOperationRequest+    , sourceOperationRequest+    , sSplit+    , sGetMetadata++    -- ** LeaseWorkItemResponse+    , LeaseWorkItemResponse+    , leaseWorkItemResponse+    , lwirWorkItems++    -- ** Position+    , Position+    , position+    , pByteOffSet+    , pConcatPosition+    , pRecordIndex+    , pShufflePosition+    , pKey+    , pEnd+    ) where++import           Network.Google.Dataflow.Types+import           Network.Google.Prelude+import           Network.Google.Resource.Dataflow.Projects.Jobs.Create+import           Network.Google.Resource.Dataflow.Projects.Jobs.Get+import           Network.Google.Resource.Dataflow.Projects.Jobs.GetMetrics+import           Network.Google.Resource.Dataflow.Projects.Jobs.List+import           Network.Google.Resource.Dataflow.Projects.Jobs.Messages.List+import           Network.Google.Resource.Dataflow.Projects.Jobs.Update+import           Network.Google.Resource.Dataflow.Projects.Jobs.WorkItems.Lease+import           Network.Google.Resource.Dataflow.Projects.Jobs.WorkItems.ReportStatus++{- $resources+TODO+-}++-- | Represents the entirety of the methods and resources available for the Google Dataflow API service.+type DataflowAPI =+     ProjectsJobsWorkItemsLeaseResource :<|>+       ProjectsJobsWorkItemsReportStatusResource+       :<|> ProjectsJobsMessagesListResource+       :<|> ProjectsJobsListResource+       :<|> ProjectsJobsGetResource+       :<|> ProjectsJobsCreateResource+       :<|> ProjectsJobsUpdateResource+       :<|> ProjectsJobsGetMetricsResource
+ gen/Network/Google/Dataflow/Types.hs view
@@ -0,0 +1,721 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Network.Google.Dataflow.Types+-- Copyright   : (c) 2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Network.Google.Dataflow.Types+    (+    -- * Service Configuration+      dataflowService++    -- * OAuth Scopes+    , userinfoEmailScope+    , cloudPlatformScope++    -- * JobExecutionInfoStages+    , JobExecutionInfoStages+    , jobExecutionInfoStages+    , jeisAddtional++    -- * ComputationTopology+    , ComputationTopology+    , computationTopology+    , ctStateFamilies+    , ctUserStageName+    , ctInputs+    , ctKeyRanges+    , ctOutputs+    , ctComputationId+    , ctSystemStageName++    -- * SourceSplitResponse+    , SourceSplitResponse+    , sourceSplitResponse+    , ssrBundles+    , ssrShards+    , ssrOutcome++    -- * Status+    , Status+    , status+    , sDetails+    , sCode+    , sMessage++    -- * WorkItem+    , WorkItem+    , workItem+    , wiJobId+    , wiReportStatusInterval+    , wiShellTask+    , wiStreamingSetupTask+    , wiInitialReportIndex+    , wiMapTask+    , wiPackages+    , wiStreamingComputationTask+    , wiSourceOperationTask+    , wiId+    , wiProjectId+    , wiLeaseExpireTime+    , wiConfiguration+    , wiSeqMapTask++    -- * SourceSplitOptions+    , SourceSplitOptions+    , sourceSplitOptions+    , ssoDesiredShardSizeBytes+    , ssoDesiredBundleSizeBytes++    -- * WorkerPoolMetadata+    , WorkerPoolMetadata+    , workerPoolMetadata+    , wpmAddtional++    -- * AutoscalingSettings+    , AutoscalingSettings+    , autoscalingSettings+    , asMaxNumWorkers+    , asAlgorithm++    -- * JobExecutionStageInfo+    , JobExecutionStageInfo+    , jobExecutionStageInfo+    , jesiStepName++    -- * InstructionOutput+    , InstructionOutput+    , instructionOutput+    , ioCodec+    , ioName+    , ioSystemName++    -- * ReportWorkItemStatusRequest+    , ReportWorkItemStatusRequest+    , reportWorkItemStatusRequest+    , rwisrCurrentWorkerTime+    , rwisrWorkItemStatuses+    , rwisrWorkerId++    -- * EnvironmentVersion+    , EnvironmentVersion+    , environmentVersion+    , evAddtional++    -- * Sink+    , Sink+    , sink+    , sCodec+    , sSpec++    -- * MetricStructuredName+    , MetricStructuredName+    , metricStructuredName+    , msnOrigin+    , msnContext+    , msnName++    -- * WriteInstruction+    , WriteInstruction+    , writeInstruction+    , wiSink+    , wiInput++    -- * EnvironmentUserAgent+    , EnvironmentUserAgent+    , environmentUserAgent+    , euaAddtional++    -- * Disk+    , Disk+    , disk+    , dSizeGb+    , dDiskType+    , dMountPoint++    -- * MetricUpdate+    , MetricUpdate+    , metricUpdate+    , muMeanSum+    , muInternal+    , muSet+    , muCumulative+    , muKind+    , muUpdateTime+    , muMeanCount+    , muName+    , muScalar++    -- * SourceGetMetadataResponse+    , SourceGetMetadataResponse+    , sourceGetMetadataResponse+    , sgmrMetadata++    -- * Environment+    , Environment+    , environment+    , eDataSet+    , eExperiments+    , eWorkerPools+    , eClusterManagerAPIService+    , eVersion+    , eInternalExperiments+    , eTempStoragePrefix+    , eUserAgent+    , eSdkPipelineOptions++    -- * ConcatPosition+    , ConcatPosition+    , concatPosition+    , cpIndex+    , cpPosition++    -- * MetricStructuredNameContext+    , MetricStructuredNameContext+    , metricStructuredNameContext+    , msncAddtional++    -- * StreamingStageLocation+    , StreamingStageLocation+    , streamingStageLocation+    , sslStreamId++    -- * DerivedSource+    , DerivedSource+    , derivedSource+    , dsDerivationMode+    , dsSource++    -- * JobMetrics+    , JobMetrics+    , jobMetrics+    , jmMetrics+    , jmMetricTime++    -- * WorkItemStatus+    , WorkItemStatus+    , workItemStatus+    , wisProgress+    , wisSourceOperationResponse+    , wisStopPosition+    , wisDynamicSourceSplit+    , wisCompleted+    , wisSourceFork+    , wisReportIndex+    , wisRequestedLeaseDuration+    , wisErrors+    , wisMetricUpdates+    , wisWorkItemId++    -- * FlattenInstruction+    , FlattenInstruction+    , flattenInstruction+    , fiInputs++    -- * JobTransformNameMApping+    , JobTransformNameMApping+    , jobTransformNameMApping+    , jtnmaAddtional++    -- * SourceSpec+    , SourceSpec+    , sourceSpec+    , ssAddtional++    -- * SourceMetadata+    , SourceMetadata+    , sourceMetadata+    , smEstimatedSizeBytes+    , smProducesSortedKeys+    , smInfinite++    -- * EnvironmentInternalExperiments+    , EnvironmentInternalExperiments+    , environmentInternalExperiments+    , eieAddtional++    -- * TaskRunnerSettings+    , TaskRunnerSettings+    , taskRunnerSettings+    , trsContinueOnException+    , trsHarnessCommand+    , trsWorkflowFileName+    , trsTaskGroup+    , trsAlsologtostderr+    , trsDataflowAPIVersion+    , trsLogDir+    , trsCommandlinesFileName+    , trsVMId+    , trsBaseURL+    , trsOAuthScopes+    , trsTaskUser+    , trsStreamingWorkerMainClass+    , trsBaseTaskDir+    , trsLogUploadLocation+    , trsTempStoragePrefix+    , trsLogToSerialconsole+    , trsParallelWorkerSettings+    , trsLanguageHint++    -- * EnvironmentSdkPipelineOptions+    , EnvironmentSdkPipelineOptions+    , environmentSdkPipelineOptions+    , espoAddtional++    -- * LeaseWorkItemRequest+    , LeaseWorkItemRequest+    , leaseWorkItemRequest+    , lwirWorkItemTypes+    , lwirCurrentWorkerTime+    , lwirWorkerCapabilities+    , lwirRequestedLeaseDuration+    , lwirWorkerId++    -- * SourceOperationResponse+    , SourceOperationResponse+    , sourceOperationResponse+    , sorSplit+    , sorGetMetadata++    -- * TopologyConfigUserStageToComputationNameMap+    , TopologyConfigUserStageToComputationNameMap+    , topologyConfigUserStageToComputationNameMap+    , tcustcnmAddtional++    -- * ShellTask+    , ShellTask+    , shellTask+    , stCommand+    , stExitCode++    -- * StatusDetailsItem+    , StatusDetailsItem+    , statusDetailsItem+    , sdiAddtional++    -- * StepProperties+    , StepProperties+    , stepProperties+    , spAddtional++    -- * TopologyConfig+    , TopologyConfig+    , topologyConfig+    , tcDataDiskAssignments+    , tcUserStageToComputationNameMap+    , tcComputations++    -- * WorkerSettings+    , WorkerSettings+    , workerSettings+    , wsServicePath+    , wsBaseURL+    , wsShuffleServicePath+    , wsTempStoragePrefix+    , wsReportingEnabled+    , wsWorkerId++    -- * WorkItemServiceStateHarnessData+    , WorkItemServiceStateHarnessData+    , workItemServiceStateHarnessData+    , wisshdAddtional++    -- * DataDiskAssignment+    , DataDiskAssignment+    , dataDiskAssignment+    , ddaVMInstance+    , ddaDataDisks++    -- * WorkItemServiceState+    , WorkItemServiceState+    , workItemServiceState+    , wissNextReportIndex+    , wissReportStatusInterval+    , wissHarnessData+    , wissSuggestedStopPoint+    , wissSuggestedStopPosition+    , wissLeaseExpireTime++    -- * StreamingSetupTask+    , StreamingSetupTask+    , streamingSetupTask+    , sstStreamingComputationTopology+    , sstReceiveWorkPort+    , sstWorkerHarnessPort++    -- * PartialGroupByKeyInstructionInputElementCodec+    , PartialGroupByKeyInstructionInputElementCodec+    , partialGroupByKeyInstructionInputElementCodec+    , pgbkiiecAddtional++    -- * MapTask+    , MapTask+    , mapTask+    , mtInstructions+    , mtSystemName+    , mtStageName++    -- * MountedDataDisk+    , MountedDataDisk+    , mountedDataDisk+    , mddDataDisk++    -- * SinkCodec+    , SinkCodec+    , sinkCodec+    , scAddtional++    -- * ParDoInstructionUserFn+    , ParDoInstructionUserFn+    , parDoInstructionUserFn+    , pdiufAddtional++    -- * InstructionOutputCodec+    , InstructionOutputCodec+    , instructionOutputCodec+    , iocAddtional++    -- * StreamLocation+    , StreamLocation+    , streamLocation+    , slStreamingStageLocation+    , slSideInputLocation+    , slCustomSourceLocation+    , slPubsubLocation++    -- * WorkerPoolPoolArgs+    , WorkerPoolPoolArgs+    , workerPoolPoolArgs+    , wppaAddtional++    -- * StreamingSideInputLocation+    , StreamingSideInputLocation+    , streamingSideInputLocation+    , ssilTag+    , ssilStateFamily++    -- * StreamingComputationTask+    , StreamingComputationTask+    , streamingComputationTask+    , sctTaskType+    , sctDataDisks+    , sctComputationRanges++    -- * JobMessage+    , JobMessage+    , jobMessage+    , jmTime+    , jmMessageText+    , jmMessageImportance+    , jmId++    -- * SeqMapTaskOutputInfo+    , SeqMapTaskOutputInfo+    , seqMapTaskOutputInfo+    , smtoiSink+    , smtoiTag++    -- * SourceGetMetadataRequest+    , SourceGetMetadataRequest+    , sourceGetMetadataRequest+    , sgmrSource++    -- * SeqMapTaskUserFn+    , SeqMapTaskUserFn+    , seqMapTaskUserFn+    , smtufAddtional++    -- * PartialGroupByKeyInstructionValueCombiningFn+    , PartialGroupByKeyInstructionValueCombiningFn+    , partialGroupByKeyInstructionValueCombiningFn+    , pgbkivcfAddtional++    -- * Job+    , Job+    , job+    , jRequestedState+    , jEnvironment+    , jClientRequestId+    , jCurrentState+    , jReplacedByJobId+    , jSteps+    , jExecutionInfo+    , jName+    , jTransformNameMApping+    , jId+    , jProjectId+    , jType+    , jCurrentStateTime+    , jReplaceJobId+    , jCreateTime++    -- * ReadInstruction+    , ReadInstruction+    , readInstruction+    , riSource++    -- * SinkSpec+    , SinkSpec+    , sinkSpec+    , sAddtional++    -- * WorkerPool+    , WorkerPool+    , workerPool+    , wpAutoscalingSettings+    , wpDiskSizeGb+    , wpKind+    , wpTaskrunnerSettings+    , wpNumWorkers+    , wpNetwork+    , wpZone+    , wpPackages+    , wpOnHostMaintenance+    , wpDiskSourceImage+    , wpMachineType+    , wpMetadata+    , wpDiskType+    , wpTeardownPolicy+    , wpDefaultPackageSet+    , wpPoolArgs+    , wpDataDisks++    -- * Step+    , Step+    , step+    , sKind+    , sName+    , sProperties++    -- * Package+    , Package+    , package+    , pLocation+    , pName++    -- * DynamicSourceSplit+    , DynamicSourceSplit+    , dynamicSourceSplit+    , dssResidual+    , dssPrimary++    -- * ReportWorkItemStatusResponse+    , ReportWorkItemStatusResponse+    , reportWorkItemStatusResponse+    , rwisrWorkItemServiceStates++    -- * SourceFork+    , SourceFork+    , sourceFork+    , sfResidual+    , sfPrimarySource+    , sfPrimary+    , sfResidualSource++    -- * StreamingComputationRanges+    , StreamingComputationRanges+    , streamingComputationRanges+    , scrRangeAssignments+    , scrComputationId++    -- * ListJobsResponse+    , ListJobsResponse+    , listJobsResponse+    , ljrNextPageToken+    , ljrJobs++    -- * Source+    , Source+    , source+    , souDoesNotNeedSplitting+    , souBaseSpecs+    , souCodec+    , souSpec+    , souMetadata++    -- * ApproximateProgress+    , ApproximateProgress+    , approximateProgress+    , apRemainingTime+    , apPercentComplete+    , apPosition++    -- * KeyRangeLocation+    , KeyRangeLocation+    , keyRangeLocation+    , krlPersistentDirectory+    , krlDataDisk+    , krlStart+    , krlDeliveryEndpoint+    , krlEnd++    -- * MultiOutputInfo+    , MultiOutputInfo+    , multiOutputInfo+    , moiTag++    -- * PartialGroupByKeyInstruction+    , PartialGroupByKeyInstruction+    , partialGroupByKeyInstruction+    , pgbkiValueCombiningFn+    , pgbkiInput+    , pgbkiInputElementCodec++    -- * ParDoInstruction+    , ParDoInstruction+    , parDoInstruction+    , pdiNumOutputs+    , pdiMultiOutputInfos+    , pdiSideInputs+    , pdiInput+    , pdiUserFn++    -- * CustomSourceLocation+    , CustomSourceLocation+    , customSourceLocation+    , cslStateful++    -- * SourceBaseSpecsItem+    , SourceBaseSpecsItem+    , sourceBaseSpecsItem+    , sbsiAddtional++    -- * ParallelInstruction+    , ParallelInstruction+    , parallelInstruction+    , piRead+    , piWrite+    , piParDo+    , piPartialGroupByKey+    , piOutputs+    , piName+    , piSystemName+    , piFlatten++    -- * SideInputInfoKind+    , SideInputInfoKind+    , sideInputInfoKind+    , siikAddtional++    -- * SourceSplitShard+    , SourceSplitShard+    , sourceSplitShard+    , sssDerivationMode+    , sssSource++    -- * SideInputInfo+    , SideInputInfo+    , sideInputInfo+    , siiTag+    , siiKind+    , siiSources++    -- * JobExecutionInfo+    , JobExecutionInfo+    , jobExecutionInfo+    , jeiStages++    -- * SourceCodec+    , SourceCodec+    , sourceCodec+    , souAddtional++    -- * StateFamilyConfig+    , StateFamilyConfig+    , stateFamilyConfig+    , sfcIsRead+    , sfcStateFamily++    -- * KeyRangeDataDiskAssignment+    , KeyRangeDataDiskAssignment+    , keyRangeDataDiskAssignment+    , krddaDataDisk+    , krddaStart+    , krddaEnd++    -- * SourceSplitRequest+    , SourceSplitRequest+    , sourceSplitRequest+    , ssrSource+    , ssrOptions++    -- * ListJobMessagesResponse+    , ListJobMessagesResponse+    , listJobMessagesResponse+    , ljmrJobMessages+    , ljmrNextPageToken++    -- * PubsubLocation+    , PubsubLocation+    , pubsubLocation+    , plTrackingSubscription+    , plDropLateData+    , plTimestampLabel+    , plIdLabel+    , plTopic+    , plSubscription++    -- * InstructionInput+    , InstructionInput+    , instructionInput+    , iiProducerInstructionIndex+    , iiOutputNum++    -- * SeqMapTask+    , SeqMapTask+    , seqMapTask+    , smtInputs+    , smtName+    , smtOutputInfos+    , smtSystemName+    , smtStageName+    , smtUserFn++    -- * SourceOperationRequest+    , SourceOperationRequest+    , sourceOperationRequest+    , sSplit+    , sGetMetadata++    -- * LeaseWorkItemResponse+    , LeaseWorkItemResponse+    , leaseWorkItemResponse+    , lwirWorkItems++    -- * Position+    , Position+    , position+    , pByteOffSet+    , pConcatPosition+    , pRecordIndex+    , pShufflePosition+    , pKey+    , pEnd+    ) where++import           Network.Google.Dataflow.Types.Product+import           Network.Google.Dataflow.Types.Sum+import           Network.Google.Prelude++-- | Default request referring to version 'v1b3' of the Google Dataflow API. This contains the host and root path used as a starting point for constructing service requests.+dataflowService :: Service+dataflowService+  = defaultService (ServiceId "dataflow:v1b3")+      "dataflow.googleapis.com"++-- | View your email address+userinfoEmailScope :: OAuthScope+userinfoEmailScope = "https://www.googleapis.com/auth/userinfo.email";++-- | View and manage your data across Google Cloud Platform services+cloudPlatformScope :: OAuthScope+cloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform";
+ gen/Network/Google/Dataflow/Types/Product.hs view
@@ -0,0 +1,6244 @@+{-# 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.Dataflow.Types.Product+-- Copyright   : (c) 2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Network.Google.Dataflow.Types.Product where++import           Network.Google.Dataflow.Types.Sum+import           Network.Google.Prelude++-- | A mapping from each stage to the information about that stage.+--+-- /See:/ 'jobExecutionInfoStages' smart constructor.+newtype JobExecutionInfoStages = JobExecutionInfoStages+    { _jeisAddtional :: HashMap Text JobExecutionStageInfo+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'JobExecutionInfoStages' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'jeisAddtional'+jobExecutionInfoStages+    :: HashMap Text JobExecutionStageInfo -- ^ 'jeisAddtional'+    -> JobExecutionInfoStages+jobExecutionInfoStages pJeisAddtional_ =+    JobExecutionInfoStages+    { _jeisAddtional = _Coerce # pJeisAddtional_+    }++jeisAddtional :: Lens' JobExecutionInfoStages (HashMap Text JobExecutionStageInfo)+jeisAddtional+  = lens _jeisAddtional+      (\ s a -> s{_jeisAddtional = a})+      . _Coerce++instance FromJSON JobExecutionInfoStages where+        parseJSON+          = withObject "JobExecutionInfoStages"+              (\ o ->+                 JobExecutionInfoStages <$> (parseJSONObject o))++instance ToJSON JobExecutionInfoStages where+        toJSON = toJSON . _jeisAddtional++-- | All configuration data for a particular Computation.+--+-- /See:/ 'computationTopology' smart constructor.+data ComputationTopology = ComputationTopology+    { _ctStateFamilies   :: !(Maybe [StateFamilyConfig])+    , _ctUserStageName   :: !(Maybe Text)+    , _ctInputs          :: !(Maybe [StreamLocation])+    , _ctKeyRanges       :: !(Maybe [KeyRangeLocation])+    , _ctOutputs         :: !(Maybe [StreamLocation])+    , _ctComputationId   :: !(Maybe Text)+    , _ctSystemStageName :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ComputationTopology' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ctStateFamilies'+--+-- * 'ctUserStageName'+--+-- * 'ctInputs'+--+-- * 'ctKeyRanges'+--+-- * 'ctOutputs'+--+-- * 'ctComputationId'+--+-- * 'ctSystemStageName'+computationTopology+    :: ComputationTopology+computationTopology =+    ComputationTopology+    { _ctStateFamilies = Nothing+    , _ctUserStageName = Nothing+    , _ctInputs = Nothing+    , _ctKeyRanges = Nothing+    , _ctOutputs = Nothing+    , _ctComputationId = Nothing+    , _ctSystemStageName = Nothing+    }++-- | The state family values.+ctStateFamilies :: Lens' ComputationTopology [StateFamilyConfig]+ctStateFamilies+  = lens _ctStateFamilies+      (\ s a -> s{_ctStateFamilies = a})+      . _Default+      . _Coerce++-- | The user stage name.+ctUserStageName :: Lens' ComputationTopology (Maybe Text)+ctUserStageName+  = lens _ctUserStageName+      (\ s a -> s{_ctUserStageName = a})++-- | The inputs to the computation.+ctInputs :: Lens' ComputationTopology [StreamLocation]+ctInputs+  = lens _ctInputs (\ s a -> s{_ctInputs = a}) .+      _Default+      . _Coerce++-- | The key ranges processed by the computation.+ctKeyRanges :: Lens' ComputationTopology [KeyRangeLocation]+ctKeyRanges+  = lens _ctKeyRanges (\ s a -> s{_ctKeyRanges = a}) .+      _Default+      . _Coerce++-- | The outputs from the computation.+ctOutputs :: Lens' ComputationTopology [StreamLocation]+ctOutputs+  = lens _ctOutputs (\ s a -> s{_ctOutputs = a}) .+      _Default+      . _Coerce++-- | The ID of the computation.+ctComputationId :: Lens' ComputationTopology (Maybe Text)+ctComputationId+  = lens _ctComputationId+      (\ s a -> s{_ctComputationId = a})++-- | The system stage name.+ctSystemStageName :: Lens' ComputationTopology (Maybe Text)+ctSystemStageName+  = lens _ctSystemStageName+      (\ s a -> s{_ctSystemStageName = a})++instance FromJSON ComputationTopology where+        parseJSON+          = withObject "ComputationTopology"+              (\ o ->+                 ComputationTopology <$>+                   (o .:? "stateFamilies" .!= mempty) <*>+                     (o .:? "userStageName")+                     <*> (o .:? "inputs" .!= mempty)+                     <*> (o .:? "keyRanges" .!= mempty)+                     <*> (o .:? "outputs" .!= mempty)+                     <*> (o .:? "computationId")+                     <*> (o .:? "systemStageName"))++instance ToJSON ComputationTopology where+        toJSON ComputationTopology{..}+          = object+              (catMaybes+                 [("stateFamilies" .=) <$> _ctStateFamilies,+                  ("userStageName" .=) <$> _ctUserStageName,+                  ("inputs" .=) <$> _ctInputs,+                  ("keyRanges" .=) <$> _ctKeyRanges,+                  ("outputs" .=) <$> _ctOutputs,+                  ("computationId" .=) <$> _ctComputationId,+                  ("systemStageName" .=) <$> _ctSystemStageName])++-- | The response to a SourceSplitRequest.+--+-- /See:/ 'sourceSplitResponse' smart constructor.+data SourceSplitResponse = SourceSplitResponse+    { _ssrBundles :: !(Maybe [DerivedSource])+    , _ssrShards  :: !(Maybe [SourceSplitShard])+    , _ssrOutcome :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SourceSplitResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ssrBundles'+--+-- * 'ssrShards'+--+-- * 'ssrOutcome'+sourceSplitResponse+    :: SourceSplitResponse+sourceSplitResponse =+    SourceSplitResponse+    { _ssrBundles = Nothing+    , _ssrShards = Nothing+    , _ssrOutcome = Nothing+    }++-- | If outcome is SPLITTING_HAPPENED, then this is a list of bundles into+-- which the source was split. Otherwise this field is ignored. This list+-- can be empty, which means the source represents an empty input.+ssrBundles :: Lens' SourceSplitResponse [DerivedSource]+ssrBundles+  = lens _ssrBundles (\ s a -> s{_ssrBundles = a}) .+      _Default+      . _Coerce++-- | DEPRECATED in favor of bundles.+ssrShards :: Lens' SourceSplitResponse [SourceSplitShard]+ssrShards+  = lens _ssrShards (\ s a -> s{_ssrShards = a}) .+      _Default+      . _Coerce++-- | Indicates whether splitting happened and produced a list of bundles. If+-- this is USE_CURRENT_SOURCE_AS_IS, the current source should be processed+-- \"as is\" without splitting. \"bundles\" is ignored in this case. If+-- this is SPLITTING_HAPPENED, then \"bundles\" contains a list of bundles+-- into which the source was split.+ssrOutcome :: Lens' SourceSplitResponse (Maybe Text)+ssrOutcome+  = lens _ssrOutcome (\ s a -> s{_ssrOutcome = a})++instance FromJSON SourceSplitResponse where+        parseJSON+          = withObject "SourceSplitResponse"+              (\ o ->+                 SourceSplitResponse <$>+                   (o .:? "bundles" .!= mempty) <*>+                     (o .:? "shards" .!= mempty)+                     <*> (o .:? "outcome"))++instance ToJSON SourceSplitResponse where+        toJSON SourceSplitResponse{..}+          = object+              (catMaybes+                 [("bundles" .=) <$> _ssrBundles,+                  ("shards" .=) <$> _ssrShards,+                  ("outcome" .=) <$> _ssrOutcome])++-- | 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 [gRPC](https:\/\/github.com\/grpc). The error model is+-- designed to be: - Simple to use and understand for most users - Flexible+-- enough to meet unexpected needs # Overview The \`Status\` message+-- contains three pieces of data: error code, error message, and error+-- details. The error code should be an enum value of [google.rpc.Code][],+-- but it may accept additional error codes if needed. The error message+-- should be a developer-facing English message that helps developers+-- *understand* and *resolve* the error. If a localized user-facing error+-- message is needed, put the localized message in the error details or+-- localize it in the client. The optional error details may contain+-- arbitrary information about the error. There is a predefined set of+-- error detail types in the package \`google.rpc\` which can be used for+-- common error conditions. # Language mapping The \`Status\` message is+-- the logical representation of the error model, but it is not necessarily+-- the actual wire format. When the \`Status\` message is exposed in+-- different client libraries and different wire protocols, it can be+-- mapped differently. For example, it will likely be mapped to some+-- exceptions in Java, but more likely mapped to some error codes in C. #+-- Other uses The error model and the \`Status\` message can be used in a+-- variety of environments, either with or without APIs, to provide a+-- consistent developer experience across different environments. Example+-- uses of this error model include: - Partial errors. If a service needs+-- to return partial errors to the client, it may embed the \`Status\` in+-- the normal response to indicate the partial errors. - Workflow errors. A+-- typical workflow has multiple steps. Each step may have a \`Status\`+-- message for error reporting purpose. - Batch operations. If a client+-- uses batch request and batch response, the \`Status\` message should be+-- used directly inside batch response, one for each error sub-response. -+-- Asynchronous operations. If an API call embeds asynchronous operation+-- results in its response, the status of those operations should be+-- represented directly using the \`Status\` message. - Logging. If some+-- API errors are stored in logs, the message \`Status\` could be used+-- directly after any stripping needed for security\/privacy reasons.+--+-- /See:/ 'status' smart constructor.+data Status = Status+    { _sDetails :: !(Maybe [StatusDetailsItem])+    , _sCode    :: !(Maybe (Textual Int32))+    , _sMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Status' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sDetails'+--+-- * 'sCode'+--+-- * 'sMessage'+status+    :: Status+status =+    Status+    { _sDetails = Nothing+    , _sCode = Nothing+    , _sMessage = Nothing+    }++-- | A list of messages that carry the error details. There will be a common+-- set of message types for APIs to use.+sDetails :: Lens' Status [StatusDetailsItem]+sDetails+  = lens _sDetails (\ s a -> s{_sDetails = a}) .+      _Default+      . _Coerce++-- | The status code, which should be an enum value of [google.rpc.Code][].+sCode :: Lens' Status (Maybe Int32)+sCode+  = lens _sCode (\ s a -> s{_sCode = a}) .+      mapping _Coerce++-- | 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][google.rpc.Status.details] field, or+-- localized by the client.+sMessage :: Lens' Status (Maybe Text)+sMessage = lens _sMessage (\ s a -> s{_sMessage = a})++instance FromJSON Status where+        parseJSON+          = withObject "Status"+              (\ o ->+                 Status <$>+                   (o .:? "details" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON Status where+        toJSON Status{..}+          = object+              (catMaybes+                 [("details" .=) <$> _sDetails,+                  ("code" .=) <$> _sCode,+                  ("message" .=) <$> _sMessage])++-- | WorkItem represents basic information about a WorkItem to be executed in+-- the cloud.+--+-- /See:/ 'workItem' smart constructor.+data WorkItem = WorkItem+    { _wiJobId                    :: !(Maybe Text)+    , _wiReportStatusInterval     :: !(Maybe Text)+    , _wiShellTask                :: !(Maybe ShellTask)+    , _wiStreamingSetupTask       :: !(Maybe StreamingSetupTask)+    , _wiInitialReportIndex       :: !(Maybe (Textual Int64))+    , _wiMapTask                  :: !(Maybe MapTask)+    , _wiPackages                 :: !(Maybe [Package])+    , _wiStreamingComputationTask :: !(Maybe StreamingComputationTask)+    , _wiSourceOperationTask      :: !(Maybe SourceOperationRequest)+    , _wiId                       :: !(Maybe (Textual Int64))+    , _wiProjectId                :: !(Maybe Text)+    , _wiLeaseExpireTime          :: !(Maybe Text)+    , _wiConfiguration            :: !(Maybe Text)+    , _wiSeqMapTask               :: !(Maybe SeqMapTask)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'WorkItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'wiJobId'+--+-- * 'wiReportStatusInterval'+--+-- * 'wiShellTask'+--+-- * 'wiStreamingSetupTask'+--+-- * 'wiInitialReportIndex'+--+-- * 'wiMapTask'+--+-- * 'wiPackages'+--+-- * 'wiStreamingComputationTask'+--+-- * 'wiSourceOperationTask'+--+-- * 'wiId'+--+-- * 'wiProjectId'+--+-- * 'wiLeaseExpireTime'+--+-- * 'wiConfiguration'+--+-- * 'wiSeqMapTask'+workItem+    :: WorkItem+workItem =+    WorkItem+    { _wiJobId = Nothing+    , _wiReportStatusInterval = Nothing+    , _wiShellTask = Nothing+    , _wiStreamingSetupTask = Nothing+    , _wiInitialReportIndex = Nothing+    , _wiMapTask = Nothing+    , _wiPackages = Nothing+    , _wiStreamingComputationTask = Nothing+    , _wiSourceOperationTask = Nothing+    , _wiId = Nothing+    , _wiProjectId = Nothing+    , _wiLeaseExpireTime = Nothing+    , _wiConfiguration = Nothing+    , _wiSeqMapTask = Nothing+    }++-- | Identifies the workflow job this WorkItem belongs to.+wiJobId :: Lens' WorkItem (Maybe Text)+wiJobId = lens _wiJobId (\ s a -> s{_wiJobId = a})++-- | Recommended reporting interval.+wiReportStatusInterval :: Lens' WorkItem (Maybe Text)+wiReportStatusInterval+  = lens _wiReportStatusInterval+      (\ s a -> s{_wiReportStatusInterval = a})++-- | Additional information for ShellTask WorkItems.+wiShellTask :: Lens' WorkItem (Maybe ShellTask)+wiShellTask+  = lens _wiShellTask (\ s a -> s{_wiShellTask = a})++-- | Additional information for StreamingSetupTask WorkItems.+wiStreamingSetupTask :: Lens' WorkItem (Maybe StreamingSetupTask)+wiStreamingSetupTask+  = lens _wiStreamingSetupTask+      (\ s a -> s{_wiStreamingSetupTask = a})++-- | The initial index to use when reporting the status of the WorkItem.+wiInitialReportIndex :: Lens' WorkItem (Maybe Int64)+wiInitialReportIndex+  = lens _wiInitialReportIndex+      (\ s a -> s{_wiInitialReportIndex = a})+      . mapping _Coerce++-- | Additional information for MapTask WorkItems.+wiMapTask :: Lens' WorkItem (Maybe MapTask)+wiMapTask+  = lens _wiMapTask (\ s a -> s{_wiMapTask = a})++-- | Any required packages that need to be fetched in order to execute this+-- WorkItem.+wiPackages :: Lens' WorkItem [Package]+wiPackages+  = lens _wiPackages (\ s a -> s{_wiPackages = a}) .+      _Default+      . _Coerce++-- | Additional information for StreamingComputationTask WorkItems.+wiStreamingComputationTask :: Lens' WorkItem (Maybe StreamingComputationTask)+wiStreamingComputationTask+  = lens _wiStreamingComputationTask+      (\ s a -> s{_wiStreamingComputationTask = a})++-- | Additional information for source operation WorkItems.+wiSourceOperationTask :: Lens' WorkItem (Maybe SourceOperationRequest)+wiSourceOperationTask+  = lens _wiSourceOperationTask+      (\ s a -> s{_wiSourceOperationTask = a})++-- | Identifies this WorkItem.+wiId :: Lens' WorkItem (Maybe Int64)+wiId+  = lens _wiId (\ s a -> s{_wiId = a}) .+      mapping _Coerce++-- | Identifies the cloud project this WorkItem belongs to.+wiProjectId :: Lens' WorkItem (Maybe Text)+wiProjectId+  = lens _wiProjectId (\ s a -> s{_wiProjectId = a})++-- | Time when the lease on this [Work][] will expire.+wiLeaseExpireTime :: Lens' WorkItem (Maybe Text)+wiLeaseExpireTime+  = lens _wiLeaseExpireTime+      (\ s a -> s{_wiLeaseExpireTime = a})++-- | Work item-specific configuration as an opaque blob.+wiConfiguration :: Lens' WorkItem (Maybe Text)+wiConfiguration+  = lens _wiConfiguration+      (\ s a -> s{_wiConfiguration = a})++-- | Additional information for SeqMapTask WorkItems.+wiSeqMapTask :: Lens' WorkItem (Maybe SeqMapTask)+wiSeqMapTask+  = lens _wiSeqMapTask (\ s a -> s{_wiSeqMapTask = a})++instance FromJSON WorkItem where+        parseJSON+          = withObject "WorkItem"+              (\ o ->+                 WorkItem <$>+                   (o .:? "jobId") <*> (o .:? "reportStatusInterval")+                     <*> (o .:? "shellTask")+                     <*> (o .:? "streamingSetupTask")+                     <*> (o .:? "initialReportIndex")+                     <*> (o .:? "mapTask")+                     <*> (o .:? "packages" .!= mempty)+                     <*> (o .:? "streamingComputationTask")+                     <*> (o .:? "sourceOperationTask")+                     <*> (o .:? "id")+                     <*> (o .:? "projectId")+                     <*> (o .:? "leaseExpireTime")+                     <*> (o .:? "configuration")+                     <*> (o .:? "seqMapTask"))++instance ToJSON WorkItem where+        toJSON WorkItem{..}+          = object+              (catMaybes+                 [("jobId" .=) <$> _wiJobId,+                  ("reportStatusInterval" .=) <$>+                    _wiReportStatusInterval,+                  ("shellTask" .=) <$> _wiShellTask,+                  ("streamingSetupTask" .=) <$> _wiStreamingSetupTask,+                  ("initialReportIndex" .=) <$> _wiInitialReportIndex,+                  ("mapTask" .=) <$> _wiMapTask,+                  ("packages" .=) <$> _wiPackages,+                  ("streamingComputationTask" .=) <$>+                    _wiStreamingComputationTask,+                  ("sourceOperationTask" .=) <$>+                    _wiSourceOperationTask,+                  ("id" .=) <$> _wiId,+                  ("projectId" .=) <$> _wiProjectId,+                  ("leaseExpireTime" .=) <$> _wiLeaseExpireTime,+                  ("configuration" .=) <$> _wiConfiguration,+                  ("seqMapTask" .=) <$> _wiSeqMapTask])++-- | Hints for splitting a Source into bundles (parts for parallel+-- processing) using SourceSplitRequest.+--+-- /See:/ 'sourceSplitOptions' smart constructor.+data SourceSplitOptions = SourceSplitOptions+    { _ssoDesiredShardSizeBytes  :: !(Maybe (Textual Int64))+    , _ssoDesiredBundleSizeBytes :: !(Maybe (Textual Int64))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SourceSplitOptions' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ssoDesiredShardSizeBytes'+--+-- * 'ssoDesiredBundleSizeBytes'+sourceSplitOptions+    :: SourceSplitOptions+sourceSplitOptions =+    SourceSplitOptions+    { _ssoDesiredShardSizeBytes = Nothing+    , _ssoDesiredBundleSizeBytes = Nothing+    }++-- | DEPRECATED in favor of desired_bundle_size_bytes.+ssoDesiredShardSizeBytes :: Lens' SourceSplitOptions (Maybe Int64)+ssoDesiredShardSizeBytes+  = lens _ssoDesiredShardSizeBytes+      (\ s a -> s{_ssoDesiredShardSizeBytes = a})+      . mapping _Coerce++-- | The source should be split into a set of bundles where the estimated+-- size of each is approximately this many bytes.+ssoDesiredBundleSizeBytes :: Lens' SourceSplitOptions (Maybe Int64)+ssoDesiredBundleSizeBytes+  = lens _ssoDesiredBundleSizeBytes+      (\ s a -> s{_ssoDesiredBundleSizeBytes = a})+      . mapping _Coerce++instance FromJSON SourceSplitOptions where+        parseJSON+          = withObject "SourceSplitOptions"+              (\ o ->+                 SourceSplitOptions <$>+                   (o .:? "desiredShardSizeBytes") <*>+                     (o .:? "desiredBundleSizeBytes"))++instance ToJSON SourceSplitOptions where+        toJSON SourceSplitOptions{..}+          = object+              (catMaybes+                 [("desiredShardSizeBytes" .=) <$>+                    _ssoDesiredShardSizeBytes,+                  ("desiredBundleSizeBytes" .=) <$>+                    _ssoDesiredBundleSizeBytes])++-- | Metadata to set on the Google Compute Engine VMs.+--+-- /See:/ 'workerPoolMetadata' smart constructor.+newtype WorkerPoolMetadata = WorkerPoolMetadata+    { _wpmAddtional :: HashMap Text Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'WorkerPoolMetadata' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'wpmAddtional'+workerPoolMetadata+    :: HashMap Text Text -- ^ 'wpmAddtional'+    -> WorkerPoolMetadata+workerPoolMetadata pWpmAddtional_ =+    WorkerPoolMetadata+    { _wpmAddtional = _Coerce # pWpmAddtional_+    }++wpmAddtional :: Lens' WorkerPoolMetadata (HashMap Text Text)+wpmAddtional+  = lens _wpmAddtional (\ s a -> s{_wpmAddtional = a})+      . _Coerce++instance FromJSON WorkerPoolMetadata where+        parseJSON+          = withObject "WorkerPoolMetadata"+              (\ o -> WorkerPoolMetadata <$> (parseJSONObject o))++instance ToJSON WorkerPoolMetadata where+        toJSON = toJSON . _wpmAddtional++-- | Settings for WorkerPool autoscaling.+--+-- /See:/ 'autoscalingSettings' smart constructor.+data AutoscalingSettings = AutoscalingSettings+    { _asMaxNumWorkers :: !(Maybe (Textual Int32))+    , _asAlgorithm     :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AutoscalingSettings' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'asMaxNumWorkers'+--+-- * 'asAlgorithm'+autoscalingSettings+    :: AutoscalingSettings+autoscalingSettings =+    AutoscalingSettings+    { _asMaxNumWorkers = Nothing+    , _asAlgorithm = Nothing+    }++-- | The maximum number of workers to cap scaling at.+asMaxNumWorkers :: Lens' AutoscalingSettings (Maybe Int32)+asMaxNumWorkers+  = lens _asMaxNumWorkers+      (\ s a -> s{_asMaxNumWorkers = a})+      . mapping _Coerce++-- | The algorithm to use for autoscaling.+asAlgorithm :: Lens' AutoscalingSettings (Maybe Text)+asAlgorithm+  = lens _asAlgorithm (\ s a -> s{_asAlgorithm = a})++instance FromJSON AutoscalingSettings where+        parseJSON+          = withObject "AutoscalingSettings"+              (\ o ->+                 AutoscalingSettings <$>+                   (o .:? "maxNumWorkers") <*> (o .:? "algorithm"))++instance ToJSON AutoscalingSettings where+        toJSON AutoscalingSettings{..}+          = object+              (catMaybes+                 [("maxNumWorkers" .=) <$> _asMaxNumWorkers,+                  ("algorithm" .=) <$> _asAlgorithm])++-- | Contains information about how a particular+-- [google.dataflow.v1beta3.Step][google.dataflow.v1beta3.Step] will be+-- executed.+--+-- /See:/ 'jobExecutionStageInfo' smart constructor.+newtype JobExecutionStageInfo = JobExecutionStageInfo+    { _jesiStepName :: Maybe [Text]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'JobExecutionStageInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'jesiStepName'+jobExecutionStageInfo+    :: JobExecutionStageInfo+jobExecutionStageInfo =+    JobExecutionStageInfo+    { _jesiStepName = Nothing+    }++-- | The steps associated with the execution stage. Note that stages may have+-- several steps, and that a given step might be run by more than one+-- stage.+jesiStepName :: Lens' JobExecutionStageInfo [Text]+jesiStepName+  = lens _jesiStepName (\ s a -> s{_jesiStepName = a})+      . _Default+      . _Coerce++instance FromJSON JobExecutionStageInfo where+        parseJSON+          = withObject "JobExecutionStageInfo"+              (\ o ->+                 JobExecutionStageInfo <$>+                   (o .:? "stepName" .!= mempty))++instance ToJSON JobExecutionStageInfo where+        toJSON JobExecutionStageInfo{..}+          = object+              (catMaybes [("stepName" .=) <$> _jesiStepName])++-- | An output of an instruction.+--+-- /See:/ 'instructionOutput' smart constructor.+data InstructionOutput = InstructionOutput+    { _ioCodec      :: !(Maybe InstructionOutputCodec)+    , _ioName       :: !(Maybe Text)+    , _ioSystemName :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstructionOutput' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ioCodec'+--+-- * 'ioName'+--+-- * 'ioSystemName'+instructionOutput+    :: InstructionOutput+instructionOutput =+    InstructionOutput+    { _ioCodec = Nothing+    , _ioName = Nothing+    , _ioSystemName = Nothing+    }++-- | The codec to use to encode data being written via this output.+ioCodec :: Lens' InstructionOutput (Maybe InstructionOutputCodec)+ioCodec = lens _ioCodec (\ s a -> s{_ioCodec = a})++-- | The user-provided name of this output.+ioName :: Lens' InstructionOutput (Maybe Text)+ioName = lens _ioName (\ s a -> s{_ioName = a})++-- | System-defined name of this output. Unique across the workflow.+ioSystemName :: Lens' InstructionOutput (Maybe Text)+ioSystemName+  = lens _ioSystemName (\ s a -> s{_ioSystemName = a})++instance FromJSON InstructionOutput where+        parseJSON+          = withObject "InstructionOutput"+              (\ o ->+                 InstructionOutput <$>+                   (o .:? "codec") <*> (o .:? "name") <*>+                     (o .:? "systemName"))++instance ToJSON InstructionOutput where+        toJSON InstructionOutput{..}+          = object+              (catMaybes+                 [("codec" .=) <$> _ioCodec, ("name" .=) <$> _ioName,+                  ("systemName" .=) <$> _ioSystemName])++-- | Request to report the status of WorkItems.+--+-- /See:/ 'reportWorkItemStatusRequest' smart constructor.+data ReportWorkItemStatusRequest = ReportWorkItemStatusRequest+    { _rwisrCurrentWorkerTime :: !(Maybe Text)+    , _rwisrWorkItemStatuses  :: !(Maybe [WorkItemStatus])+    , _rwisrWorkerId          :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ReportWorkItemStatusRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rwisrCurrentWorkerTime'+--+-- * 'rwisrWorkItemStatuses'+--+-- * 'rwisrWorkerId'+reportWorkItemStatusRequest+    :: ReportWorkItemStatusRequest+reportWorkItemStatusRequest =+    ReportWorkItemStatusRequest+    { _rwisrCurrentWorkerTime = Nothing+    , _rwisrWorkItemStatuses = Nothing+    , _rwisrWorkerId = Nothing+    }++-- | The current timestamp at the worker.+rwisrCurrentWorkerTime :: Lens' ReportWorkItemStatusRequest (Maybe Text)+rwisrCurrentWorkerTime+  = lens _rwisrCurrentWorkerTime+      (\ s a -> s{_rwisrCurrentWorkerTime = a})++-- | The order is unimportant, except that the order of the+-- WorkItemServiceState messages in the ReportWorkItemStatusResponse+-- corresponds to the order of WorkItemStatus messages here.+rwisrWorkItemStatuses :: Lens' ReportWorkItemStatusRequest [WorkItemStatus]+rwisrWorkItemStatuses+  = lens _rwisrWorkItemStatuses+      (\ s a -> s{_rwisrWorkItemStatuses = a})+      . _Default+      . _Coerce++-- | The ID of the worker reporting the WorkItem status. If this does not+-- match the ID of the worker which the Dataflow service believes currently+-- has the lease on the WorkItem, the report will be dropped (with an error+-- response).+rwisrWorkerId :: Lens' ReportWorkItemStatusRequest (Maybe Text)+rwisrWorkerId+  = lens _rwisrWorkerId+      (\ s a -> s{_rwisrWorkerId = a})++instance FromJSON ReportWorkItemStatusRequest where+        parseJSON+          = withObject "ReportWorkItemStatusRequest"+              (\ o ->+                 ReportWorkItemStatusRequest <$>+                   (o .:? "currentWorkerTime") <*>+                     (o .:? "workItemStatuses" .!= mempty)+                     <*> (o .:? "workerId"))++instance ToJSON ReportWorkItemStatusRequest where+        toJSON ReportWorkItemStatusRequest{..}+          = object+              (catMaybes+                 [("currentWorkerTime" .=) <$>+                    _rwisrCurrentWorkerTime,+                  ("workItemStatuses" .=) <$> _rwisrWorkItemStatuses,+                  ("workerId" .=) <$> _rwisrWorkerId])++-- | A structure describing which components and their versions of the+-- service are required in order to run the job.+--+-- /See:/ 'environmentVersion' smart constructor.+newtype EnvironmentVersion = EnvironmentVersion+    { _evAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'EnvironmentVersion' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'evAddtional'+environmentVersion+    :: HashMap Text JSONValue -- ^ 'evAddtional'+    -> EnvironmentVersion+environmentVersion pEvAddtional_ =+    EnvironmentVersion+    { _evAddtional = _Coerce # pEvAddtional_+    }++-- | Properties of the object.+evAddtional :: Lens' EnvironmentVersion (HashMap Text JSONValue)+evAddtional+  = lens _evAddtional (\ s a -> s{_evAddtional = a}) .+      _Coerce++instance FromJSON EnvironmentVersion where+        parseJSON+          = withObject "EnvironmentVersion"+              (\ o -> EnvironmentVersion <$> (parseJSONObject o))++instance ToJSON EnvironmentVersion where+        toJSON = toJSON . _evAddtional++-- | A sink that records can be encoded and written to.+--+-- /See:/ 'sink' smart constructor.+data Sink = Sink+    { _sCodec :: !(Maybe SinkCodec)+    , _sSpec  :: !(Maybe SinkSpec)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Sink' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sCodec'+--+-- * 'sSpec'+sink+    :: Sink+sink =+    Sink+    { _sCodec = Nothing+    , _sSpec = Nothing+    }++-- | The codec to use to encode data written to the sink.+sCodec :: Lens' Sink (Maybe SinkCodec)+sCodec = lens _sCodec (\ s a -> s{_sCodec = a})++-- | The sink to write to, plus its parameters.+sSpec :: Lens' Sink (Maybe SinkSpec)+sSpec = lens _sSpec (\ s a -> s{_sSpec = a})++instance FromJSON Sink where+        parseJSON+          = withObject "Sink"+              (\ o -> Sink <$> (o .:? "codec") <*> (o .:? "spec"))++instance ToJSON Sink where+        toJSON Sink{..}+          = object+              (catMaybes+                 [("codec" .=) <$> _sCodec, ("spec" .=) <$> _sSpec])++-- | Identifies a metric, by describing the source which generated the+-- metric.+--+-- /See:/ 'metricStructuredName' smart constructor.+data MetricStructuredName = MetricStructuredName+    { _msnOrigin  :: !(Maybe Text)+    , _msnContext :: !(Maybe MetricStructuredNameContext)+    , _msnName    :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MetricStructuredName' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'msnOrigin'+--+-- * 'msnContext'+--+-- * 'msnName'+metricStructuredName+    :: MetricStructuredName+metricStructuredName =+    MetricStructuredName+    { _msnOrigin = Nothing+    , _msnContext = Nothing+    , _msnName = Nothing+    }++-- | Origin (namespace) of metric name. May be blank for user-define metrics;+-- will be \"dataflow\" for metrics defined by the Dataflow service or SDK.+msnOrigin :: Lens' MetricStructuredName (Maybe Text)+msnOrigin+  = lens _msnOrigin (\ s a -> s{_msnOrigin = a})++-- | Zero or more labeled fields which identify the part of the job this+-- metric is associated with, such as the name of a step or collection. For+-- example, built-in counters associated with steps will have+-- context[\'step\'] = . Counters associated with PCollections in the SDK+-- will have context[\'pcollection\'] = .+msnContext :: Lens' MetricStructuredName (Maybe MetricStructuredNameContext)+msnContext+  = lens _msnContext (\ s a -> s{_msnContext = a})++-- | Worker-defined metric name.+msnName :: Lens' MetricStructuredName (Maybe Text)+msnName = lens _msnName (\ s a -> s{_msnName = a})++instance FromJSON MetricStructuredName where+        parseJSON+          = withObject "MetricStructuredName"+              (\ o ->+                 MetricStructuredName <$>+                   (o .:? "origin") <*> (o .:? "context") <*>+                     (o .:? "name"))++instance ToJSON MetricStructuredName where+        toJSON MetricStructuredName{..}+          = object+              (catMaybes+                 [("origin" .=) <$> _msnOrigin,+                  ("context" .=) <$> _msnContext,+                  ("name" .=) <$> _msnName])++-- | An instruction that writes records. Takes one input, produces no+-- outputs.+--+-- /See:/ 'writeInstruction' smart constructor.+data WriteInstruction = WriteInstruction+    { _wiSink  :: !(Maybe Sink)+    , _wiInput :: !(Maybe InstructionInput)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'WriteInstruction' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'wiSink'+--+-- * 'wiInput'+writeInstruction+    :: WriteInstruction+writeInstruction =+    WriteInstruction+    { _wiSink = Nothing+    , _wiInput = Nothing+    }++-- | The sink to write to.+wiSink :: Lens' WriteInstruction (Maybe Sink)+wiSink = lens _wiSink (\ s a -> s{_wiSink = a})++-- | The input.+wiInput :: Lens' WriteInstruction (Maybe InstructionInput)+wiInput = lens _wiInput (\ s a -> s{_wiInput = a})++instance FromJSON WriteInstruction where+        parseJSON+          = withObject "WriteInstruction"+              (\ o ->+                 WriteInstruction <$>+                   (o .:? "sink") <*> (o .:? "input"))++instance ToJSON WriteInstruction where+        toJSON WriteInstruction{..}+          = object+              (catMaybes+                 [("sink" .=) <$> _wiSink, ("input" .=) <$> _wiInput])++-- | A description of the process that generated the request.+--+-- /See:/ 'environmentUserAgent' smart constructor.+newtype EnvironmentUserAgent = EnvironmentUserAgent+    { _euaAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'EnvironmentUserAgent' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'euaAddtional'+environmentUserAgent+    :: HashMap Text JSONValue -- ^ 'euaAddtional'+    -> EnvironmentUserAgent+environmentUserAgent pEuaAddtional_ =+    EnvironmentUserAgent+    { _euaAddtional = _Coerce # pEuaAddtional_+    }++-- | Properties of the object.+euaAddtional :: Lens' EnvironmentUserAgent (HashMap Text JSONValue)+euaAddtional+  = lens _euaAddtional (\ s a -> s{_euaAddtional = a})+      . _Coerce++instance FromJSON EnvironmentUserAgent where+        parseJSON+          = withObject "EnvironmentUserAgent"+              (\ o -> EnvironmentUserAgent <$> (parseJSONObject o))++instance ToJSON EnvironmentUserAgent where+        toJSON = toJSON . _euaAddtional++-- | Describes the data disk used by a workflow job.+--+-- /See:/ 'disk' smart constructor.+data Disk = Disk+    { _dSizeGb     :: !(Maybe (Textual Int32))+    , _dDiskType   :: !(Maybe Text)+    , _dMountPoint :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Disk' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dSizeGb'+--+-- * 'dDiskType'+--+-- * 'dMountPoint'+disk+    :: Disk+disk =+    Disk+    { _dSizeGb = Nothing+    , _dDiskType = Nothing+    , _dMountPoint = Nothing+    }++-- | Size of disk in GB. If zero or unspecified, the service will attempt to+-- choose a reasonable default.+dSizeGb :: Lens' Disk (Maybe Int32)+dSizeGb+  = lens _dSizeGb (\ s a -> s{_dSizeGb = a}) .+      mapping _Coerce++-- | Disk storage type, as defined by Google Compute Engine. This must be a+-- disk type appropriate to the project and zone in which the workers will+-- run. If unknown or unspecified, the service will attempt to choose a+-- reasonable default. For example, the standard persistent disk type is a+-- resource name typically ending in \"pd-standard\". If SSD persistent+-- disks are available, the resource name typically ends with \"pd-ssd\".+-- The actual valid values are defined the Google Compute Engine API, not+-- by the Dataflow API; consult the Google Compute Engine documentation for+-- more information about determining the set of available disk types for a+-- particular project and zone. Google Compute Engine Disk types are local+-- to a particular project in a particular zone, and so the resource name+-- will typically look something like this:+-- compute.googleapis.com\/projects\/ \/zones\/\/diskTypes\/pd-standard+dDiskType :: Lens' Disk (Maybe Text)+dDiskType+  = lens _dDiskType (\ s a -> s{_dDiskType = a})++-- | Directory in a VM where disk is mounted.+dMountPoint :: Lens' Disk (Maybe Text)+dMountPoint+  = lens _dMountPoint (\ s a -> s{_dMountPoint = a})++instance FromJSON Disk where+        parseJSON+          = withObject "Disk"+              (\ o ->+                 Disk <$>+                   (o .:? "sizeGb") <*> (o .:? "diskType") <*>+                     (o .:? "mountPoint"))++instance ToJSON Disk where+        toJSON Disk{..}+          = object+              (catMaybes+                 [("sizeGb" .=) <$> _dSizeGb,+                  ("diskType" .=) <$> _dDiskType,+                  ("mountPoint" .=) <$> _dMountPoint])++-- | Describes the state of a metric.+--+-- /See:/ 'metricUpdate' smart constructor.+data MetricUpdate = MetricUpdate+    { _muMeanSum    :: !(Maybe JSONValue)+    , _muInternal   :: !(Maybe JSONValue)+    , _muSet        :: !(Maybe JSONValue)+    , _muCumulative :: !(Maybe Bool)+    , _muKind       :: !(Maybe Text)+    , _muUpdateTime :: !(Maybe Text)+    , _muMeanCount  :: !(Maybe JSONValue)+    , _muName       :: !(Maybe MetricStructuredName)+    , _muScalar     :: !(Maybe JSONValue)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MetricUpdate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'muMeanSum'+--+-- * 'muInternal'+--+-- * 'muSet'+--+-- * 'muCumulative'+--+-- * 'muKind'+--+-- * 'muUpdateTime'+--+-- * 'muMeanCount'+--+-- * 'muName'+--+-- * 'muScalar'+metricUpdate+    :: MetricUpdate+metricUpdate =+    MetricUpdate+    { _muMeanSum = Nothing+    , _muInternal = Nothing+    , _muSet = Nothing+    , _muCumulative = Nothing+    , _muKind = Nothing+    , _muUpdateTime = Nothing+    , _muMeanCount = Nothing+    , _muName = Nothing+    , _muScalar = Nothing+    }++-- | Worker-computed aggregate value for the \"Mean\" aggregation kind. This+-- holds the sum of the aggregated values and is used in combination with+-- mean_count below to obtain the actual mean aggregate value. The only+-- possible value types are Long and Double.+muMeanSum :: Lens' MetricUpdate (Maybe JSONValue)+muMeanSum+  = lens _muMeanSum (\ s a -> s{_muMeanSum = a})++-- | Worker-computed aggregate value for internal use by the Dataflow+-- service.+muInternal :: Lens' MetricUpdate (Maybe JSONValue)+muInternal+  = lens _muInternal (\ s a -> s{_muInternal = a})++-- | Worker-computed aggregate value for the \"Set\" aggregation kind. The+-- only possible value type is a list of Values whose type can be Long,+-- Double, or String, according to the metric\'s type. All Values in the+-- list must be of the same type.+muSet :: Lens' MetricUpdate (Maybe JSONValue)+muSet = lens _muSet (\ s a -> s{_muSet = a})++-- | True if this metric is reported as the total cumulative aggregate value+-- accumulated since the worker started working on this WorkItem. By+-- default this is false, indicating that this metric is reported as a+-- delta that is not associated with any WorkItem.+muCumulative :: Lens' MetricUpdate (Maybe Bool)+muCumulative+  = lens _muCumulative (\ s a -> s{_muCumulative = a})++-- | Metric aggregation kind. The possible metric aggregation kinds are+-- \"Sum\", \"Max\", \"Min\", \"Mean\", \"Set\", \"And\", and \"Or\". The+-- specified aggregation kind is case-insensitive. If omitted, this is not+-- an aggregated value but instead a single metric sample value.+muKind :: Lens' MetricUpdate (Maybe Text)+muKind = lens _muKind (\ s a -> s{_muKind = a})++-- | Timestamp associated with the metric value. Optional when workers are+-- reporting work progress; it will be filled in responses from the metrics+-- API.+muUpdateTime :: Lens' MetricUpdate (Maybe Text)+muUpdateTime+  = lens _muUpdateTime (\ s a -> s{_muUpdateTime = a})++-- | Worker-computed aggregate value for the \"Mean\" aggregation kind. This+-- holds the count of the aggregated values and is used in combination with+-- mean_sum above to obtain the actual mean aggregate value. The only+-- possible value type is Long.+muMeanCount :: Lens' MetricUpdate (Maybe JSONValue)+muMeanCount+  = lens _muMeanCount (\ s a -> s{_muMeanCount = a})++-- | Name of the metric.+muName :: Lens' MetricUpdate (Maybe MetricStructuredName)+muName = lens _muName (\ s a -> s{_muName = a})++-- | Worker-computed aggregate value for aggregation kinds \"Sum\", \"Max\",+-- \"Min\", \"And\", and \"Or\". The possible value types are Long, Double,+-- and Boolean.+muScalar :: Lens' MetricUpdate (Maybe JSONValue)+muScalar = lens _muScalar (\ s a -> s{_muScalar = a})++instance FromJSON MetricUpdate where+        parseJSON+          = withObject "MetricUpdate"+              (\ o ->+                 MetricUpdate <$>+                   (o .:? "meanSum") <*> (o .:? "internal") <*>+                     (o .:? "set")+                     <*> (o .:? "cumulative")+                     <*> (o .:? "kind")+                     <*> (o .:? "updateTime")+                     <*> (o .:? "meanCount")+                     <*> (o .:? "name")+                     <*> (o .:? "scalar"))++instance ToJSON MetricUpdate where+        toJSON MetricUpdate{..}+          = object+              (catMaybes+                 [("meanSum" .=) <$> _muMeanSum,+                  ("internal" .=) <$> _muInternal,+                  ("set" .=) <$> _muSet,+                  ("cumulative" .=) <$> _muCumulative,+                  ("kind" .=) <$> _muKind,+                  ("updateTime" .=) <$> _muUpdateTime,+                  ("meanCount" .=) <$> _muMeanCount,+                  ("name" .=) <$> _muName,+                  ("scalar" .=) <$> _muScalar])++-- | The result of a SourceGetMetadataOperation.+--+-- /See:/ 'sourceGetMetadataResponse' smart constructor.+newtype SourceGetMetadataResponse = SourceGetMetadataResponse+    { _sgmrMetadata :: Maybe SourceMetadata+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SourceGetMetadataResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sgmrMetadata'+sourceGetMetadataResponse+    :: SourceGetMetadataResponse+sourceGetMetadataResponse =+    SourceGetMetadataResponse+    { _sgmrMetadata = Nothing+    }++-- | The computed metadata.+sgmrMetadata :: Lens' SourceGetMetadataResponse (Maybe SourceMetadata)+sgmrMetadata+  = lens _sgmrMetadata (\ s a -> s{_sgmrMetadata = a})++instance FromJSON SourceGetMetadataResponse where+        parseJSON+          = withObject "SourceGetMetadataResponse"+              (\ o ->+                 SourceGetMetadataResponse <$> (o .:? "metadata"))++instance ToJSON SourceGetMetadataResponse where+        toJSON SourceGetMetadataResponse{..}+          = object+              (catMaybes [("metadata" .=) <$> _sgmrMetadata])++-- | Describes the environment in which a Dataflow Job runs.+--+-- /See:/ 'environment' smart constructor.+data Environment = Environment+    { _eDataSet                  :: !(Maybe Text)+    , _eExperiments              :: !(Maybe [Text])+    , _eWorkerPools              :: !(Maybe [WorkerPool])+    , _eClusterManagerAPIService :: !(Maybe Text)+    , _eVersion                  :: !(Maybe EnvironmentVersion)+    , _eInternalExperiments      :: !(Maybe EnvironmentInternalExperiments)+    , _eTempStoragePrefix        :: !(Maybe Text)+    , _eUserAgent                :: !(Maybe EnvironmentUserAgent)+    , _eSdkPipelineOptions       :: !(Maybe EnvironmentSdkPipelineOptions)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Environment' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'eDataSet'+--+-- * 'eExperiments'+--+-- * 'eWorkerPools'+--+-- * 'eClusterManagerAPIService'+--+-- * 'eVersion'+--+-- * 'eInternalExperiments'+--+-- * 'eTempStoragePrefix'+--+-- * 'eUserAgent'+--+-- * 'eSdkPipelineOptions'+environment+    :: Environment+environment =+    Environment+    { _eDataSet = Nothing+    , _eExperiments = Nothing+    , _eWorkerPools = Nothing+    , _eClusterManagerAPIService = Nothing+    , _eVersion = Nothing+    , _eInternalExperiments = Nothing+    , _eTempStoragePrefix = Nothing+    , _eUserAgent = Nothing+    , _eSdkPipelineOptions = Nothing+    }++-- | The dataset for the current project where various workflow related+-- tables are stored. The supported resource type is: Google BigQuery:+-- bigquery.googleapis.com\/{dataset}+eDataSet :: Lens' Environment (Maybe Text)+eDataSet = lens _eDataSet (\ s a -> s{_eDataSet = a})++-- | The list of experiments to enable.+eExperiments :: Lens' Environment [Text]+eExperiments+  = lens _eExperiments (\ s a -> s{_eExperiments = a})+      . _Default+      . _Coerce++-- | Worker pools. At least one \"harness\" worker pool must be specified in+-- order for the job to have workers.+eWorkerPools :: Lens' Environment [WorkerPool]+eWorkerPools+  = lens _eWorkerPools (\ s a -> s{_eWorkerPools = a})+      . _Default+      . _Coerce++-- | The type of cluster manager API to use. If unknown or unspecified, the+-- service will attempt to choose a reasonable default. This should be in+-- the form of the API service name, e.g. \"compute.googleapis.com\".+eClusterManagerAPIService :: Lens' Environment (Maybe Text)+eClusterManagerAPIService+  = lens _eClusterManagerAPIService+      (\ s a -> s{_eClusterManagerAPIService = a})++-- | A structure describing which components and their versions of the+-- service are required in order to run the job.+eVersion :: Lens' Environment (Maybe EnvironmentVersion)+eVersion = lens _eVersion (\ s a -> s{_eVersion = a})++-- | Experimental settings.+eInternalExperiments :: Lens' Environment (Maybe EnvironmentInternalExperiments)+eInternalExperiments+  = lens _eInternalExperiments+      (\ s a -> s{_eInternalExperiments = a})++-- | The prefix of the resources the system should use for temporary storage.+-- The system will append the suffix \"\/temp-{JOBNAME} to this resource+-- prefix, where {JOBNAME} is the value of the job_name field. The+-- resulting bucket and object prefix is used as the prefix of the+-- resources used to store temporary data needed during the job execution.+-- NOTE: This will override the value in taskrunner_settings. The supported+-- resource type is: Google Cloud Storage:+-- storage.googleapis.com\/{bucket}\/{object}+-- bucket.storage.googleapis.com\/{object}+eTempStoragePrefix :: Lens' Environment (Maybe Text)+eTempStoragePrefix+  = lens _eTempStoragePrefix+      (\ s a -> s{_eTempStoragePrefix = a})++-- | A description of the process that generated the request.+eUserAgent :: Lens' Environment (Maybe EnvironmentUserAgent)+eUserAgent+  = lens _eUserAgent (\ s a -> s{_eUserAgent = a})++-- | The Dataflow SDK pipeline options specified by the user. These options+-- are passed through the service and are used to recreate the SDK pipeline+-- options on the worker in a language agnostic and platform independent+-- way.+eSdkPipelineOptions :: Lens' Environment (Maybe EnvironmentSdkPipelineOptions)+eSdkPipelineOptions+  = lens _eSdkPipelineOptions+      (\ s a -> s{_eSdkPipelineOptions = a})++instance FromJSON Environment where+        parseJSON+          = withObject "Environment"+              (\ o ->+                 Environment <$>+                   (o .:? "dataset") <*>+                     (o .:? "experiments" .!= mempty)+                     <*> (o .:? "workerPools" .!= mempty)+                     <*> (o .:? "clusterManagerApiService")+                     <*> (o .:? "version")+                     <*> (o .:? "internalExperiments")+                     <*> (o .:? "tempStoragePrefix")+                     <*> (o .:? "userAgent")+                     <*> (o .:? "sdkPipelineOptions"))++instance ToJSON Environment where+        toJSON Environment{..}+          = object+              (catMaybes+                 [("dataset" .=) <$> _eDataSet,+                  ("experiments" .=) <$> _eExperiments,+                  ("workerPools" .=) <$> _eWorkerPools,+                  ("clusterManagerApiService" .=) <$>+                    _eClusterManagerAPIService,+                  ("version" .=) <$> _eVersion,+                  ("internalExperiments" .=) <$> _eInternalExperiments,+                  ("tempStoragePrefix" .=) <$> _eTempStoragePrefix,+                  ("userAgent" .=) <$> _eUserAgent,+                  ("sdkPipelineOptions" .=) <$> _eSdkPipelineOptions])++-- | A position that encapsulates an inner position and an index for the+-- inner position. A ConcatPosition can be used by a reader of a source+-- that encapsulates a set of other sources.+--+-- /See:/ 'concatPosition' smart constructor.+data ConcatPosition = ConcatPosition+    { _cpIndex    :: !(Maybe (Textual Int32))+    , _cpPosition :: !(Maybe Position)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ConcatPosition' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cpIndex'+--+-- * 'cpPosition'+concatPosition+    :: ConcatPosition+concatPosition =+    ConcatPosition+    { _cpIndex = Nothing+    , _cpPosition = Nothing+    }++-- | Index of the inner source.+cpIndex :: Lens' ConcatPosition (Maybe Int32)+cpIndex+  = lens _cpIndex (\ s a -> s{_cpIndex = a}) .+      mapping _Coerce++-- | Position within the inner source.+cpPosition :: Lens' ConcatPosition (Maybe Position)+cpPosition+  = lens _cpPosition (\ s a -> s{_cpPosition = a})++instance FromJSON ConcatPosition where+        parseJSON+          = withObject "ConcatPosition"+              (\ o ->+                 ConcatPosition <$>+                   (o .:? "index") <*> (o .:? "position"))++instance ToJSON ConcatPosition where+        toJSON ConcatPosition{..}+          = object+              (catMaybes+                 [("index" .=) <$> _cpIndex,+                  ("position" .=) <$> _cpPosition])++-- | Zero or more labeled fields which identify the part of the job this+-- metric is associated with, such as the name of a step or collection. For+-- example, built-in counters associated with steps will have+-- context[\'step\'] = . Counters associated with PCollections in the SDK+-- will have context[\'pcollection\'] = .+--+-- /See:/ 'metricStructuredNameContext' smart constructor.+newtype MetricStructuredNameContext = MetricStructuredNameContext+    { _msncAddtional :: HashMap Text Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MetricStructuredNameContext' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'msncAddtional'+metricStructuredNameContext+    :: HashMap Text Text -- ^ 'msncAddtional'+    -> MetricStructuredNameContext+metricStructuredNameContext pMsncAddtional_ =+    MetricStructuredNameContext+    { _msncAddtional = _Coerce # pMsncAddtional_+    }++msncAddtional :: Lens' MetricStructuredNameContext (HashMap Text Text)+msncAddtional+  = lens _msncAddtional+      (\ s a -> s{_msncAddtional = a})+      . _Coerce++instance FromJSON MetricStructuredNameContext where+        parseJSON+          = withObject "MetricStructuredNameContext"+              (\ o ->+                 MetricStructuredNameContext <$> (parseJSONObject o))++instance ToJSON MetricStructuredNameContext where+        toJSON = toJSON . _msncAddtional++-- | Identifies the location of a streaming computation stage, for+-- stage-to-stage communication.+--+-- /See:/ 'streamingStageLocation' smart constructor.+newtype StreamingStageLocation = StreamingStageLocation+    { _sslStreamId :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'StreamingStageLocation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sslStreamId'+streamingStageLocation+    :: StreamingStageLocation+streamingStageLocation =+    StreamingStageLocation+    { _sslStreamId = Nothing+    }++-- | Identifies the particular stream within the streaming Dataflow job.+sslStreamId :: Lens' StreamingStageLocation (Maybe Text)+sslStreamId+  = lens _sslStreamId (\ s a -> s{_sslStreamId = a})++instance FromJSON StreamingStageLocation where+        parseJSON+          = withObject "StreamingStageLocation"+              (\ o ->+                 StreamingStageLocation <$> (o .:? "streamId"))++instance ToJSON StreamingStageLocation where+        toJSON StreamingStageLocation{..}+          = object+              (catMaybes [("streamId" .=) <$> _sslStreamId])++-- | Specification of one of the bundles produced as a result of splitting a+-- Source (e.g. when executing a SourceSplitRequest, or when splitting an+-- active task using WorkItemStatus.dynamic_source_split), relative to the+-- source being split.+--+-- /See:/ 'derivedSource' smart constructor.+data DerivedSource = DerivedSource+    { _dsDerivationMode :: !(Maybe Text)+    , _dsSource         :: !(Maybe Source)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DerivedSource' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dsDerivationMode'+--+-- * 'dsSource'+derivedSource+    :: DerivedSource+derivedSource =+    DerivedSource+    { _dsDerivationMode = Nothing+    , _dsSource = Nothing+    }++-- | What source to base the produced source on (if any).+dsDerivationMode :: Lens' DerivedSource (Maybe Text)+dsDerivationMode+  = lens _dsDerivationMode+      (\ s a -> s{_dsDerivationMode = a})++-- | Specification of the source.+dsSource :: Lens' DerivedSource (Maybe Source)+dsSource = lens _dsSource (\ s a -> s{_dsSource = a})++instance FromJSON DerivedSource where+        parseJSON+          = withObject "DerivedSource"+              (\ o ->+                 DerivedSource <$>+                   (o .:? "derivationMode") <*> (o .:? "source"))++instance ToJSON DerivedSource where+        toJSON DerivedSource{..}+          = object+              (catMaybes+                 [("derivationMode" .=) <$> _dsDerivationMode,+                  ("source" .=) <$> _dsSource])++-- | JobMetrics contains a collection of metrics descibing the detailed+-- progress of a Dataflow job. Metrics correspond to user-defined and+-- system-defined metrics in the job. This resource captures only the most+-- recent values of each metric; time-series data can be queried for them+-- (under the same metric names) from Cloud Monitoring.+--+-- /See:/ 'jobMetrics' smart constructor.+data JobMetrics = JobMetrics+    { _jmMetrics    :: !(Maybe [MetricUpdate])+    , _jmMetricTime :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'JobMetrics' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'jmMetrics'+--+-- * 'jmMetricTime'+jobMetrics+    :: JobMetrics+jobMetrics =+    JobMetrics+    { _jmMetrics = Nothing+    , _jmMetricTime = Nothing+    }++-- | All metrics for this job.+jmMetrics :: Lens' JobMetrics [MetricUpdate]+jmMetrics+  = lens _jmMetrics (\ s a -> s{_jmMetrics = a}) .+      _Default+      . _Coerce++-- | Timestamp as of which metric values are current.+jmMetricTime :: Lens' JobMetrics (Maybe Text)+jmMetricTime+  = lens _jmMetricTime (\ s a -> s{_jmMetricTime = a})++instance FromJSON JobMetrics where+        parseJSON+          = withObject "JobMetrics"+              (\ o ->+                 JobMetrics <$>+                   (o .:? "metrics" .!= mempty) <*>+                     (o .:? "metricTime"))++instance ToJSON JobMetrics where+        toJSON JobMetrics{..}+          = object+              (catMaybes+                 [("metrics" .=) <$> _jmMetrics,+                  ("metricTime" .=) <$> _jmMetricTime])++-- | Conveys a worker\'s progress through the work described by a WorkItem.+--+-- /See:/ 'workItemStatus' smart constructor.+data WorkItemStatus = WorkItemStatus+    { _wisProgress                :: !(Maybe ApproximateProgress)+    , _wisSourceOperationResponse :: !(Maybe SourceOperationResponse)+    , _wisStopPosition            :: !(Maybe Position)+    , _wisDynamicSourceSplit      :: !(Maybe DynamicSourceSplit)+    , _wisCompleted               :: !(Maybe Bool)+    , _wisSourceFork              :: !(Maybe SourceFork)+    , _wisReportIndex             :: !(Maybe (Textual Int64))+    , _wisRequestedLeaseDuration  :: !(Maybe Text)+    , _wisErrors                  :: !(Maybe [Status])+    , _wisMetricUpdates           :: !(Maybe [MetricUpdate])+    , _wisWorkItemId              :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'WorkItemStatus' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'wisProgress'+--+-- * 'wisSourceOperationResponse'+--+-- * 'wisStopPosition'+--+-- * 'wisDynamicSourceSplit'+--+-- * 'wisCompleted'+--+-- * 'wisSourceFork'+--+-- * 'wisReportIndex'+--+-- * 'wisRequestedLeaseDuration'+--+-- * 'wisErrors'+--+-- * 'wisMetricUpdates'+--+-- * 'wisWorkItemId'+workItemStatus+    :: WorkItemStatus+workItemStatus =+    WorkItemStatus+    { _wisProgress = Nothing+    , _wisSourceOperationResponse = Nothing+    , _wisStopPosition = Nothing+    , _wisDynamicSourceSplit = Nothing+    , _wisCompleted = Nothing+    , _wisSourceFork = Nothing+    , _wisReportIndex = Nothing+    , _wisRequestedLeaseDuration = Nothing+    , _wisErrors = Nothing+    , _wisMetricUpdates = Nothing+    , _wisWorkItemId = Nothing+    }++-- | The WorkItem\'s approximate progress.+wisProgress :: Lens' WorkItemStatus (Maybe ApproximateProgress)+wisProgress+  = lens _wisProgress (\ s a -> s{_wisProgress = a})++-- | If the work item represented a SourceOperationRequest, and the work is+-- completed, contains the result of the operation.+wisSourceOperationResponse :: Lens' WorkItemStatus (Maybe SourceOperationResponse)+wisSourceOperationResponse+  = lens _wisSourceOperationResponse+      (\ s a -> s{_wisSourceOperationResponse = a})++-- | A worker may split an active map task in two parts, \"primary\" and+-- \"residual\", continuing to process the primary part and returning the+-- residual part into the pool of available work. This event is called a+-- \"dynamic split\" and is critical to the dynamic work rebalancing+-- feature. The two obtained sub-tasks are called \"parts\" of the split.+-- The parts, if concatenated, must represent the same input as would be+-- read by the current task if the split did not happen. The exact way in+-- which the original task is decomposed into the two parts is specified+-- either as a position demarcating them (stop_position), or explicitly as+-- two DerivedSources, if this task consumes a user-defined source type+-- (dynamic_source_split). The \"current\" task is adjusted as a result of+-- the split: after a task with range [A, B) sends a stop_position update+-- at C, its range is considered to be [A, C), e.g.: * Progress should be+-- interpreted relative to the new range, e.g. \"75% completed\" means+-- \"75% of [A, C) completed\" * The worker should interpret+-- proposed_stop_position relative to the new range, e.g. \"split at 68%\"+-- should be interpreted as \"split at 68% of [A, C)\". * If the worker+-- chooses to split again using stop_position, only stop_positions in [A,+-- C) will be accepted. * Etc. dynamic_source_split has similar semantics:+-- e.g., if a task with source S splits using dynamic_source_split into {P,+-- R} (where P and R must be together equivalent to S), then subsequent+-- progress and proposed_stop_position should be interpreted relative to P,+-- and in a potential subsequent dynamic_source_split into {P\', R\'}, P\'+-- and R\' must be together equivalent to P, etc.+wisStopPosition :: Lens' WorkItemStatus (Maybe Position)+wisStopPosition+  = lens _wisStopPosition+      (\ s a -> s{_wisStopPosition = a})++-- | See documentation of stop_position.+wisDynamicSourceSplit :: Lens' WorkItemStatus (Maybe DynamicSourceSplit)+wisDynamicSourceSplit+  = lens _wisDynamicSourceSplit+      (\ s a -> s{_wisDynamicSourceSplit = a})++-- | True if the WorkItem was completed (successfully or unsuccessfully).+wisCompleted :: Lens' WorkItemStatus (Maybe Bool)+wisCompleted+  = lens _wisCompleted (\ s a -> s{_wisCompleted = a})++-- | DEPRECATED in favor of dynamic_source_split.+wisSourceFork :: Lens' WorkItemStatus (Maybe SourceFork)+wisSourceFork+  = lens _wisSourceFork+      (\ s a -> s{_wisSourceFork = a})++-- | The report index. When a WorkItem is leased, the lease will contain an+-- initial report index. When a WorkItem\'s status is reported to the+-- system, the report should be sent with that report index, and the+-- response will contain the index the worker should use for the next+-- report. Reports received with unexpected index values will be rejected+-- by the service. In order to preserve idempotency, the worker should not+-- alter the contents of a report, even if the worker must submit the same+-- report multiple times before getting back a response. The worker should+-- not submit a subsequent report until the response for the previous+-- report had been received from the service.+wisReportIndex :: Lens' WorkItemStatus (Maybe Int64)+wisReportIndex+  = lens _wisReportIndex+      (\ s a -> s{_wisReportIndex = a})+      . mapping _Coerce++-- | Amount of time the worker requests for its lease.+wisRequestedLeaseDuration :: Lens' WorkItemStatus (Maybe Text)+wisRequestedLeaseDuration+  = lens _wisRequestedLeaseDuration+      (\ s a -> s{_wisRequestedLeaseDuration = a})++-- | Specifies errors which occurred during processing. If errors are+-- provided, and completed = true, then the WorkItem is considered to have+-- failed.+wisErrors :: Lens' WorkItemStatus [Status]+wisErrors+  = lens _wisErrors (\ s a -> s{_wisErrors = a}) .+      _Default+      . _Coerce++-- | Worker output metrics (counters) for this WorkItem.+wisMetricUpdates :: Lens' WorkItemStatus [MetricUpdate]+wisMetricUpdates+  = lens _wisMetricUpdates+      (\ s a -> s{_wisMetricUpdates = a})+      . _Default+      . _Coerce++-- | Identifies the WorkItem.+wisWorkItemId :: Lens' WorkItemStatus (Maybe Text)+wisWorkItemId+  = lens _wisWorkItemId+      (\ s a -> s{_wisWorkItemId = a})++instance FromJSON WorkItemStatus where+        parseJSON+          = withObject "WorkItemStatus"+              (\ o ->+                 WorkItemStatus <$>+                   (o .:? "progress") <*>+                     (o .:? "sourceOperationResponse")+                     <*> (o .:? "stopPosition")+                     <*> (o .:? "dynamicSourceSplit")+                     <*> (o .:? "completed")+                     <*> (o .:? "sourceFork")+                     <*> (o .:? "reportIndex")+                     <*> (o .:? "requestedLeaseDuration")+                     <*> (o .:? "errors" .!= mempty)+                     <*> (o .:? "metricUpdates" .!= mempty)+                     <*> (o .:? "workItemId"))++instance ToJSON WorkItemStatus where+        toJSON WorkItemStatus{..}+          = object+              (catMaybes+                 [("progress" .=) <$> _wisProgress,+                  ("sourceOperationResponse" .=) <$>+                    _wisSourceOperationResponse,+                  ("stopPosition" .=) <$> _wisStopPosition,+                  ("dynamicSourceSplit" .=) <$> _wisDynamicSourceSplit,+                  ("completed" .=) <$> _wisCompleted,+                  ("sourceFork" .=) <$> _wisSourceFork,+                  ("reportIndex" .=) <$> _wisReportIndex,+                  ("requestedLeaseDuration" .=) <$>+                    _wisRequestedLeaseDuration,+                  ("errors" .=) <$> _wisErrors,+                  ("metricUpdates" .=) <$> _wisMetricUpdates,+                  ("workItemId" .=) <$> _wisWorkItemId])++-- | An instruction that copies its inputs (zero or more) to its (single)+-- output.+--+-- /See:/ 'flattenInstruction' smart constructor.+newtype FlattenInstruction = FlattenInstruction+    { _fiInputs :: Maybe [InstructionInput]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'FlattenInstruction' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'fiInputs'+flattenInstruction+    :: FlattenInstruction+flattenInstruction =+    FlattenInstruction+    { _fiInputs = Nothing+    }++-- | Describes the inputs to the flatten instruction.+fiInputs :: Lens' FlattenInstruction [InstructionInput]+fiInputs+  = lens _fiInputs (\ s a -> s{_fiInputs = a}) .+      _Default+      . _Coerce++instance FromJSON FlattenInstruction where+        parseJSON+          = withObject "FlattenInstruction"+              (\ o ->+                 FlattenInstruction <$> (o .:? "inputs" .!= mempty))++instance ToJSON FlattenInstruction where+        toJSON FlattenInstruction{..}+          = object (catMaybes [("inputs" .=) <$> _fiInputs])++-- | Map of transform name prefixes of the job to be replaced to the+-- corresponding name prefixes of the new job.+--+-- /See:/ 'jobTransformNameMApping' smart constructor.+newtype JobTransformNameMApping = JobTransformNameMApping+    { _jtnmaAddtional :: HashMap Text Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'JobTransformNameMApping' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'jtnmaAddtional'+jobTransformNameMApping+    :: HashMap Text Text -- ^ 'jtnmaAddtional'+    -> JobTransformNameMApping+jobTransformNameMApping pJtnmaAddtional_ =+    JobTransformNameMApping+    { _jtnmaAddtional = _Coerce # pJtnmaAddtional_+    }++jtnmaAddtional :: Lens' JobTransformNameMApping (HashMap Text Text)+jtnmaAddtional+  = lens _jtnmaAddtional+      (\ s a -> s{_jtnmaAddtional = a})+      . _Coerce++instance FromJSON JobTransformNameMApping where+        parseJSON+          = withObject "JobTransformNameMApping"+              (\ o ->+                 JobTransformNameMApping <$> (parseJSONObject o))++instance ToJSON JobTransformNameMApping where+        toJSON = toJSON . _jtnmaAddtional++-- | The source to read from, plus its parameters.+--+-- /See:/ 'sourceSpec' smart constructor.+newtype SourceSpec = SourceSpec+    { _ssAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SourceSpec' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ssAddtional'+sourceSpec+    :: HashMap Text JSONValue -- ^ 'ssAddtional'+    -> SourceSpec+sourceSpec pSsAddtional_ =+    SourceSpec+    { _ssAddtional = _Coerce # pSsAddtional_+    }++-- | Properties of the object.+ssAddtional :: Lens' SourceSpec (HashMap Text JSONValue)+ssAddtional+  = lens _ssAddtional (\ s a -> s{_ssAddtional = a}) .+      _Coerce++instance FromJSON SourceSpec where+        parseJSON+          = withObject "SourceSpec"+              (\ o -> SourceSpec <$> (parseJSONObject o))++instance ToJSON SourceSpec where+        toJSON = toJSON . _ssAddtional++-- | Metadata about a Source useful for automatically optimizing and tuning+-- the pipeline, etc.+--+-- /See:/ 'sourceMetadata' smart constructor.+data SourceMetadata = SourceMetadata+    { _smEstimatedSizeBytes :: !(Maybe (Textual Int64))+    , _smProducesSortedKeys :: !(Maybe Bool)+    , _smInfinite           :: !(Maybe Bool)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SourceMetadata' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'smEstimatedSizeBytes'+--+-- * 'smProducesSortedKeys'+--+-- * 'smInfinite'+sourceMetadata+    :: SourceMetadata+sourceMetadata =+    SourceMetadata+    { _smEstimatedSizeBytes = Nothing+    , _smProducesSortedKeys = Nothing+    , _smInfinite = Nothing+    }++-- | An estimate of the total size (in bytes) of the data that would be read+-- from this source. This estimate is in terms of external storage size,+-- before any decompression or other processing done by the reader.+smEstimatedSizeBytes :: Lens' SourceMetadata (Maybe Int64)+smEstimatedSizeBytes+  = lens _smEstimatedSizeBytes+      (\ s a -> s{_smEstimatedSizeBytes = a})+      . mapping _Coerce++-- | Whether this source is known to produce key\/value pairs with the+-- (encoded) keys in lexicographically sorted order.+smProducesSortedKeys :: Lens' SourceMetadata (Maybe Bool)+smProducesSortedKeys+  = lens _smProducesSortedKeys+      (\ s a -> s{_smProducesSortedKeys = a})++-- | Specifies that the size of this source is known to be infinite (this is+-- a streaming source).+smInfinite :: Lens' SourceMetadata (Maybe Bool)+smInfinite+  = lens _smInfinite (\ s a -> s{_smInfinite = a})++instance FromJSON SourceMetadata where+        parseJSON+          = withObject "SourceMetadata"+              (\ o ->+                 SourceMetadata <$>+                   (o .:? "estimatedSizeBytes") <*>+                     (o .:? "producesSortedKeys")+                     <*> (o .:? "infinite"))++instance ToJSON SourceMetadata where+        toJSON SourceMetadata{..}+          = object+              (catMaybes+                 [("estimatedSizeBytes" .=) <$> _smEstimatedSizeBytes,+                  ("producesSortedKeys" .=) <$> _smProducesSortedKeys,+                  ("infinite" .=) <$> _smInfinite])++-- | Experimental settings.+--+-- /See:/ 'environmentInternalExperiments' smart constructor.+newtype EnvironmentInternalExperiments = EnvironmentInternalExperiments+    { _eieAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'EnvironmentInternalExperiments' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'eieAddtional'+environmentInternalExperiments+    :: HashMap Text JSONValue -- ^ 'eieAddtional'+    -> EnvironmentInternalExperiments+environmentInternalExperiments pEieAddtional_ =+    EnvironmentInternalExperiments+    { _eieAddtional = _Coerce # pEieAddtional_+    }++-- | Properties of the object. Contains field \'ype with type URL.+eieAddtional :: Lens' EnvironmentInternalExperiments (HashMap Text JSONValue)+eieAddtional+  = lens _eieAddtional (\ s a -> s{_eieAddtional = a})+      . _Coerce++instance FromJSON EnvironmentInternalExperiments+         where+        parseJSON+          = withObject "EnvironmentInternalExperiments"+              (\ o ->+                 EnvironmentInternalExperiments <$>+                   (parseJSONObject o))++instance ToJSON EnvironmentInternalExperiments where+        toJSON = toJSON . _eieAddtional++-- | Taskrunner configuration settings.+--+-- /See:/ 'taskRunnerSettings' smart constructor.+data TaskRunnerSettings = TaskRunnerSettings+    { _trsContinueOnException      :: !(Maybe Bool)+    , _trsHarnessCommand           :: !(Maybe Text)+    , _trsWorkflowFileName         :: !(Maybe Text)+    , _trsTaskGroup                :: !(Maybe Text)+    , _trsAlsologtostderr          :: !(Maybe Bool)+    , _trsDataflowAPIVersion       :: !(Maybe Text)+    , _trsLogDir                   :: !(Maybe Text)+    , _trsCommandlinesFileName     :: !(Maybe Text)+    , _trsVMId                     :: !(Maybe Text)+    , _trsBaseURL                  :: !(Maybe Text)+    , _trsOAuthScopes              :: !(Maybe [Text])+    , _trsTaskUser                 :: !(Maybe Text)+    , _trsStreamingWorkerMainClass :: !(Maybe Text)+    , _trsBaseTaskDir              :: !(Maybe Text)+    , _trsLogUploadLocation        :: !(Maybe Text)+    , _trsTempStoragePrefix        :: !(Maybe Text)+    , _trsLogToSerialconsole       :: !(Maybe Bool)+    , _trsParallelWorkerSettings   :: !(Maybe WorkerSettings)+    , _trsLanguageHint             :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TaskRunnerSettings' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'trsContinueOnException'+--+-- * 'trsHarnessCommand'+--+-- * 'trsWorkflowFileName'+--+-- * 'trsTaskGroup'+--+-- * 'trsAlsologtostderr'+--+-- * 'trsDataflowAPIVersion'+--+-- * 'trsLogDir'+--+-- * 'trsCommandlinesFileName'+--+-- * 'trsVMId'+--+-- * 'trsBaseURL'+--+-- * 'trsOAuthScopes'+--+-- * 'trsTaskUser'+--+-- * 'trsStreamingWorkerMainClass'+--+-- * 'trsBaseTaskDir'+--+-- * 'trsLogUploadLocation'+--+-- * 'trsTempStoragePrefix'+--+-- * 'trsLogToSerialconsole'+--+-- * 'trsParallelWorkerSettings'+--+-- * 'trsLanguageHint'+taskRunnerSettings+    :: TaskRunnerSettings+taskRunnerSettings =+    TaskRunnerSettings+    { _trsContinueOnException = Nothing+    , _trsHarnessCommand = Nothing+    , _trsWorkflowFileName = Nothing+    , _trsTaskGroup = Nothing+    , _trsAlsologtostderr = Nothing+    , _trsDataflowAPIVersion = Nothing+    , _trsLogDir = Nothing+    , _trsCommandlinesFileName = Nothing+    , _trsVMId = Nothing+    , _trsBaseURL = Nothing+    , _trsOAuthScopes = Nothing+    , _trsTaskUser = Nothing+    , _trsStreamingWorkerMainClass = Nothing+    , _trsBaseTaskDir = Nothing+    , _trsLogUploadLocation = Nothing+    , _trsTempStoragePrefix = Nothing+    , _trsLogToSerialconsole = Nothing+    , _trsParallelWorkerSettings = Nothing+    , _trsLanguageHint = Nothing+    }++-- | Do we continue taskrunner if an exception is hit?+trsContinueOnException :: Lens' TaskRunnerSettings (Maybe Bool)+trsContinueOnException+  = lens _trsContinueOnException+      (\ s a -> s{_trsContinueOnException = a})++-- | Command to launch the worker harness.+trsHarnessCommand :: Lens' TaskRunnerSettings (Maybe Text)+trsHarnessCommand+  = lens _trsHarnessCommand+      (\ s a -> s{_trsHarnessCommand = a})++-- | Store the workflow in this file.+trsWorkflowFileName :: Lens' TaskRunnerSettings (Maybe Text)+trsWorkflowFileName+  = lens _trsWorkflowFileName+      (\ s a -> s{_trsWorkflowFileName = a})++-- | The UNIX group ID on the worker VM to use for tasks launched by+-- taskrunner; e.g. \"wheel\".+trsTaskGroup :: Lens' TaskRunnerSettings (Maybe Text)+trsTaskGroup+  = lens _trsTaskGroup (\ s a -> s{_trsTaskGroup = a})++-- | Also send taskrunner log info to stderr?+trsAlsologtostderr :: Lens' TaskRunnerSettings (Maybe Bool)+trsAlsologtostderr+  = lens _trsAlsologtostderr+      (\ s a -> s{_trsAlsologtostderr = a})++-- | API version of endpoint, e.g. \"v1b3\"+trsDataflowAPIVersion :: Lens' TaskRunnerSettings (Maybe Text)+trsDataflowAPIVersion+  = lens _trsDataflowAPIVersion+      (\ s a -> s{_trsDataflowAPIVersion = a})++-- | Directory on the VM to store logs.+trsLogDir :: Lens' TaskRunnerSettings (Maybe Text)+trsLogDir+  = lens _trsLogDir (\ s a -> s{_trsLogDir = a})++-- | Store preprocessing commands in this file.+trsCommandlinesFileName :: Lens' TaskRunnerSettings (Maybe Text)+trsCommandlinesFileName+  = lens _trsCommandlinesFileName+      (\ s a -> s{_trsCommandlinesFileName = a})++-- | ID string of VM.+trsVMId :: Lens' TaskRunnerSettings (Maybe Text)+trsVMId = lens _trsVMId (\ s a -> s{_trsVMId = a})++-- | The base URL for the taskrunner to use when accessing Google Cloud APIs.+-- When workers access Google Cloud APIs, they logically do so via relative+-- URLs. If this field is specified, it supplies the base URL to use for+-- resolving these relative URLs. The normative algorithm used is defined+-- by RFC 1808, \"Relative Uniform Resource Locators\". If not specified,+-- the default value is \"http:\/\/www.googleapis.com\/\"+trsBaseURL :: Lens' TaskRunnerSettings (Maybe Text)+trsBaseURL+  = lens _trsBaseURL (\ s a -> s{_trsBaseURL = a})++-- | OAuth2 scopes to be requested by the taskrunner in order to access the+-- dataflow API.+trsOAuthScopes :: Lens' TaskRunnerSettings [Text]+trsOAuthScopes+  = lens _trsOAuthScopes+      (\ s a -> s{_trsOAuthScopes = a})+      . _Default+      . _Coerce++-- | The UNIX user ID on the worker VM to use for tasks launched by+-- taskrunner; e.g. \"root\".+trsTaskUser :: Lens' TaskRunnerSettings (Maybe Text)+trsTaskUser+  = lens _trsTaskUser (\ s a -> s{_trsTaskUser = a})++-- | Streaming worker main class name.+trsStreamingWorkerMainClass :: Lens' TaskRunnerSettings (Maybe Text)+trsStreamingWorkerMainClass+  = lens _trsStreamingWorkerMainClass+      (\ s a -> s{_trsStreamingWorkerMainClass = a})++-- | Location on the worker for task-specific subdirectories.+trsBaseTaskDir :: Lens' TaskRunnerSettings (Maybe Text)+trsBaseTaskDir+  = lens _trsBaseTaskDir+      (\ s a -> s{_trsBaseTaskDir = a})++-- | Indicates where to put logs. If this is not specified, the logs will not+-- be uploaded. The supported resource type is: Google Cloud Storage:+-- storage.googleapis.com\/{bucket}\/{object}+-- bucket.storage.googleapis.com\/{object}+trsLogUploadLocation :: Lens' TaskRunnerSettings (Maybe Text)+trsLogUploadLocation+  = lens _trsLogUploadLocation+      (\ s a -> s{_trsLogUploadLocation = a})++-- | The prefix of the resources the taskrunner should use for temporary+-- storage. The supported resource type is: Google Cloud Storage:+-- storage.googleapis.com\/{bucket}\/{object}+-- bucket.storage.googleapis.com\/{object}+trsTempStoragePrefix :: Lens' TaskRunnerSettings (Maybe Text)+trsTempStoragePrefix+  = lens _trsTempStoragePrefix+      (\ s a -> s{_trsTempStoragePrefix = a})++-- | Send taskrunner log into to Google Compute Engine VM serial console?+trsLogToSerialconsole :: Lens' TaskRunnerSettings (Maybe Bool)+trsLogToSerialconsole+  = lens _trsLogToSerialconsole+      (\ s a -> s{_trsLogToSerialconsole = a})++-- | Settings to pass to the parallel worker harness.+trsParallelWorkerSettings :: Lens' TaskRunnerSettings (Maybe WorkerSettings)+trsParallelWorkerSettings+  = lens _trsParallelWorkerSettings+      (\ s a -> s{_trsParallelWorkerSettings = a})++-- | Suggested backend language.+trsLanguageHint :: Lens' TaskRunnerSettings (Maybe Text)+trsLanguageHint+  = lens _trsLanguageHint+      (\ s a -> s{_trsLanguageHint = a})++instance FromJSON TaskRunnerSettings where+        parseJSON+          = withObject "TaskRunnerSettings"+              (\ o ->+                 TaskRunnerSettings <$>+                   (o .:? "continueOnException") <*>+                     (o .:? "harnessCommand")+                     <*> (o .:? "workflowFileName")+                     <*> (o .:? "taskGroup")+                     <*> (o .:? "alsologtostderr")+                     <*> (o .:? "dataflowApiVersion")+                     <*> (o .:? "logDir")+                     <*> (o .:? "commandlinesFileName")+                     <*> (o .:? "vmId")+                     <*> (o .:? "baseUrl")+                     <*> (o .:? "oauthScopes" .!= mempty)+                     <*> (o .:? "taskUser")+                     <*> (o .:? "streamingWorkerMainClass")+                     <*> (o .:? "baseTaskDir")+                     <*> (o .:? "logUploadLocation")+                     <*> (o .:? "tempStoragePrefix")+                     <*> (o .:? "logToSerialconsole")+                     <*> (o .:? "parallelWorkerSettings")+                     <*> (o .:? "languageHint"))++instance ToJSON TaskRunnerSettings where+        toJSON TaskRunnerSettings{..}+          = object+              (catMaybes+                 [("continueOnException" .=) <$>+                    _trsContinueOnException,+                  ("harnessCommand" .=) <$> _trsHarnessCommand,+                  ("workflowFileName" .=) <$> _trsWorkflowFileName,+                  ("taskGroup" .=) <$> _trsTaskGroup,+                  ("alsologtostderr" .=) <$> _trsAlsologtostderr,+                  ("dataflowApiVersion" .=) <$> _trsDataflowAPIVersion,+                  ("logDir" .=) <$> _trsLogDir,+                  ("commandlinesFileName" .=) <$>+                    _trsCommandlinesFileName,+                  ("vmId" .=) <$> _trsVMId,+                  ("baseUrl" .=) <$> _trsBaseURL,+                  ("oauthScopes" .=) <$> _trsOAuthScopes,+                  ("taskUser" .=) <$> _trsTaskUser,+                  ("streamingWorkerMainClass" .=) <$>+                    _trsStreamingWorkerMainClass,+                  ("baseTaskDir" .=) <$> _trsBaseTaskDir,+                  ("logUploadLocation" .=) <$> _trsLogUploadLocation,+                  ("tempStoragePrefix" .=) <$> _trsTempStoragePrefix,+                  ("logToSerialconsole" .=) <$> _trsLogToSerialconsole,+                  ("parallelWorkerSettings" .=) <$>+                    _trsParallelWorkerSettings,+                  ("languageHint" .=) <$> _trsLanguageHint])++-- | The Dataflow SDK pipeline options specified by the user. These options+-- are passed through the service and are used to recreate the SDK pipeline+-- options on the worker in a language agnostic and platform independent+-- way.+--+-- /See:/ 'environmentSdkPipelineOptions' smart constructor.+newtype EnvironmentSdkPipelineOptions = EnvironmentSdkPipelineOptions+    { _espoAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'EnvironmentSdkPipelineOptions' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'espoAddtional'+environmentSdkPipelineOptions+    :: HashMap Text JSONValue -- ^ 'espoAddtional'+    -> EnvironmentSdkPipelineOptions+environmentSdkPipelineOptions pEspoAddtional_ =+    EnvironmentSdkPipelineOptions+    { _espoAddtional = _Coerce # pEspoAddtional_+    }++-- | Properties of the object.+espoAddtional :: Lens' EnvironmentSdkPipelineOptions (HashMap Text JSONValue)+espoAddtional+  = lens _espoAddtional+      (\ s a -> s{_espoAddtional = a})+      . _Coerce++instance FromJSON EnvironmentSdkPipelineOptions where+        parseJSON+          = withObject "EnvironmentSdkPipelineOptions"+              (\ o ->+                 EnvironmentSdkPipelineOptions <$>+                   (parseJSONObject o))++instance ToJSON EnvironmentSdkPipelineOptions where+        toJSON = toJSON . _espoAddtional++-- | Request to lease WorkItems.+--+-- /See:/ 'leaseWorkItemRequest' smart constructor.+data LeaseWorkItemRequest = LeaseWorkItemRequest+    { _lwirWorkItemTypes          :: !(Maybe [Text])+    , _lwirCurrentWorkerTime      :: !(Maybe Text)+    , _lwirWorkerCapabilities     :: !(Maybe [Text])+    , _lwirRequestedLeaseDuration :: !(Maybe Text)+    , _lwirWorkerId               :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'LeaseWorkItemRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lwirWorkItemTypes'+--+-- * 'lwirCurrentWorkerTime'+--+-- * 'lwirWorkerCapabilities'+--+-- * 'lwirRequestedLeaseDuration'+--+-- * 'lwirWorkerId'+leaseWorkItemRequest+    :: LeaseWorkItemRequest+leaseWorkItemRequest =+    LeaseWorkItemRequest+    { _lwirWorkItemTypes = Nothing+    , _lwirCurrentWorkerTime = Nothing+    , _lwirWorkerCapabilities = Nothing+    , _lwirRequestedLeaseDuration = Nothing+    , _lwirWorkerId = Nothing+    }++-- | Filter for WorkItem type.+lwirWorkItemTypes :: Lens' LeaseWorkItemRequest [Text]+lwirWorkItemTypes+  = lens _lwirWorkItemTypes+      (\ s a -> s{_lwirWorkItemTypes = a})+      . _Default+      . _Coerce++-- | The current timestamp at the worker.+lwirCurrentWorkerTime :: Lens' LeaseWorkItemRequest (Maybe Text)+lwirCurrentWorkerTime+  = lens _lwirCurrentWorkerTime+      (\ s a -> s{_lwirCurrentWorkerTime = a})++-- | Worker capabilities. WorkItems might be limited to workers with specific+-- capabilities.+lwirWorkerCapabilities :: Lens' LeaseWorkItemRequest [Text]+lwirWorkerCapabilities+  = lens _lwirWorkerCapabilities+      (\ s a -> s{_lwirWorkerCapabilities = a})+      . _Default+      . _Coerce++-- | The initial lease period.+lwirRequestedLeaseDuration :: Lens' LeaseWorkItemRequest (Maybe Text)+lwirRequestedLeaseDuration+  = lens _lwirRequestedLeaseDuration+      (\ s a -> s{_lwirRequestedLeaseDuration = a})++-- | Identifies the worker leasing work -- typically the ID of the virtual+-- machine running the worker.+lwirWorkerId :: Lens' LeaseWorkItemRequest (Maybe Text)+lwirWorkerId+  = lens _lwirWorkerId (\ s a -> s{_lwirWorkerId = a})++instance FromJSON LeaseWorkItemRequest where+        parseJSON+          = withObject "LeaseWorkItemRequest"+              (\ o ->+                 LeaseWorkItemRequest <$>+                   (o .:? "workItemTypes" .!= mempty) <*>+                     (o .:? "currentWorkerTime")+                     <*> (o .:? "workerCapabilities" .!= mempty)+                     <*> (o .:? "requestedLeaseDuration")+                     <*> (o .:? "workerId"))++instance ToJSON LeaseWorkItemRequest where+        toJSON LeaseWorkItemRequest{..}+          = object+              (catMaybes+                 [("workItemTypes" .=) <$> _lwirWorkItemTypes,+                  ("currentWorkerTime" .=) <$> _lwirCurrentWorkerTime,+                  ("workerCapabilities" .=) <$>+                    _lwirWorkerCapabilities,+                  ("requestedLeaseDuration" .=) <$>+                    _lwirRequestedLeaseDuration,+                  ("workerId" .=) <$> _lwirWorkerId])++-- | The result of a SourceOperationRequest, specified in+-- ReportWorkItemStatusRequest.source_operation when the work item is+-- completed.+--+-- /See:/ 'sourceOperationResponse' smart constructor.+data SourceOperationResponse = SourceOperationResponse+    { _sorSplit       :: !(Maybe SourceSplitResponse)+    , _sorGetMetadata :: !(Maybe SourceGetMetadataResponse)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SourceOperationResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sorSplit'+--+-- * 'sorGetMetadata'+sourceOperationResponse+    :: SourceOperationResponse+sourceOperationResponse =+    SourceOperationResponse+    { _sorSplit = Nothing+    , _sorGetMetadata = Nothing+    }++-- | A response to a request to split a source.+sorSplit :: Lens' SourceOperationResponse (Maybe SourceSplitResponse)+sorSplit = lens _sorSplit (\ s a -> s{_sorSplit = a})++-- | A response to a request to get metadata about a source.+sorGetMetadata :: Lens' SourceOperationResponse (Maybe SourceGetMetadataResponse)+sorGetMetadata+  = lens _sorGetMetadata+      (\ s a -> s{_sorGetMetadata = a})++instance FromJSON SourceOperationResponse where+        parseJSON+          = withObject "SourceOperationResponse"+              (\ o ->+                 SourceOperationResponse <$>+                   (o .:? "split") <*> (o .:? "getMetadata"))++instance ToJSON SourceOperationResponse where+        toJSON SourceOperationResponse{..}+          = object+              (catMaybes+                 [("split" .=) <$> _sorSplit,+                  ("getMetadata" .=) <$> _sorGetMetadata])++-- | Maps user stage names to stable computation names.+--+-- /See:/ 'topologyConfigUserStageToComputationNameMap' smart constructor.+newtype TopologyConfigUserStageToComputationNameMap = TopologyConfigUserStageToComputationNameMap+    { _tcustcnmAddtional :: HashMap Text Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TopologyConfigUserStageToComputationNameMap' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tcustcnmAddtional'+topologyConfigUserStageToComputationNameMap+    :: HashMap Text Text -- ^ 'tcustcnmAddtional'+    -> TopologyConfigUserStageToComputationNameMap+topologyConfigUserStageToComputationNameMap pTcustcnmAddtional_ =+    TopologyConfigUserStageToComputationNameMap+    { _tcustcnmAddtional = _Coerce # pTcustcnmAddtional_+    }++tcustcnmAddtional :: Lens' TopologyConfigUserStageToComputationNameMap (HashMap Text Text)+tcustcnmAddtional+  = lens _tcustcnmAddtional+      (\ s a -> s{_tcustcnmAddtional = a})+      . _Coerce++instance FromJSON+         TopologyConfigUserStageToComputationNameMap where+        parseJSON+          = withObject+              "TopologyConfigUserStageToComputationNameMap"+              (\ o ->+                 TopologyConfigUserStageToComputationNameMap <$>+                   (parseJSONObject o))++instance ToJSON+         TopologyConfigUserStageToComputationNameMap where+        toJSON = toJSON . _tcustcnmAddtional++-- | A task which consists of a shell command for the worker to execute.+--+-- /See:/ 'shellTask' smart constructor.+data ShellTask = ShellTask+    { _stCommand  :: !(Maybe Text)+    , _stExitCode :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ShellTask' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'stCommand'+--+-- * 'stExitCode'+shellTask+    :: ShellTask+shellTask =+    ShellTask+    { _stCommand = Nothing+    , _stExitCode = Nothing+    }++-- | The shell command to run.+stCommand :: Lens' ShellTask (Maybe Text)+stCommand+  = lens _stCommand (\ s a -> s{_stCommand = a})++-- | Exit code for the task.+stExitCode :: Lens' ShellTask (Maybe Int32)+stExitCode+  = lens _stExitCode (\ s a -> s{_stExitCode = a}) .+      mapping _Coerce++instance FromJSON ShellTask where+        parseJSON+          = withObject "ShellTask"+              (\ o ->+                 ShellTask <$>+                   (o .:? "command") <*> (o .:? "exitCode"))++instance ToJSON ShellTask where+        toJSON ShellTask{..}+          = object+              (catMaybes+                 [("command" .=) <$> _stCommand,+                  ("exitCode" .=) <$> _stExitCode])++--+-- /See:/ 'statusDetailsItem' smart constructor.+newtype StatusDetailsItem = StatusDetailsItem+    { _sdiAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'StatusDetailsItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sdiAddtional'+statusDetailsItem+    :: HashMap Text JSONValue -- ^ 'sdiAddtional'+    -> StatusDetailsItem+statusDetailsItem pSdiAddtional_ =+    StatusDetailsItem+    { _sdiAddtional = _Coerce # pSdiAddtional_+    }++-- | Properties of the object. Contains field \'ype with type URL.+sdiAddtional :: Lens' StatusDetailsItem (HashMap Text JSONValue)+sdiAddtional+  = lens _sdiAddtional (\ s a -> s{_sdiAddtional = a})+      . _Coerce++instance FromJSON StatusDetailsItem where+        parseJSON+          = withObject "StatusDetailsItem"+              (\ o -> StatusDetailsItem <$> (parseJSONObject o))++instance ToJSON StatusDetailsItem where+        toJSON = toJSON . _sdiAddtional++-- | Named properties associated with the step. Each kind of predefined step+-- has its own required set of properties.+--+-- /See:/ 'stepProperties' smart constructor.+newtype StepProperties = StepProperties+    { _spAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'StepProperties' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'spAddtional'+stepProperties+    :: HashMap Text JSONValue -- ^ 'spAddtional'+    -> StepProperties+stepProperties pSpAddtional_ =+    StepProperties+    { _spAddtional = _Coerce # pSpAddtional_+    }++-- | Properties of the object.+spAddtional :: Lens' StepProperties (HashMap Text JSONValue)+spAddtional+  = lens _spAddtional (\ s a -> s{_spAddtional = a}) .+      _Coerce++instance FromJSON StepProperties where+        parseJSON+          = withObject "StepProperties"+              (\ o -> StepProperties <$> (parseJSONObject o))++instance ToJSON StepProperties where+        toJSON = toJSON . _spAddtional++-- | Global topology of the streaming Dataflow job, including all+-- computations and their sharded locations.+--+-- /See:/ 'topologyConfig' smart constructor.+data TopologyConfig = TopologyConfig+    { _tcDataDiskAssignments           :: !(Maybe [DataDiskAssignment])+    , _tcUserStageToComputationNameMap :: !(Maybe TopologyConfigUserStageToComputationNameMap)+    , _tcComputations                  :: !(Maybe [ComputationTopology])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TopologyConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tcDataDiskAssignments'+--+-- * 'tcUserStageToComputationNameMap'+--+-- * 'tcComputations'+topologyConfig+    :: TopologyConfig+topologyConfig =+    TopologyConfig+    { _tcDataDiskAssignments = Nothing+    , _tcUserStageToComputationNameMap = Nothing+    , _tcComputations = Nothing+    }++-- | The disks assigned to a streaming Dataflow job.+tcDataDiskAssignments :: Lens' TopologyConfig [DataDiskAssignment]+tcDataDiskAssignments+  = lens _tcDataDiskAssignments+      (\ s a -> s{_tcDataDiskAssignments = a})+      . _Default+      . _Coerce++-- | Maps user stage names to stable computation names.+tcUserStageToComputationNameMap :: Lens' TopologyConfig (Maybe TopologyConfigUserStageToComputationNameMap)+tcUserStageToComputationNameMap+  = lens _tcUserStageToComputationNameMap+      (\ s a -> s{_tcUserStageToComputationNameMap = a})++-- | The computations associated with a streaming Dataflow job.+tcComputations :: Lens' TopologyConfig [ComputationTopology]+tcComputations+  = lens _tcComputations+      (\ s a -> s{_tcComputations = a})+      . _Default+      . _Coerce++instance FromJSON TopologyConfig where+        parseJSON+          = withObject "TopologyConfig"+              (\ o ->+                 TopologyConfig <$>+                   (o .:? "dataDiskAssignments" .!= mempty) <*>+                     (o .:? "userStageToComputationNameMap")+                     <*> (o .:? "computations" .!= mempty))++instance ToJSON TopologyConfig where+        toJSON TopologyConfig{..}+          = object+              (catMaybes+                 [("dataDiskAssignments" .=) <$>+                    _tcDataDiskAssignments,+                  ("userStageToComputationNameMap" .=) <$>+                    _tcUserStageToComputationNameMap,+                  ("computations" .=) <$> _tcComputations])++-- | Provides data to pass through to the worker harness.+--+-- /See:/ 'workerSettings' smart constructor.+data WorkerSettings = WorkerSettings+    { _wsServicePath        :: !(Maybe Text)+    , _wsBaseURL            :: !(Maybe Text)+    , _wsShuffleServicePath :: !(Maybe Text)+    , _wsTempStoragePrefix  :: !(Maybe Text)+    , _wsReportingEnabled   :: !(Maybe Bool)+    , _wsWorkerId           :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'WorkerSettings' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'wsServicePath'+--+-- * 'wsBaseURL'+--+-- * 'wsShuffleServicePath'+--+-- * 'wsTempStoragePrefix'+--+-- * 'wsReportingEnabled'+--+-- * 'wsWorkerId'+workerSettings+    :: WorkerSettings+workerSettings =+    WorkerSettings+    { _wsServicePath = Nothing+    , _wsBaseURL = Nothing+    , _wsShuffleServicePath = Nothing+    , _wsTempStoragePrefix = Nothing+    , _wsReportingEnabled = Nothing+    , _wsWorkerId = Nothing+    }++-- | The Dataflow service path relative to the root URL, for example,+-- \"dataflow\/v1b3\/projects\".+wsServicePath :: Lens' WorkerSettings (Maybe Text)+wsServicePath+  = lens _wsServicePath+      (\ s a -> s{_wsServicePath = a})++-- | The base URL for accessing Google Cloud APIs. When workers access Google+-- Cloud APIs, they logically do so via relative URLs. If this field is+-- specified, it supplies the base URL to use for resolving these relative+-- URLs. The normative algorithm used is defined by RFC 1808, \"Relative+-- Uniform Resource Locators\". If not specified, the default value is+-- \"http:\/\/www.googleapis.com\/\"+wsBaseURL :: Lens' WorkerSettings (Maybe Text)+wsBaseURL+  = lens _wsBaseURL (\ s a -> s{_wsBaseURL = a})++-- | The Shuffle service path relative to the root URL, for example,+-- \"shuffle\/v1beta1\".+wsShuffleServicePath :: Lens' WorkerSettings (Maybe Text)+wsShuffleServicePath+  = lens _wsShuffleServicePath+      (\ s a -> s{_wsShuffleServicePath = a})++-- | The prefix of the resources the system should use for temporary storage.+-- The supported resource type is: Google Cloud Storage:+-- storage.googleapis.com\/{bucket}\/{object}+-- bucket.storage.googleapis.com\/{object}+wsTempStoragePrefix :: Lens' WorkerSettings (Maybe Text)+wsTempStoragePrefix+  = lens _wsTempStoragePrefix+      (\ s a -> s{_wsTempStoragePrefix = a})++-- | Send work progress updates to service.+wsReportingEnabled :: Lens' WorkerSettings (Maybe Bool)+wsReportingEnabled+  = lens _wsReportingEnabled+      (\ s a -> s{_wsReportingEnabled = a})++-- | ID of the worker running this pipeline.+wsWorkerId :: Lens' WorkerSettings (Maybe Text)+wsWorkerId+  = lens _wsWorkerId (\ s a -> s{_wsWorkerId = a})++instance FromJSON WorkerSettings where+        parseJSON+          = withObject "WorkerSettings"+              (\ o ->+                 WorkerSettings <$>+                   (o .:? "servicePath") <*> (o .:? "baseUrl") <*>+                     (o .:? "shuffleServicePath")+                     <*> (o .:? "tempStoragePrefix")+                     <*> (o .:? "reportingEnabled")+                     <*> (o .:? "workerId"))++instance ToJSON WorkerSettings where+        toJSON WorkerSettings{..}+          = object+              (catMaybes+                 [("servicePath" .=) <$> _wsServicePath,+                  ("baseUrl" .=) <$> _wsBaseURL,+                  ("shuffleServicePath" .=) <$> _wsShuffleServicePath,+                  ("tempStoragePrefix" .=) <$> _wsTempStoragePrefix,+                  ("reportingEnabled" .=) <$> _wsReportingEnabled,+                  ("workerId" .=) <$> _wsWorkerId])++-- | Other data returned by the service, specific to the particular worker+-- harness.+--+-- /See:/ 'workItemServiceStateHarnessData' smart constructor.+newtype WorkItemServiceStateHarnessData = WorkItemServiceStateHarnessData+    { _wisshdAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'WorkItemServiceStateHarnessData' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'wisshdAddtional'+workItemServiceStateHarnessData+    :: HashMap Text JSONValue -- ^ 'wisshdAddtional'+    -> WorkItemServiceStateHarnessData+workItemServiceStateHarnessData pWisshdAddtional_ =+    WorkItemServiceStateHarnessData+    { _wisshdAddtional = _Coerce # pWisshdAddtional_+    }++-- | Properties of the object.+wisshdAddtional :: Lens' WorkItemServiceStateHarnessData (HashMap Text JSONValue)+wisshdAddtional+  = lens _wisshdAddtional+      (\ s a -> s{_wisshdAddtional = a})+      . _Coerce++instance FromJSON WorkItemServiceStateHarnessData+         where+        parseJSON+          = withObject "WorkItemServiceStateHarnessData"+              (\ o ->+                 WorkItemServiceStateHarnessData <$>+                   (parseJSONObject o))++instance ToJSON WorkItemServiceStateHarnessData where+        toJSON = toJSON . _wisshdAddtional++-- | Data disk assignment for a given VM instance.+--+-- /See:/ 'dataDiskAssignment' smart constructor.+data DataDiskAssignment = DataDiskAssignment+    { _ddaVMInstance :: !(Maybe Text)+    , _ddaDataDisks  :: !(Maybe [Text])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DataDiskAssignment' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ddaVMInstance'+--+-- * 'ddaDataDisks'+dataDiskAssignment+    :: DataDiskAssignment+dataDiskAssignment =+    DataDiskAssignment+    { _ddaVMInstance = Nothing+    , _ddaDataDisks = Nothing+    }++-- | VM instance name the data disks mounted to, for example+-- \"myproject-1014-104817-4c2-harness-0\".+ddaVMInstance :: Lens' DataDiskAssignment (Maybe Text)+ddaVMInstance+  = lens _ddaVMInstance+      (\ s a -> s{_ddaVMInstance = a})++-- | Mounted data disks. The order is important a data disk\'s 0-based index+-- in this list defines which persistent directory the disk is mounted to,+-- for example the list of { \"myproject-1014-104817-4c2-harness-0-disk-0\"+-- }, { \"myproject-1014-104817-4c2-harness-0-disk-1\" }.+ddaDataDisks :: Lens' DataDiskAssignment [Text]+ddaDataDisks+  = lens _ddaDataDisks (\ s a -> s{_ddaDataDisks = a})+      . _Default+      . _Coerce++instance FromJSON DataDiskAssignment where+        parseJSON+          = withObject "DataDiskAssignment"+              (\ o ->+                 DataDiskAssignment <$>+                   (o .:? "vmInstance") <*>+                     (o .:? "dataDisks" .!= mempty))++instance ToJSON DataDiskAssignment where+        toJSON DataDiskAssignment{..}+          = object+              (catMaybes+                 [("vmInstance" .=) <$> _ddaVMInstance,+                  ("dataDisks" .=) <$> _ddaDataDisks])++-- | The Dataflow service\'s idea of the current state of a WorkItem being+-- processed by a worker.+--+-- /See:/ 'workItemServiceState' smart constructor.+data WorkItemServiceState = WorkItemServiceState+    { _wissNextReportIndex       :: !(Maybe (Textual Int64))+    , _wissReportStatusInterval  :: !(Maybe Text)+    , _wissHarnessData           :: !(Maybe WorkItemServiceStateHarnessData)+    , _wissSuggestedStopPoint    :: !(Maybe ApproximateProgress)+    , _wissSuggestedStopPosition :: !(Maybe Position)+    , _wissLeaseExpireTime       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'WorkItemServiceState' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'wissNextReportIndex'+--+-- * 'wissReportStatusInterval'+--+-- * 'wissHarnessData'+--+-- * 'wissSuggestedStopPoint'+--+-- * 'wissSuggestedStopPosition'+--+-- * 'wissLeaseExpireTime'+workItemServiceState+    :: WorkItemServiceState+workItemServiceState =+    WorkItemServiceState+    { _wissNextReportIndex = Nothing+    , _wissReportStatusInterval = Nothing+    , _wissHarnessData = Nothing+    , _wissSuggestedStopPoint = Nothing+    , _wissSuggestedStopPosition = Nothing+    , _wissLeaseExpireTime = Nothing+    }++-- | The index value to use for the next report sent by the worker. Note: If+-- the report call fails for whatever reason, the worker should reuse this+-- index for subsequent report attempts.+wissNextReportIndex :: Lens' WorkItemServiceState (Maybe Int64)+wissNextReportIndex+  = lens _wissNextReportIndex+      (\ s a -> s{_wissNextReportIndex = a})+      . mapping _Coerce++-- | New recommended reporting interval.+wissReportStatusInterval :: Lens' WorkItemServiceState (Maybe Text)+wissReportStatusInterval+  = lens _wissReportStatusInterval+      (\ s a -> s{_wissReportStatusInterval = a})++-- | Other data returned by the service, specific to the particular worker+-- harness.+wissHarnessData :: Lens' WorkItemServiceState (Maybe WorkItemServiceStateHarnessData)+wissHarnessData+  = lens _wissHarnessData+      (\ s a -> s{_wissHarnessData = a})++-- | The progress point in the WorkItem where the Dataflow service suggests+-- that the worker truncate the task.+wissSuggestedStopPoint :: Lens' WorkItemServiceState (Maybe ApproximateProgress)+wissSuggestedStopPoint+  = lens _wissSuggestedStopPoint+      (\ s a -> s{_wissSuggestedStopPoint = a})++-- | Obsolete, always empty.+wissSuggestedStopPosition :: Lens' WorkItemServiceState (Maybe Position)+wissSuggestedStopPosition+  = lens _wissSuggestedStopPosition+      (\ s a -> s{_wissSuggestedStopPosition = a})++-- | Time at which the current lease will expire.+wissLeaseExpireTime :: Lens' WorkItemServiceState (Maybe Text)+wissLeaseExpireTime+  = lens _wissLeaseExpireTime+      (\ s a -> s{_wissLeaseExpireTime = a})++instance FromJSON WorkItemServiceState where+        parseJSON+          = withObject "WorkItemServiceState"+              (\ o ->+                 WorkItemServiceState <$>+                   (o .:? "nextReportIndex") <*>+                     (o .:? "reportStatusInterval")+                     <*> (o .:? "harnessData")+                     <*> (o .:? "suggestedStopPoint")+                     <*> (o .:? "suggestedStopPosition")+                     <*> (o .:? "leaseExpireTime"))++instance ToJSON WorkItemServiceState where+        toJSON WorkItemServiceState{..}+          = object+              (catMaybes+                 [("nextReportIndex" .=) <$> _wissNextReportIndex,+                  ("reportStatusInterval" .=) <$>+                    _wissReportStatusInterval,+                  ("harnessData" .=) <$> _wissHarnessData,+                  ("suggestedStopPoint" .=) <$>+                    _wissSuggestedStopPoint,+                  ("suggestedStopPosition" .=) <$>+                    _wissSuggestedStopPosition,+                  ("leaseExpireTime" .=) <$> _wissLeaseExpireTime])++-- | A task which initializes part of a streaming Dataflow job.+--+-- /See:/ 'streamingSetupTask' smart constructor.+data StreamingSetupTask = StreamingSetupTask+    { _sstStreamingComputationTopology :: !(Maybe TopologyConfig)+    , _sstReceiveWorkPort              :: !(Maybe (Textual Int32))+    , _sstWorkerHarnessPort            :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'StreamingSetupTask' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sstStreamingComputationTopology'+--+-- * 'sstReceiveWorkPort'+--+-- * 'sstWorkerHarnessPort'+streamingSetupTask+    :: StreamingSetupTask+streamingSetupTask =+    StreamingSetupTask+    { _sstStreamingComputationTopology = Nothing+    , _sstReceiveWorkPort = Nothing+    , _sstWorkerHarnessPort = Nothing+    }++-- | The global topology of the streaming Dataflow job.+sstStreamingComputationTopology :: Lens' StreamingSetupTask (Maybe TopologyConfig)+sstStreamingComputationTopology+  = lens _sstStreamingComputationTopology+      (\ s a -> s{_sstStreamingComputationTopology = a})++-- | The TCP port on which the worker should listen for messages from other+-- streaming computation workers.+sstReceiveWorkPort :: Lens' StreamingSetupTask (Maybe Int32)+sstReceiveWorkPort+  = lens _sstReceiveWorkPort+      (\ s a -> s{_sstReceiveWorkPort = a})+      . mapping _Coerce++-- | The TCP port used by the worker to communicate with the Dataflow worker+-- harness.+sstWorkerHarnessPort :: Lens' StreamingSetupTask (Maybe Int32)+sstWorkerHarnessPort+  = lens _sstWorkerHarnessPort+      (\ s a -> s{_sstWorkerHarnessPort = a})+      . mapping _Coerce++instance FromJSON StreamingSetupTask where+        parseJSON+          = withObject "StreamingSetupTask"+              (\ o ->+                 StreamingSetupTask <$>+                   (o .:? "streamingComputationTopology") <*>+                     (o .:? "receiveWorkPort")+                     <*> (o .:? "workerHarnessPort"))++instance ToJSON StreamingSetupTask where+        toJSON StreamingSetupTask{..}+          = object+              (catMaybes+                 [("streamingComputationTopology" .=) <$>+                    _sstStreamingComputationTopology,+                  ("receiveWorkPort" .=) <$> _sstReceiveWorkPort,+                  ("workerHarnessPort" .=) <$> _sstWorkerHarnessPort])++-- | The codec to use for interpreting an element in the input PTable.+--+-- /See:/ 'partialGroupByKeyInstructionInputElementCodec' smart constructor.+newtype PartialGroupByKeyInstructionInputElementCodec = PartialGroupByKeyInstructionInputElementCodec+    { _pgbkiiecAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'PartialGroupByKeyInstructionInputElementCodec' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pgbkiiecAddtional'+partialGroupByKeyInstructionInputElementCodec+    :: HashMap Text JSONValue -- ^ 'pgbkiiecAddtional'+    -> PartialGroupByKeyInstructionInputElementCodec+partialGroupByKeyInstructionInputElementCodec pPgbkiiecAddtional_ =+    PartialGroupByKeyInstructionInputElementCodec+    { _pgbkiiecAddtional = _Coerce # pPgbkiiecAddtional_+    }++-- | Properties of the object.+pgbkiiecAddtional :: Lens' PartialGroupByKeyInstructionInputElementCodec (HashMap Text JSONValue)+pgbkiiecAddtional+  = lens _pgbkiiecAddtional+      (\ s a -> s{_pgbkiiecAddtional = a})+      . _Coerce++instance FromJSON+         PartialGroupByKeyInstructionInputElementCodec where+        parseJSON+          = withObject+              "PartialGroupByKeyInstructionInputElementCodec"+              (\ o ->+                 PartialGroupByKeyInstructionInputElementCodec <$>+                   (parseJSONObject o))++instance ToJSON+         PartialGroupByKeyInstructionInputElementCodec where+        toJSON = toJSON . _pgbkiiecAddtional++-- | MapTask consists of an ordered set of instructions, each of which+-- describes one particular low-level operation for the worker to perform+-- in order to accomplish the MapTask\'s WorkItem. Each instruction must+-- appear in the list before any instructions which depends on its output.+--+-- /See:/ 'mapTask' smart constructor.+data MapTask = MapTask+    { _mtInstructions :: !(Maybe [ParallelInstruction])+    , _mtSystemName   :: !(Maybe Text)+    , _mtStageName    :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MapTask' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mtInstructions'+--+-- * 'mtSystemName'+--+-- * 'mtStageName'+mapTask+    :: MapTask+mapTask =+    MapTask+    { _mtInstructions = Nothing+    , _mtSystemName = Nothing+    , _mtStageName = Nothing+    }++-- | The instructions in the MapTask.+mtInstructions :: Lens' MapTask [ParallelInstruction]+mtInstructions+  = lens _mtInstructions+      (\ s a -> s{_mtInstructions = a})+      . _Default+      . _Coerce++-- | System-defined name of this MapTask. Unique across the workflow.+mtSystemName :: Lens' MapTask (Maybe Text)+mtSystemName+  = lens _mtSystemName (\ s a -> s{_mtSystemName = a})++-- | System-defined name of the stage containing this MapTask. Unique across+-- the workflow.+mtStageName :: Lens' MapTask (Maybe Text)+mtStageName+  = lens _mtStageName (\ s a -> s{_mtStageName = a})++instance FromJSON MapTask where+        parseJSON+          = withObject "MapTask"+              (\ o ->+                 MapTask <$>+                   (o .:? "instructions" .!= mempty) <*>+                     (o .:? "systemName")+                     <*> (o .:? "stageName"))++instance ToJSON MapTask where+        toJSON MapTask{..}+          = object+              (catMaybes+                 [("instructions" .=) <$> _mtInstructions,+                  ("systemName" .=) <$> _mtSystemName,+                  ("stageName" .=) <$> _mtStageName])++-- | Describes mounted data disk.+--+-- /See:/ 'mountedDataDisk' smart constructor.+newtype MountedDataDisk = MountedDataDisk+    { _mddDataDisk :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MountedDataDisk' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mddDataDisk'+mountedDataDisk+    :: MountedDataDisk+mountedDataDisk =+    MountedDataDisk+    { _mddDataDisk = Nothing+    }++-- | The name of the data disk. This name is local to the Google Cloud+-- Platform project and uniquely identifies the disk within that project,+-- for example \"myproject-1014-104817-4c2-harness-0-disk-1\".+mddDataDisk :: Lens' MountedDataDisk (Maybe Text)+mddDataDisk+  = lens _mddDataDisk (\ s a -> s{_mddDataDisk = a})++instance FromJSON MountedDataDisk where+        parseJSON+          = withObject "MountedDataDisk"+              (\ o -> MountedDataDisk <$> (o .:? "dataDisk"))++instance ToJSON MountedDataDisk where+        toJSON MountedDataDisk{..}+          = object+              (catMaybes [("dataDisk" .=) <$> _mddDataDisk])++-- | The codec to use to encode data written to the sink.+--+-- /See:/ 'sinkCodec' smart constructor.+newtype SinkCodec = SinkCodec+    { _scAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SinkCodec' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'scAddtional'+sinkCodec+    :: HashMap Text JSONValue -- ^ 'scAddtional'+    -> SinkCodec+sinkCodec pScAddtional_ =+    SinkCodec+    { _scAddtional = _Coerce # pScAddtional_+    }++-- | Properties of the object.+scAddtional :: Lens' SinkCodec (HashMap Text JSONValue)+scAddtional+  = lens _scAddtional (\ s a -> s{_scAddtional = a}) .+      _Coerce++instance FromJSON SinkCodec where+        parseJSON+          = withObject "SinkCodec"+              (\ o -> SinkCodec <$> (parseJSONObject o))++instance ToJSON SinkCodec where+        toJSON = toJSON . _scAddtional++-- | The user function to invoke.+--+-- /See:/ 'parDoInstructionUserFn' smart constructor.+newtype ParDoInstructionUserFn = ParDoInstructionUserFn+    { _pdiufAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ParDoInstructionUserFn' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pdiufAddtional'+parDoInstructionUserFn+    :: HashMap Text JSONValue -- ^ 'pdiufAddtional'+    -> ParDoInstructionUserFn+parDoInstructionUserFn pPdiufAddtional_ =+    ParDoInstructionUserFn+    { _pdiufAddtional = _Coerce # pPdiufAddtional_+    }++-- | Properties of the object.+pdiufAddtional :: Lens' ParDoInstructionUserFn (HashMap Text JSONValue)+pdiufAddtional+  = lens _pdiufAddtional+      (\ s a -> s{_pdiufAddtional = a})+      . _Coerce++instance FromJSON ParDoInstructionUserFn where+        parseJSON+          = withObject "ParDoInstructionUserFn"+              (\ o ->+                 ParDoInstructionUserFn <$> (parseJSONObject o))++instance ToJSON ParDoInstructionUserFn where+        toJSON = toJSON . _pdiufAddtional++-- | The codec to use to encode data being written via this output.+--+-- /See:/ 'instructionOutputCodec' smart constructor.+newtype InstructionOutputCodec = InstructionOutputCodec+    { _iocAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstructionOutputCodec' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'iocAddtional'+instructionOutputCodec+    :: HashMap Text JSONValue -- ^ 'iocAddtional'+    -> InstructionOutputCodec+instructionOutputCodec pIocAddtional_ =+    InstructionOutputCodec+    { _iocAddtional = _Coerce # pIocAddtional_+    }++-- | Properties of the object.+iocAddtional :: Lens' InstructionOutputCodec (HashMap Text JSONValue)+iocAddtional+  = lens _iocAddtional (\ s a -> s{_iocAddtional = a})+      . _Coerce++instance FromJSON InstructionOutputCodec where+        parseJSON+          = withObject "InstructionOutputCodec"+              (\ o ->+                 InstructionOutputCodec <$> (parseJSONObject o))++instance ToJSON InstructionOutputCodec where+        toJSON = toJSON . _iocAddtional++-- | Describes a stream of data, either as input to be processed or as output+-- of a streaming Dataflow job.+--+-- /See:/ 'streamLocation' smart constructor.+data StreamLocation = StreamLocation+    { _slStreamingStageLocation :: !(Maybe StreamingStageLocation)+    , _slSideInputLocation      :: !(Maybe StreamingSideInputLocation)+    , _slCustomSourceLocation   :: !(Maybe CustomSourceLocation)+    , _slPubsubLocation         :: !(Maybe PubsubLocation)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'StreamLocation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'slStreamingStageLocation'+--+-- * 'slSideInputLocation'+--+-- * 'slCustomSourceLocation'+--+-- * 'slPubsubLocation'+streamLocation+    :: StreamLocation+streamLocation =+    StreamLocation+    { _slStreamingStageLocation = Nothing+    , _slSideInputLocation = Nothing+    , _slCustomSourceLocation = Nothing+    , _slPubsubLocation = Nothing+    }++-- | The stream is part of another computation within the current streaming+-- Dataflow job.+slStreamingStageLocation :: Lens' StreamLocation (Maybe StreamingStageLocation)+slStreamingStageLocation+  = lens _slStreamingStageLocation+      (\ s a -> s{_slStreamingStageLocation = a})++-- | The stream is a streaming side input.+slSideInputLocation :: Lens' StreamLocation (Maybe StreamingSideInputLocation)+slSideInputLocation+  = lens _slSideInputLocation+      (\ s a -> s{_slSideInputLocation = a})++-- | The stream is a custom source.+slCustomSourceLocation :: Lens' StreamLocation (Maybe CustomSourceLocation)+slCustomSourceLocation+  = lens _slCustomSourceLocation+      (\ s a -> s{_slCustomSourceLocation = a})++-- | The stream is a pubsub stream.+slPubsubLocation :: Lens' StreamLocation (Maybe PubsubLocation)+slPubsubLocation+  = lens _slPubsubLocation+      (\ s a -> s{_slPubsubLocation = a})++instance FromJSON StreamLocation where+        parseJSON+          = withObject "StreamLocation"+              (\ o ->+                 StreamLocation <$>+                   (o .:? "streamingStageLocation") <*>+                     (o .:? "sideInputLocation")+                     <*> (o .:? "customSourceLocation")+                     <*> (o .:? "pubsubLocation"))++instance ToJSON StreamLocation where+        toJSON StreamLocation{..}+          = object+              (catMaybes+                 [("streamingStageLocation" .=) <$>+                    _slStreamingStageLocation,+                  ("sideInputLocation" .=) <$> _slSideInputLocation,+                  ("customSourceLocation" .=) <$>+                    _slCustomSourceLocation,+                  ("pubsubLocation" .=) <$> _slPubsubLocation])++-- | Extra arguments for this worker pool.+--+-- /See:/ 'workerPoolPoolArgs' smart constructor.+newtype WorkerPoolPoolArgs = WorkerPoolPoolArgs+    { _wppaAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'WorkerPoolPoolArgs' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'wppaAddtional'+workerPoolPoolArgs+    :: HashMap Text JSONValue -- ^ 'wppaAddtional'+    -> WorkerPoolPoolArgs+workerPoolPoolArgs pWppaAddtional_ =+    WorkerPoolPoolArgs+    { _wppaAddtional = _Coerce # pWppaAddtional_+    }++-- | Properties of the object. Contains field \'ype with type URL.+wppaAddtional :: Lens' WorkerPoolPoolArgs (HashMap Text JSONValue)+wppaAddtional+  = lens _wppaAddtional+      (\ s a -> s{_wppaAddtional = a})+      . _Coerce++instance FromJSON WorkerPoolPoolArgs where+        parseJSON+          = withObject "WorkerPoolPoolArgs"+              (\ o -> WorkerPoolPoolArgs <$> (parseJSONObject o))++instance ToJSON WorkerPoolPoolArgs where+        toJSON = toJSON . _wppaAddtional++-- | Identifies the location of a streaming side input.+--+-- /See:/ 'streamingSideInputLocation' smart constructor.+data StreamingSideInputLocation = StreamingSideInputLocation+    { _ssilTag         :: !(Maybe Text)+    , _ssilStateFamily :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'StreamingSideInputLocation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ssilTag'+--+-- * 'ssilStateFamily'+streamingSideInputLocation+    :: StreamingSideInputLocation+streamingSideInputLocation =+    StreamingSideInputLocation+    { _ssilTag = Nothing+    , _ssilStateFamily = Nothing+    }++-- | Identifies the particular side input within the streaming Dataflow job.+ssilTag :: Lens' StreamingSideInputLocation (Maybe Text)+ssilTag = lens _ssilTag (\ s a -> s{_ssilTag = a})++-- | Identifies the state family where this side input is stored.+ssilStateFamily :: Lens' StreamingSideInputLocation (Maybe Text)+ssilStateFamily+  = lens _ssilStateFamily+      (\ s a -> s{_ssilStateFamily = a})++instance FromJSON StreamingSideInputLocation where+        parseJSON+          = withObject "StreamingSideInputLocation"+              (\ o ->+                 StreamingSideInputLocation <$>+                   (o .:? "tag") <*> (o .:? "stateFamily"))++instance ToJSON StreamingSideInputLocation where+        toJSON StreamingSideInputLocation{..}+          = object+              (catMaybes+                 [("tag" .=) <$> _ssilTag,+                  ("stateFamily" .=) <$> _ssilStateFamily])++-- | A task which describes what action should be performed for the specified+-- streaming computation ranges.+--+-- /See:/ 'streamingComputationTask' smart constructor.+data StreamingComputationTask = StreamingComputationTask+    { _sctTaskType          :: !(Maybe Text)+    , _sctDataDisks         :: !(Maybe [MountedDataDisk])+    , _sctComputationRanges :: !(Maybe [StreamingComputationRanges])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'StreamingComputationTask' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sctTaskType'+--+-- * 'sctDataDisks'+--+-- * 'sctComputationRanges'+streamingComputationTask+    :: StreamingComputationTask+streamingComputationTask =+    StreamingComputationTask+    { _sctTaskType = Nothing+    , _sctDataDisks = Nothing+    , _sctComputationRanges = Nothing+    }++-- | A type of streaming computation task.+sctTaskType :: Lens' StreamingComputationTask (Maybe Text)+sctTaskType+  = lens _sctTaskType (\ s a -> s{_sctTaskType = a})++-- | Describes the set of data disks this task should apply to.+sctDataDisks :: Lens' StreamingComputationTask [MountedDataDisk]+sctDataDisks+  = lens _sctDataDisks (\ s a -> s{_sctDataDisks = a})+      . _Default+      . _Coerce++-- | Contains ranges of a streaming computation this task should apply to.+sctComputationRanges :: Lens' StreamingComputationTask [StreamingComputationRanges]+sctComputationRanges+  = lens _sctComputationRanges+      (\ s a -> s{_sctComputationRanges = a})+      . _Default+      . _Coerce++instance FromJSON StreamingComputationTask where+        parseJSON+          = withObject "StreamingComputationTask"+              (\ o ->+                 StreamingComputationTask <$>+                   (o .:? "taskType") <*> (o .:? "dataDisks" .!= mempty)+                     <*> (o .:? "computationRanges" .!= mempty))++instance ToJSON StreamingComputationTask where+        toJSON StreamingComputationTask{..}+          = object+              (catMaybes+                 [("taskType" .=) <$> _sctTaskType,+                  ("dataDisks" .=) <$> _sctDataDisks,+                  ("computationRanges" .=) <$> _sctComputationRanges])++-- | A particular message pertaining to a Dataflow job.+--+-- /See:/ 'jobMessage' smart constructor.+data JobMessage = JobMessage+    { _jmTime              :: !(Maybe Text)+    , _jmMessageText       :: !(Maybe Text)+    , _jmMessageImportance :: !(Maybe Text)+    , _jmId                :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'JobMessage' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'jmTime'+--+-- * 'jmMessageText'+--+-- * 'jmMessageImportance'+--+-- * 'jmId'+jobMessage+    :: JobMessage+jobMessage =+    JobMessage+    { _jmTime = Nothing+    , _jmMessageText = Nothing+    , _jmMessageImportance = Nothing+    , _jmId = Nothing+    }++-- | The timestamp of the message.+jmTime :: Lens' JobMessage (Maybe Text)+jmTime = lens _jmTime (\ s a -> s{_jmTime = a})++-- | The text of the message.+jmMessageText :: Lens' JobMessage (Maybe Text)+jmMessageText+  = lens _jmMessageText+      (\ s a -> s{_jmMessageText = a})++-- | Importance level of the message.+jmMessageImportance :: Lens' JobMessage (Maybe Text)+jmMessageImportance+  = lens _jmMessageImportance+      (\ s a -> s{_jmMessageImportance = a})++-- | Identifies the message. This is automatically generated by the service;+-- the caller should treat it as an opaque string.+jmId :: Lens' JobMessage (Maybe Text)+jmId = lens _jmId (\ s a -> s{_jmId = a})++instance FromJSON JobMessage where+        parseJSON+          = withObject "JobMessage"+              (\ o ->+                 JobMessage <$>+                   (o .:? "time") <*> (o .:? "messageText") <*>+                     (o .:? "messageImportance")+                     <*> (o .:? "id"))++instance ToJSON JobMessage where+        toJSON JobMessage{..}+          = object+              (catMaybes+                 [("time" .=) <$> _jmTime,+                  ("messageText" .=) <$> _jmMessageText,+                  ("messageImportance" .=) <$> _jmMessageImportance,+                  ("id" .=) <$> _jmId])++-- | Information about an output of a SeqMapTask.+--+-- /See:/ 'seqMapTaskOutputInfo' smart constructor.+data SeqMapTaskOutputInfo = SeqMapTaskOutputInfo+    { _smtoiSink :: !(Maybe Sink)+    , _smtoiTag  :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SeqMapTaskOutputInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'smtoiSink'+--+-- * 'smtoiTag'+seqMapTaskOutputInfo+    :: SeqMapTaskOutputInfo+seqMapTaskOutputInfo =+    SeqMapTaskOutputInfo+    { _smtoiSink = Nothing+    , _smtoiTag = Nothing+    }++-- | The sink to write the output value to.+smtoiSink :: Lens' SeqMapTaskOutputInfo (Maybe Sink)+smtoiSink+  = lens _smtoiSink (\ s a -> s{_smtoiSink = a})++-- | The id of the TupleTag the user code will tag the output value by.+smtoiTag :: Lens' SeqMapTaskOutputInfo (Maybe Text)+smtoiTag = lens _smtoiTag (\ s a -> s{_smtoiTag = a})++instance FromJSON SeqMapTaskOutputInfo where+        parseJSON+          = withObject "SeqMapTaskOutputInfo"+              (\ o ->+                 SeqMapTaskOutputInfo <$>+                   (o .:? "sink") <*> (o .:? "tag"))++instance ToJSON SeqMapTaskOutputInfo where+        toJSON SeqMapTaskOutputInfo{..}+          = object+              (catMaybes+                 [("sink" .=) <$> _smtoiSink,+                  ("tag" .=) <$> _smtoiTag])++-- | A request to compute the SourceMetadata of a Source.+--+-- /See:/ 'sourceGetMetadataRequest' smart constructor.+newtype SourceGetMetadataRequest = SourceGetMetadataRequest+    { _sgmrSource :: Maybe Source+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SourceGetMetadataRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sgmrSource'+sourceGetMetadataRequest+    :: SourceGetMetadataRequest+sourceGetMetadataRequest =+    SourceGetMetadataRequest+    { _sgmrSource = Nothing+    }++-- | Specification of the source whose metadata should be computed.+sgmrSource :: Lens' SourceGetMetadataRequest (Maybe Source)+sgmrSource+  = lens _sgmrSource (\ s a -> s{_sgmrSource = a})++instance FromJSON SourceGetMetadataRequest where+        parseJSON+          = withObject "SourceGetMetadataRequest"+              (\ o ->+                 SourceGetMetadataRequest <$> (o .:? "source"))++instance ToJSON SourceGetMetadataRequest where+        toJSON SourceGetMetadataRequest{..}+          = object (catMaybes [("source" .=) <$> _sgmrSource])++-- | The user function to invoke.+--+-- /See:/ 'seqMapTaskUserFn' smart constructor.+newtype SeqMapTaskUserFn = SeqMapTaskUserFn+    { _smtufAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SeqMapTaskUserFn' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'smtufAddtional'+seqMapTaskUserFn+    :: HashMap Text JSONValue -- ^ 'smtufAddtional'+    -> SeqMapTaskUserFn+seqMapTaskUserFn pSmtufAddtional_ =+    SeqMapTaskUserFn+    { _smtufAddtional = _Coerce # pSmtufAddtional_+    }++-- | Properties of the object.+smtufAddtional :: Lens' SeqMapTaskUserFn (HashMap Text JSONValue)+smtufAddtional+  = lens _smtufAddtional+      (\ s a -> s{_smtufAddtional = a})+      . _Coerce++instance FromJSON SeqMapTaskUserFn where+        parseJSON+          = withObject "SeqMapTaskUserFn"+              (\ o -> SeqMapTaskUserFn <$> (parseJSONObject o))++instance ToJSON SeqMapTaskUserFn where+        toJSON = toJSON . _smtufAddtional++-- | The value combining function to invoke.+--+-- /See:/ 'partialGroupByKeyInstructionValueCombiningFn' smart constructor.+newtype PartialGroupByKeyInstructionValueCombiningFn = PartialGroupByKeyInstructionValueCombiningFn+    { _pgbkivcfAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'PartialGroupByKeyInstructionValueCombiningFn' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pgbkivcfAddtional'+partialGroupByKeyInstructionValueCombiningFn+    :: HashMap Text JSONValue -- ^ 'pgbkivcfAddtional'+    -> PartialGroupByKeyInstructionValueCombiningFn+partialGroupByKeyInstructionValueCombiningFn pPgbkivcfAddtional_ =+    PartialGroupByKeyInstructionValueCombiningFn+    { _pgbkivcfAddtional = _Coerce # pPgbkivcfAddtional_+    }++-- | Properties of the object.+pgbkivcfAddtional :: Lens' PartialGroupByKeyInstructionValueCombiningFn (HashMap Text JSONValue)+pgbkivcfAddtional+  = lens _pgbkivcfAddtional+      (\ s a -> s{_pgbkivcfAddtional = a})+      . _Coerce++instance FromJSON+         PartialGroupByKeyInstructionValueCombiningFn where+        parseJSON+          = withObject+              "PartialGroupByKeyInstructionValueCombiningFn"+              (\ o ->+                 PartialGroupByKeyInstructionValueCombiningFn <$>+                   (parseJSONObject o))++instance ToJSON+         PartialGroupByKeyInstructionValueCombiningFn where+        toJSON = toJSON . _pgbkivcfAddtional++-- | Defines a job to be run by the Dataflow service.+--+-- /See:/ 'job' smart constructor.+data Job = Job+    { _jRequestedState       :: !(Maybe Text)+    , _jEnvironment          :: !(Maybe Environment)+    , _jClientRequestId      :: !(Maybe Text)+    , _jCurrentState         :: !(Maybe Text)+    , _jReplacedByJobId      :: !(Maybe Text)+    , _jSteps                :: !(Maybe [Step])+    , _jExecutionInfo        :: !(Maybe JobExecutionInfo)+    , _jName                 :: !(Maybe Text)+    , _jTransformNameMApping :: !(Maybe JobTransformNameMApping)+    , _jId                   :: !(Maybe Text)+    , _jProjectId            :: !(Maybe Text)+    , _jType                 :: !(Maybe Text)+    , _jCurrentStateTime     :: !(Maybe Text)+    , _jReplaceJobId         :: !(Maybe Text)+    , _jCreateTime           :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Job' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'jRequestedState'+--+-- * 'jEnvironment'+--+-- * 'jClientRequestId'+--+-- * 'jCurrentState'+--+-- * 'jReplacedByJobId'+--+-- * 'jSteps'+--+-- * 'jExecutionInfo'+--+-- * 'jName'+--+-- * 'jTransformNameMApping'+--+-- * 'jId'+--+-- * 'jProjectId'+--+-- * 'jType'+--+-- * 'jCurrentStateTime'+--+-- * 'jReplaceJobId'+--+-- * 'jCreateTime'+job+    :: Job+job =+    Job+    { _jRequestedState = Nothing+    , _jEnvironment = Nothing+    , _jClientRequestId = Nothing+    , _jCurrentState = Nothing+    , _jReplacedByJobId = Nothing+    , _jSteps = Nothing+    , _jExecutionInfo = Nothing+    , _jName = Nothing+    , _jTransformNameMApping = Nothing+    , _jId = Nothing+    , _jProjectId = Nothing+    , _jType = Nothing+    , _jCurrentStateTime = Nothing+    , _jReplaceJobId = Nothing+    , _jCreateTime = Nothing+    }++-- | The job\'s requested state. UpdateJob may be used to switch between the+-- JOB_STATE_STOPPED and JOB_STATE_RUNNING states, by setting+-- requested_state. UpdateJob may also be used to directly set a job\'s+-- requested state to JOB_STATE_CANCELLED or JOB_STATE_DONE, irrevocably+-- terminating the job if it has not already reached a terminal state.+jRequestedState :: Lens' Job (Maybe Text)+jRequestedState+  = lens _jRequestedState+      (\ s a -> s{_jRequestedState = a})++-- | Environment for the job.+jEnvironment :: Lens' Job (Maybe Environment)+jEnvironment+  = lens _jEnvironment (\ s a -> s{_jEnvironment = a})++-- | Client\'s unique identifier of the job, re-used by SDK across retried+-- attempts. If this field is set, the service will ensure its uniqueness.+-- That is, the request to create a job will fail if the service has+-- knowledge of a previously submitted job with the same client\'s id and+-- job name. The caller may, for example, use this field to ensure+-- idempotence of job creation across retried attempts to create a job. By+-- default, the field is empty and, in that case, the service ignores it.+jClientRequestId :: Lens' Job (Maybe Text)+jClientRequestId+  = lens _jClientRequestId+      (\ s a -> s{_jClientRequestId = a})++-- | The current state of the job. Jobs are created in the JOB_STATE_STOPPED+-- state unless otherwise specified. A job in the JOB_STATE_RUNNING state+-- may asynchronously enter a terminal state. Once a job has reached a+-- terminal state, no further state updates may be made. This field may be+-- mutated by the Dataflow service; callers cannot mutate it.+jCurrentState :: Lens' Job (Maybe Text)+jCurrentState+  = lens _jCurrentState+      (\ s a -> s{_jCurrentState = a})++-- | If another job is an update of this job (and thus, this job is in+-- JOB_STATE_UPDATED), this field will contain the ID of that job.+jReplacedByJobId :: Lens' Job (Maybe Text)+jReplacedByJobId+  = lens _jReplacedByJobId+      (\ s a -> s{_jReplacedByJobId = a})++-- | The top-level steps that constitute the entire job.+jSteps :: Lens' Job [Step]+jSteps+  = lens _jSteps (\ s a -> s{_jSteps = a}) . _Default .+      _Coerce++-- | Information about how the Dataflow service will actually run the job.+jExecutionInfo :: Lens' Job (Maybe JobExecutionInfo)+jExecutionInfo+  = lens _jExecutionInfo+      (\ s a -> s{_jExecutionInfo = a})++-- | The user-specified Dataflow job name. Only one Job with a given name may+-- exist in a project at any given time. If a caller attempts to create a+-- Job with the same name as an already-existing Job, the attempt will+-- return the existing Job. The name must match the regular expression+-- [a-z]([-a-z0-9]{0,38}[a-z0-9])?+jName :: Lens' Job (Maybe Text)+jName = lens _jName (\ s a -> s{_jName = a})++-- | Map of transform name prefixes of the job to be replaced to the+-- corresponding name prefixes of the new job.+jTransformNameMApping :: Lens' Job (Maybe JobTransformNameMApping)+jTransformNameMApping+  = lens _jTransformNameMApping+      (\ s a -> s{_jTransformNameMApping = a})++-- | The unique ID of this job. This field is set by the Dataflow service+-- when the Job is created, and is immutable for the life of the Job.+jId :: Lens' Job (Maybe Text)+jId = lens _jId (\ s a -> s{_jId = a})++-- | The project which owns the job.+jProjectId :: Lens' Job (Maybe Text)+jProjectId+  = lens _jProjectId (\ s a -> s{_jProjectId = a})++-- | The type of dataflow job.+jType :: Lens' Job (Maybe Text)+jType = lens _jType (\ s a -> s{_jType = a})++-- | The timestamp associated with the current state.+jCurrentStateTime :: Lens' Job (Maybe Text)+jCurrentStateTime+  = lens _jCurrentStateTime+      (\ s a -> s{_jCurrentStateTime = a})++-- | If this job is an update of an existing job, this field will be the ID+-- of the job it replaced. When sending a CreateJobRequest, you can update+-- a job by specifying it here. The job named here will be stopped, and its+-- intermediate state transferred to this job.+jReplaceJobId :: Lens' Job (Maybe Text)+jReplaceJobId+  = lens _jReplaceJobId+      (\ s a -> s{_jReplaceJobId = a})++-- | Timestamp when job was initially created. Immutable, set by the Dataflow+-- service.+jCreateTime :: Lens' Job (Maybe Text)+jCreateTime+  = lens _jCreateTime (\ s a -> s{_jCreateTime = a})++instance FromJSON Job where+        parseJSON+          = withObject "Job"+              (\ o ->+                 Job <$>+                   (o .:? "requestedState") <*> (o .:? "environment")+                     <*> (o .:? "clientRequestId")+                     <*> (o .:? "currentState")+                     <*> (o .:? "replacedByJobId")+                     <*> (o .:? "steps" .!= mempty)+                     <*> (o .:? "executionInfo")+                     <*> (o .:? "name")+                     <*> (o .:? "transformNameMapping")+                     <*> (o .:? "id")+                     <*> (o .:? "projectId")+                     <*> (o .:? "type")+                     <*> (o .:? "currentStateTime")+                     <*> (o .:? "replaceJobId")+                     <*> (o .:? "createTime"))++instance ToJSON Job where+        toJSON Job{..}+          = object+              (catMaybes+                 [("requestedState" .=) <$> _jRequestedState,+                  ("environment" .=) <$> _jEnvironment,+                  ("clientRequestId" .=) <$> _jClientRequestId,+                  ("currentState" .=) <$> _jCurrentState,+                  ("replacedByJobId" .=) <$> _jReplacedByJobId,+                  ("steps" .=) <$> _jSteps,+                  ("executionInfo" .=) <$> _jExecutionInfo,+                  ("name" .=) <$> _jName,+                  ("transformNameMapping" .=) <$>+                    _jTransformNameMApping,+                  ("id" .=) <$> _jId, ("projectId" .=) <$> _jProjectId,+                  ("type" .=) <$> _jType,+                  ("currentStateTime" .=) <$> _jCurrentStateTime,+                  ("replaceJobId" .=) <$> _jReplaceJobId,+                  ("createTime" .=) <$> _jCreateTime])++-- | An instruction that reads records. Takes no inputs, produces one output.+--+-- /See:/ 'readInstruction' smart constructor.+newtype ReadInstruction = ReadInstruction+    { _riSource :: Maybe Source+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ReadInstruction' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'riSource'+readInstruction+    :: ReadInstruction+readInstruction =+    ReadInstruction+    { _riSource = Nothing+    }++-- | The source to read from.+riSource :: Lens' ReadInstruction (Maybe Source)+riSource = lens _riSource (\ s a -> s{_riSource = a})++instance FromJSON ReadInstruction where+        parseJSON+          = withObject "ReadInstruction"+              (\ o -> ReadInstruction <$> (o .:? "source"))++instance ToJSON ReadInstruction where+        toJSON ReadInstruction{..}+          = object (catMaybes [("source" .=) <$> _riSource])++-- | The sink to write to, plus its parameters.+--+-- /See:/ 'sinkSpec' smart constructor.+newtype SinkSpec = SinkSpec+    { _sAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SinkSpec' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sAddtional'+sinkSpec+    :: HashMap Text JSONValue -- ^ 'sAddtional'+    -> SinkSpec+sinkSpec pSAddtional_ =+    SinkSpec+    { _sAddtional = _Coerce # pSAddtional_+    }++-- | Properties of the object.+sAddtional :: Lens' SinkSpec (HashMap Text JSONValue)+sAddtional+  = lens _sAddtional (\ s a -> s{_sAddtional = a}) .+      _Coerce++instance FromJSON SinkSpec where+        parseJSON+          = withObject "SinkSpec"+              (\ o -> SinkSpec <$> (parseJSONObject o))++instance ToJSON SinkSpec where+        toJSON = toJSON . _sAddtional++-- | Describes one particular pool of Dataflow workers to be instantiated by+-- the Dataflow service in order to perform the computations required by a+-- job. Note that a workflow job may use multiple pools, in order to match+-- the various computational requirements of the various stages of the job.+--+-- /See:/ 'workerPool' smart constructor.+data WorkerPool = WorkerPool+    { _wpAutoscalingSettings :: !(Maybe AutoscalingSettings)+    , _wpDiskSizeGb          :: !(Maybe (Textual Int32))+    , _wpKind                :: !(Maybe Text)+    , _wpTaskrunnerSettings  :: !(Maybe TaskRunnerSettings)+    , _wpNumWorkers          :: !(Maybe (Textual Int32))+    , _wpNetwork             :: !(Maybe Text)+    , _wpZone                :: !(Maybe Text)+    , _wpPackages            :: !(Maybe [Package])+    , _wpOnHostMaintenance   :: !(Maybe Text)+    , _wpDiskSourceImage     :: !(Maybe Text)+    , _wpMachineType         :: !(Maybe Text)+    , _wpMetadata            :: !(Maybe WorkerPoolMetadata)+    , _wpDiskType            :: !(Maybe Text)+    , _wpTeardownPolicy      :: !(Maybe Text)+    , _wpDefaultPackageSet   :: !(Maybe Text)+    , _wpPoolArgs            :: !(Maybe WorkerPoolPoolArgs)+    , _wpDataDisks           :: !(Maybe [Disk])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'WorkerPool' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'wpAutoscalingSettings'+--+-- * 'wpDiskSizeGb'+--+-- * 'wpKind'+--+-- * 'wpTaskrunnerSettings'+--+-- * 'wpNumWorkers'+--+-- * 'wpNetwork'+--+-- * 'wpZone'+--+-- * 'wpPackages'+--+-- * 'wpOnHostMaintenance'+--+-- * 'wpDiskSourceImage'+--+-- * 'wpMachineType'+--+-- * 'wpMetadata'+--+-- * 'wpDiskType'+--+-- * 'wpTeardownPolicy'+--+-- * 'wpDefaultPackageSet'+--+-- * 'wpPoolArgs'+--+-- * 'wpDataDisks'+workerPool+    :: WorkerPool+workerPool =+    WorkerPool+    { _wpAutoscalingSettings = Nothing+    , _wpDiskSizeGb = Nothing+    , _wpKind = Nothing+    , _wpTaskrunnerSettings = Nothing+    , _wpNumWorkers = Nothing+    , _wpNetwork = Nothing+    , _wpZone = Nothing+    , _wpPackages = Nothing+    , _wpOnHostMaintenance = Nothing+    , _wpDiskSourceImage = Nothing+    , _wpMachineType = Nothing+    , _wpMetadata = Nothing+    , _wpDiskType = Nothing+    , _wpTeardownPolicy = Nothing+    , _wpDefaultPackageSet = Nothing+    , _wpPoolArgs = Nothing+    , _wpDataDisks = Nothing+    }++-- | Settings for autoscaling of this WorkerPool.+wpAutoscalingSettings :: Lens' WorkerPool (Maybe AutoscalingSettings)+wpAutoscalingSettings+  = lens _wpAutoscalingSettings+      (\ s a -> s{_wpAutoscalingSettings = a})++-- | Size of root disk for VMs, in GB. If zero or unspecified, the service+-- will attempt to choose a reasonable default.+wpDiskSizeGb :: Lens' WorkerPool (Maybe Int32)+wpDiskSizeGb+  = lens _wpDiskSizeGb (\ s a -> s{_wpDiskSizeGb = a})+      . mapping _Coerce++-- | The kind of the worker pool; currently only \'harness\' and \'shuffle\'+-- are supported.+wpKind :: Lens' WorkerPool (Maybe Text)+wpKind = lens _wpKind (\ s a -> s{_wpKind = a})++-- | Settings passed through to Google Compute Engine workers when using the+-- standard Dataflow task runner. Users should ignore this field.+wpTaskrunnerSettings :: Lens' WorkerPool (Maybe TaskRunnerSettings)+wpTaskrunnerSettings+  = lens _wpTaskrunnerSettings+      (\ s a -> s{_wpTaskrunnerSettings = a})++-- | Number of Google Compute Engine workers in this pool needed to execute+-- the job. If zero or unspecified, the service will attempt to choose a+-- reasonable default.+wpNumWorkers :: Lens' WorkerPool (Maybe Int32)+wpNumWorkers+  = lens _wpNumWorkers (\ s a -> s{_wpNumWorkers = a})+      . mapping _Coerce++-- | Network to which VMs will be assigned. If empty or unspecified, the+-- service will use the network \"default\".+wpNetwork :: Lens' WorkerPool (Maybe Text)+wpNetwork+  = lens _wpNetwork (\ s a -> s{_wpNetwork = a})++-- | Zone to run the worker pools in (e.g. \"us-central1-b\"). If empty or+-- unspecified, the service will attempt to choose a reasonable default.+wpZone :: Lens' WorkerPool (Maybe Text)+wpZone = lens _wpZone (\ s a -> s{_wpZone = a})++-- | Packages to be installed on workers.+wpPackages :: Lens' WorkerPool [Package]+wpPackages+  = lens _wpPackages (\ s a -> s{_wpPackages = a}) .+      _Default+      . _Coerce++-- | The action to take on host maintenance, as defined by the Google Compute+-- Engine API.+wpOnHostMaintenance :: Lens' WorkerPool (Maybe Text)+wpOnHostMaintenance+  = lens _wpOnHostMaintenance+      (\ s a -> s{_wpOnHostMaintenance = a})++-- | Fully qualified source image for disks.+wpDiskSourceImage :: Lens' WorkerPool (Maybe Text)+wpDiskSourceImage+  = lens _wpDiskSourceImage+      (\ s a -> s{_wpDiskSourceImage = a})++-- | Machine type (e.g. \"n1-standard-1\"). If empty or unspecified, the+-- service will attempt to choose a reasonable default.+wpMachineType :: Lens' WorkerPool (Maybe Text)+wpMachineType+  = lens _wpMachineType+      (\ s a -> s{_wpMachineType = a})++-- | Metadata to set on the Google Compute Engine VMs.+wpMetadata :: Lens' WorkerPool (Maybe WorkerPoolMetadata)+wpMetadata+  = lens _wpMetadata (\ s a -> s{_wpMetadata = a})++-- | Type of root disk for VMs. If empty or unspecified, the service will+-- attempt to choose a reasonable default.+wpDiskType :: Lens' WorkerPool (Maybe Text)+wpDiskType+  = lens _wpDiskType (\ s a -> s{_wpDiskType = a})++-- | Sets the policy for determining when to turndown worker pool. Allowed+-- values are: TEARDOWN_ALWAYS, TEARDOWN_ON_SUCCESS, and TEARDOWN_NEVER.+-- TEARDOWN_ALWAYS means workers are always torn down regardless of whether+-- the job succeeds. TEARDOWN_ON_SUCCESS means workers are torn down if the+-- job succeeds. TEARDOWN_NEVER means the workers are never torn down. If+-- the workers are not torn down by the service, they will continue to run+-- and use Google Compute Engine VM resources in the user\'s project until+-- they are explicitly terminated by the user. Because of this, Google+-- recommends using the TEARDOWN_ALWAYS policy except for small, manually+-- supervised test jobs. If unknown or unspecified, the service will+-- attempt to choose a reasonable default.+wpTeardownPolicy :: Lens' WorkerPool (Maybe Text)+wpTeardownPolicy+  = lens _wpTeardownPolicy+      (\ s a -> s{_wpTeardownPolicy = a})++-- | The default package set to install. This allows the service to select a+-- default set of packages which are useful to worker harnesses written in+-- a particular language.+wpDefaultPackageSet :: Lens' WorkerPool (Maybe Text)+wpDefaultPackageSet+  = lens _wpDefaultPackageSet+      (\ s a -> s{_wpDefaultPackageSet = a})++-- | Extra arguments for this worker pool.+wpPoolArgs :: Lens' WorkerPool (Maybe WorkerPoolPoolArgs)+wpPoolArgs+  = lens _wpPoolArgs (\ s a -> s{_wpPoolArgs = a})++-- | Data disks that are used by a VM in this workflow.+wpDataDisks :: Lens' WorkerPool [Disk]+wpDataDisks+  = lens _wpDataDisks (\ s a -> s{_wpDataDisks = a}) .+      _Default+      . _Coerce++instance FromJSON WorkerPool where+        parseJSON+          = withObject "WorkerPool"+              (\ o ->+                 WorkerPool <$>+                   (o .:? "autoscalingSettings") <*>+                     (o .:? "diskSizeGb")+                     <*> (o .:? "kind")+                     <*> (o .:? "taskrunnerSettings")+                     <*> (o .:? "numWorkers")+                     <*> (o .:? "network")+                     <*> (o .:? "zone")+                     <*> (o .:? "packages" .!= mempty)+                     <*> (o .:? "onHostMaintenance")+                     <*> (o .:? "diskSourceImage")+                     <*> (o .:? "machineType")+                     <*> (o .:? "metadata")+                     <*> (o .:? "diskType")+                     <*> (o .:? "teardownPolicy")+                     <*> (o .:? "defaultPackageSet")+                     <*> (o .:? "poolArgs")+                     <*> (o .:? "dataDisks" .!= mempty))++instance ToJSON WorkerPool where+        toJSON WorkerPool{..}+          = object+              (catMaybes+                 [("autoscalingSettings" .=) <$>+                    _wpAutoscalingSettings,+                  ("diskSizeGb" .=) <$> _wpDiskSizeGb,+                  ("kind" .=) <$> _wpKind,+                  ("taskrunnerSettings" .=) <$> _wpTaskrunnerSettings,+                  ("numWorkers" .=) <$> _wpNumWorkers,+                  ("network" .=) <$> _wpNetwork,+                  ("zone" .=) <$> _wpZone,+                  ("packages" .=) <$> _wpPackages,+                  ("onHostMaintenance" .=) <$> _wpOnHostMaintenance,+                  ("diskSourceImage" .=) <$> _wpDiskSourceImage,+                  ("machineType" .=) <$> _wpMachineType,+                  ("metadata" .=) <$> _wpMetadata,+                  ("diskType" .=) <$> _wpDiskType,+                  ("teardownPolicy" .=) <$> _wpTeardownPolicy,+                  ("defaultPackageSet" .=) <$> _wpDefaultPackageSet,+                  ("poolArgs" .=) <$> _wpPoolArgs,+                  ("dataDisks" .=) <$> _wpDataDisks])++-- | Defines a particular step within a Dataflow job. A job consists of+-- multiple steps, each of which performs some specific operation as part+-- of the overall job. Data is typically passed from one step to another as+-- part of the job. Here\'s an example of a sequence of steps which+-- together implement a Map-Reduce job: * Read a collection of data from+-- some source, parsing the collection\'s elements. * Validate the+-- elements. * Apply a user-defined function to map each element to some+-- value and extract an element-specific key value. * Group elements with+-- the same key into a single element with that key, transforming a+-- multiply-keyed collection into a uniquely-keyed collection. * Write the+-- elements out to some data sink. (Note that the Dataflow service may be+-- used to run many different types of jobs, not just Map-Reduce).+--+-- /See:/ 'step' smart constructor.+data Step = Step+    { _sKind       :: !(Maybe Text)+    , _sName       :: !(Maybe Text)+    , _sProperties :: !(Maybe StepProperties)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Step' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sKind'+--+-- * 'sName'+--+-- * 'sProperties'+step+    :: Step+step =+    Step+    { _sKind = Nothing+    , _sName = Nothing+    , _sProperties = Nothing+    }++-- | The kind of step in the dataflow Job.+sKind :: Lens' Step (Maybe Text)+sKind = lens _sKind (\ s a -> s{_sKind = a})++-- | Name identifying the step. This must be unique for each step with+-- respect to all other steps in the dataflow Job.+sName :: Lens' Step (Maybe Text)+sName = lens _sName (\ s a -> s{_sName = a})++-- | Named properties associated with the step. Each kind of predefined step+-- has its own required set of properties.+sProperties :: Lens' Step (Maybe StepProperties)+sProperties+  = lens _sProperties (\ s a -> s{_sProperties = a})++instance FromJSON Step where+        parseJSON+          = withObject "Step"+              (\ o ->+                 Step <$>+                   (o .:? "kind") <*> (o .:? "name") <*>+                     (o .:? "properties"))++instance ToJSON Step where+        toJSON Step{..}+          = object+              (catMaybes+                 [("kind" .=) <$> _sKind, ("name" .=) <$> _sName,+                  ("properties" .=) <$> _sProperties])++-- | Packages that need to be installed in order for a worker to run the+-- steps of the Dataflow job which will be assigned to its worker pool.+-- This is the mechanism by which the SDK causes code to be loaded onto the+-- workers. For example, the Dataflow Java SDK might use this to install+-- jars containing the user\'s code and all of the various dependencies+-- (libraries, data files, etc) required in order for that code to run.+--+-- /See:/ 'package' smart constructor.+data Package = Package+    { _pLocation :: !(Maybe Text)+    , _pName     :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Package' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pLocation'+--+-- * 'pName'+package+    :: Package+package =+    Package+    { _pLocation = Nothing+    , _pName = Nothing+    }++-- | The resource to read the package from. The supported resource type is:+-- Google Cloud Storage: storage.googleapis.com\/{bucket}+-- bucket.storage.googleapis.com\/+pLocation :: Lens' Package (Maybe Text)+pLocation+  = lens _pLocation (\ s a -> s{_pLocation = a})++-- | The name of the package.+pName :: Lens' Package (Maybe Text)+pName = lens _pName (\ s a -> s{_pName = a})++instance FromJSON Package where+        parseJSON+          = withObject "Package"+              (\ o ->+                 Package <$> (o .:? "location") <*> (o .:? "name"))++instance ToJSON Package where+        toJSON Package{..}+          = object+              (catMaybes+                 [("location" .=) <$> _pLocation,+                  ("name" .=) <$> _pName])++-- | When a task splits using WorkItemStatus.dynamic_source_split, this+-- message describes the two parts of the split relative to the description+-- of the current task\'s input.+--+-- /See:/ 'dynamicSourceSplit' smart constructor.+data DynamicSourceSplit = DynamicSourceSplit+    { _dssResidual :: !(Maybe DerivedSource)+    , _dssPrimary  :: !(Maybe DerivedSource)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DynamicSourceSplit' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dssResidual'+--+-- * 'dssPrimary'+dynamicSourceSplit+    :: DynamicSourceSplit+dynamicSourceSplit =+    DynamicSourceSplit+    { _dssResidual = Nothing+    , _dssPrimary = Nothing+    }++-- | Residual part (returned to the pool of work). Specified relative to the+-- previously-current source.+dssResidual :: Lens' DynamicSourceSplit (Maybe DerivedSource)+dssResidual+  = lens _dssResidual (\ s a -> s{_dssResidual = a})++-- | Primary part (continued to be processed by worker). Specified relative+-- to the previously-current source. Becomes current.+dssPrimary :: Lens' DynamicSourceSplit (Maybe DerivedSource)+dssPrimary+  = lens _dssPrimary (\ s a -> s{_dssPrimary = a})++instance FromJSON DynamicSourceSplit where+        parseJSON+          = withObject "DynamicSourceSplit"+              (\ o ->+                 DynamicSourceSplit <$>+                   (o .:? "residual") <*> (o .:? "primary"))++instance ToJSON DynamicSourceSplit where+        toJSON DynamicSourceSplit{..}+          = object+              (catMaybes+                 [("residual" .=) <$> _dssResidual,+                  ("primary" .=) <$> _dssPrimary])++-- | Response from a request to report the status of WorkItems.+--+-- /See:/ 'reportWorkItemStatusResponse' smart constructor.+newtype ReportWorkItemStatusResponse = ReportWorkItemStatusResponse+    { _rwisrWorkItemServiceStates :: Maybe [WorkItemServiceState]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ReportWorkItemStatusResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rwisrWorkItemServiceStates'+reportWorkItemStatusResponse+    :: ReportWorkItemStatusResponse+reportWorkItemStatusResponse =+    ReportWorkItemStatusResponse+    { _rwisrWorkItemServiceStates = Nothing+    }++-- | A set of messages indicating the service-side state for each WorkItem+-- whose status was reported, in the same order as the WorkItemStatus+-- messages in the ReportWorkItemStatusRequest which resulting in this+-- response.+rwisrWorkItemServiceStates :: Lens' ReportWorkItemStatusResponse [WorkItemServiceState]+rwisrWorkItemServiceStates+  = lens _rwisrWorkItemServiceStates+      (\ s a -> s{_rwisrWorkItemServiceStates = a})+      . _Default+      . _Coerce++instance FromJSON ReportWorkItemStatusResponse where+        parseJSON+          = withObject "ReportWorkItemStatusResponse"+              (\ o ->+                 ReportWorkItemStatusResponse <$>+                   (o .:? "workItemServiceStates" .!= mempty))++instance ToJSON ReportWorkItemStatusResponse where+        toJSON ReportWorkItemStatusResponse{..}+          = object+              (catMaybes+                 [("workItemServiceStates" .=) <$>+                    _rwisrWorkItemServiceStates])++-- | DEPRECATED in favor of DynamicSourceSplit.+--+-- /See:/ 'sourceFork' smart constructor.+data SourceFork = SourceFork+    { _sfResidual       :: !(Maybe SourceSplitShard)+    , _sfPrimarySource  :: !(Maybe DerivedSource)+    , _sfPrimary        :: !(Maybe SourceSplitShard)+    , _sfResidualSource :: !(Maybe DerivedSource)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SourceFork' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sfResidual'+--+-- * 'sfPrimarySource'+--+-- * 'sfPrimary'+--+-- * 'sfResidualSource'+sourceFork+    :: SourceFork+sourceFork =+    SourceFork+    { _sfResidual = Nothing+    , _sfPrimarySource = Nothing+    , _sfPrimary = Nothing+    , _sfResidualSource = Nothing+    }++-- | DEPRECATED+sfResidual :: Lens' SourceFork (Maybe SourceSplitShard)+sfResidual+  = lens _sfResidual (\ s a -> s{_sfResidual = a})++-- | DEPRECATED+sfPrimarySource :: Lens' SourceFork (Maybe DerivedSource)+sfPrimarySource+  = lens _sfPrimarySource+      (\ s a -> s{_sfPrimarySource = a})++-- | DEPRECATED+sfPrimary :: Lens' SourceFork (Maybe SourceSplitShard)+sfPrimary+  = lens _sfPrimary (\ s a -> s{_sfPrimary = a})++-- | DEPRECATED+sfResidualSource :: Lens' SourceFork (Maybe DerivedSource)+sfResidualSource+  = lens _sfResidualSource+      (\ s a -> s{_sfResidualSource = a})++instance FromJSON SourceFork where+        parseJSON+          = withObject "SourceFork"+              (\ o ->+                 SourceFork <$>+                   (o .:? "residual") <*> (o .:? "primarySource") <*>+                     (o .:? "primary")+                     <*> (o .:? "residualSource"))++instance ToJSON SourceFork where+        toJSON SourceFork{..}+          = object+              (catMaybes+                 [("residual" .=) <$> _sfResidual,+                  ("primarySource" .=) <$> _sfPrimarySource,+                  ("primary" .=) <$> _sfPrimary,+                  ("residualSource" .=) <$> _sfResidualSource])++-- | Describes full or partial data disk assignment information of the+-- computation ranges.+--+-- /See:/ 'streamingComputationRanges' smart constructor.+data StreamingComputationRanges = StreamingComputationRanges+    { _scrRangeAssignments :: !(Maybe [KeyRangeDataDiskAssignment])+    , _scrComputationId    :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'StreamingComputationRanges' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'scrRangeAssignments'+--+-- * 'scrComputationId'+streamingComputationRanges+    :: StreamingComputationRanges+streamingComputationRanges =+    StreamingComputationRanges+    { _scrRangeAssignments = Nothing+    , _scrComputationId = Nothing+    }++-- | Data disk assignments for ranges from this computation.+scrRangeAssignments :: Lens' StreamingComputationRanges [KeyRangeDataDiskAssignment]+scrRangeAssignments+  = lens _scrRangeAssignments+      (\ s a -> s{_scrRangeAssignments = a})+      . _Default+      . _Coerce++-- | The ID of the computation.+scrComputationId :: Lens' StreamingComputationRanges (Maybe Text)+scrComputationId+  = lens _scrComputationId+      (\ s a -> s{_scrComputationId = a})++instance FromJSON StreamingComputationRanges where+        parseJSON+          = withObject "StreamingComputationRanges"+              (\ o ->+                 StreamingComputationRanges <$>+                   (o .:? "rangeAssignments" .!= mempty) <*>+                     (o .:? "computationId"))++instance ToJSON StreamingComputationRanges where+        toJSON StreamingComputationRanges{..}+          = object+              (catMaybes+                 [("rangeAssignments" .=) <$> _scrRangeAssignments,+                  ("computationId" .=) <$> _scrComputationId])++-- | Response to a request to list Dataflow jobs. This may be a partial+-- response, depending on the page size in the ListJobsRequest.+--+-- /See:/ 'listJobsResponse' smart constructor.+data ListJobsResponse = ListJobsResponse+    { _ljrNextPageToken :: !(Maybe Text)+    , _ljrJobs          :: !(Maybe [Job])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ListJobsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ljrNextPageToken'+--+-- * 'ljrJobs'+listJobsResponse+    :: ListJobsResponse+listJobsResponse =+    ListJobsResponse+    { _ljrNextPageToken = Nothing+    , _ljrJobs = Nothing+    }++-- | Set if there may be more results than fit in this response.+ljrNextPageToken :: Lens' ListJobsResponse (Maybe Text)+ljrNextPageToken+  = lens _ljrNextPageToken+      (\ s a -> s{_ljrNextPageToken = a})++-- | A subset of the requested job information.+ljrJobs :: Lens' ListJobsResponse [Job]+ljrJobs+  = lens _ljrJobs (\ s a -> s{_ljrJobs = a}) . _Default+      . _Coerce++instance FromJSON ListJobsResponse where+        parseJSON+          = withObject "ListJobsResponse"+              (\ o ->+                 ListJobsResponse <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "jobs" .!= mempty))++instance ToJSON ListJobsResponse where+        toJSON ListJobsResponse{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _ljrNextPageToken,+                  ("jobs" .=) <$> _ljrJobs])++-- | A source that records can be read and decoded from.+--+-- /See:/ 'source' smart constructor.+data Source = Source+    { _souDoesNotNeedSplitting :: !(Maybe Bool)+    , _souBaseSpecs            :: !(Maybe [SourceBaseSpecsItem])+    , _souCodec                :: !(Maybe SourceCodec)+    , _souSpec                 :: !(Maybe SourceSpec)+    , _souMetadata             :: !(Maybe SourceMetadata)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Source' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'souDoesNotNeedSplitting'+--+-- * 'souBaseSpecs'+--+-- * 'souCodec'+--+-- * 'souSpec'+--+-- * 'souMetadata'+source+    :: Source+source =+    Source+    { _souDoesNotNeedSplitting = Nothing+    , _souBaseSpecs = Nothing+    , _souCodec = Nothing+    , _souSpec = Nothing+    , _souMetadata = Nothing+    }++-- | Setting this value to true hints to the framework that the source+-- doesn\'t need splitting, and using SourceSplitRequest on it would yield+-- SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to+-- true when splitting a single file into a set of byte ranges of+-- appropriate size, and set this to false when splitting a filepattern+-- into individual files. However, for efficiency, a file splitter may+-- decide to produce file subranges directly from the filepattern to avoid+-- a splitting round-trip. See SourceSplitRequest for an overview of the+-- splitting process. This field is meaningful only in the Source objects+-- populated by the user (e.g. when filling in a DerivedSource). Source+-- objects supplied by the framework to the user don\'t have this field+-- populated.+souDoesNotNeedSplitting :: Lens' Source (Maybe Bool)+souDoesNotNeedSplitting+  = lens _souDoesNotNeedSplitting+      (\ s a -> s{_souDoesNotNeedSplitting = a})++-- | While splitting, sources may specify the produced bundles as differences+-- against another source, in order to save backend-side memory and allow+-- bigger jobs. For details, see SourceSplitRequest. To support this use+-- case, the full set of parameters of the source is logically obtained by+-- taking the latest explicitly specified value of each parameter in the+-- order: base_specs (later items win), spec (overrides anything in+-- base_specs).+souBaseSpecs :: Lens' Source [SourceBaseSpecsItem]+souBaseSpecs+  = lens _souBaseSpecs (\ s a -> s{_souBaseSpecs = a})+      . _Default+      . _Coerce++-- | The codec to use to decode data read from the source.+souCodec :: Lens' Source (Maybe SourceCodec)+souCodec = lens _souCodec (\ s a -> s{_souCodec = a})++-- | The source to read from, plus its parameters.+souSpec :: Lens' Source (Maybe SourceSpec)+souSpec = lens _souSpec (\ s a -> s{_souSpec = a})++-- | Optionally, metadata for this source can be supplied right away,+-- avoiding a SourceGetMetadataOperation roundtrip (see+-- SourceOperationRequest). This field is meaningful only in the Source+-- objects populated by the user (e.g. when filling in a DerivedSource).+-- Source objects supplied by the framework to the user don\'t have this+-- field populated.+souMetadata :: Lens' Source (Maybe SourceMetadata)+souMetadata+  = lens _souMetadata (\ s a -> s{_souMetadata = a})++instance FromJSON Source where+        parseJSON+          = withObject "Source"+              (\ o ->+                 Source <$>+                   (o .:? "doesNotNeedSplitting") <*>+                     (o .:? "baseSpecs" .!= mempty)+                     <*> (o .:? "codec")+                     <*> (o .:? "spec")+                     <*> (o .:? "metadata"))++instance ToJSON Source where+        toJSON Source{..}+          = object+              (catMaybes+                 [("doesNotNeedSplitting" .=) <$>+                    _souDoesNotNeedSplitting,+                  ("baseSpecs" .=) <$> _souBaseSpecs,+                  ("codec" .=) <$> _souCodec, ("spec" .=) <$> _souSpec,+                  ("metadata" .=) <$> _souMetadata])++-- | A progress measurement of a WorkItem by a worker.+--+-- /See:/ 'approximateProgress' smart constructor.+data ApproximateProgress = ApproximateProgress+    { _apRemainingTime   :: !(Maybe Text)+    , _apPercentComplete :: !(Maybe (Textual Double))+    , _apPosition        :: !(Maybe Position)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ApproximateProgress' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'apRemainingTime'+--+-- * 'apPercentComplete'+--+-- * 'apPosition'+approximateProgress+    :: ApproximateProgress+approximateProgress =+    ApproximateProgress+    { _apRemainingTime = Nothing+    , _apPercentComplete = Nothing+    , _apPosition = Nothing+    }++-- | Completion as an estimated time remaining.+apRemainingTime :: Lens' ApproximateProgress (Maybe Text)+apRemainingTime+  = lens _apRemainingTime+      (\ s a -> s{_apRemainingTime = a})++-- | Completion as percentage of the work, from 0.0 (beginning, nothing+-- complete), to 1.0 (end of the work range, entire WorkItem complete).+apPercentComplete :: Lens' ApproximateProgress (Maybe Double)+apPercentComplete+  = lens _apPercentComplete+      (\ s a -> s{_apPercentComplete = a})+      . mapping _Coerce++-- | A Position within the work to represent a progress.+apPosition :: Lens' ApproximateProgress (Maybe Position)+apPosition+  = lens _apPosition (\ s a -> s{_apPosition = a})++instance FromJSON ApproximateProgress where+        parseJSON+          = withObject "ApproximateProgress"+              (\ o ->+                 ApproximateProgress <$>+                   (o .:? "remainingTime") <*> (o .:? "percentComplete")+                     <*> (o .:? "position"))++instance ToJSON ApproximateProgress where+        toJSON ApproximateProgress{..}+          = object+              (catMaybes+                 [("remainingTime" .=) <$> _apRemainingTime,+                  ("percentComplete" .=) <$> _apPercentComplete,+                  ("position" .=) <$> _apPosition])++-- | Location information for a specific key-range of a sharded computation.+-- Currently we only support UTF-8 character splits to simplify encoding+-- into JSON.+--+-- /See:/ 'keyRangeLocation' smart constructor.+data KeyRangeLocation = KeyRangeLocation+    { _krlPersistentDirectory :: !(Maybe Text)+    , _krlDataDisk            :: !(Maybe Text)+    , _krlStart               :: !(Maybe Text)+    , _krlDeliveryEndpoint    :: !(Maybe Text)+    , _krlEnd                 :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'KeyRangeLocation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'krlPersistentDirectory'+--+-- * 'krlDataDisk'+--+-- * 'krlStart'+--+-- * 'krlDeliveryEndpoint'+--+-- * 'krlEnd'+keyRangeLocation+    :: KeyRangeLocation+keyRangeLocation =+    KeyRangeLocation+    { _krlPersistentDirectory = Nothing+    , _krlDataDisk = Nothing+    , _krlStart = Nothing+    , _krlDeliveryEndpoint = Nothing+    , _krlEnd = Nothing+    }++-- | The location of the persistent state for this range, as a persistent+-- directory in the worker local filesystem.+krlPersistentDirectory :: Lens' KeyRangeLocation (Maybe Text)+krlPersistentDirectory+  = lens _krlPersistentDirectory+      (\ s a -> s{_krlPersistentDirectory = a})++-- | The name of the data disk where data for this range is stored. This name+-- is local to the Google Cloud Platform project and uniquely identifies+-- the disk within that project, for example+-- \"myproject-1014-104817-4c2-harness-0-disk-1\".+krlDataDisk :: Lens' KeyRangeLocation (Maybe Text)+krlDataDisk+  = lens _krlDataDisk (\ s a -> s{_krlDataDisk = a})++-- | The start (inclusive) of the key range.+krlStart :: Lens' KeyRangeLocation (Maybe Text)+krlStart = lens _krlStart (\ s a -> s{_krlStart = a})++-- | The physical location of this range assignment to be used for streaming+-- computation cross-worker message delivery.+krlDeliveryEndpoint :: Lens' KeyRangeLocation (Maybe Text)+krlDeliveryEndpoint+  = lens _krlDeliveryEndpoint+      (\ s a -> s{_krlDeliveryEndpoint = a})++-- | The end (exclusive) of the key range.+krlEnd :: Lens' KeyRangeLocation (Maybe Text)+krlEnd = lens _krlEnd (\ s a -> s{_krlEnd = a})++instance FromJSON KeyRangeLocation where+        parseJSON+          = withObject "KeyRangeLocation"+              (\ o ->+                 KeyRangeLocation <$>+                   (o .:? "persistentDirectory") <*> (o .:? "dataDisk")+                     <*> (o .:? "start")+                     <*> (o .:? "deliveryEndpoint")+                     <*> (o .:? "end"))++instance ToJSON KeyRangeLocation where+        toJSON KeyRangeLocation{..}+          = object+              (catMaybes+                 [("persistentDirectory" .=) <$>+                    _krlPersistentDirectory,+                  ("dataDisk" .=) <$> _krlDataDisk,+                  ("start" .=) <$> _krlStart,+                  ("deliveryEndpoint" .=) <$> _krlDeliveryEndpoint,+                  ("end" .=) <$> _krlEnd])++-- | Information about an output of a multi-output DoFn.+--+-- /See:/ 'multiOutputInfo' smart constructor.+newtype MultiOutputInfo = MultiOutputInfo+    { _moiTag :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MultiOutputInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'moiTag'+multiOutputInfo+    :: MultiOutputInfo+multiOutputInfo =+    MultiOutputInfo+    { _moiTag = Nothing+    }++-- | The id of the tag the user code will emit to this output by; this should+-- correspond to the tag of some SideInputInfo.+moiTag :: Lens' MultiOutputInfo (Maybe Text)+moiTag = lens _moiTag (\ s a -> s{_moiTag = a})++instance FromJSON MultiOutputInfo where+        parseJSON+          = withObject "MultiOutputInfo"+              (\ o -> MultiOutputInfo <$> (o .:? "tag"))++instance ToJSON MultiOutputInfo where+        toJSON MultiOutputInfo{..}+          = object (catMaybes [("tag" .=) <$> _moiTag])++-- | An instruction that does a partial group-by-key. One input and one+-- output.+--+-- /See:/ 'partialGroupByKeyInstruction' smart constructor.+data PartialGroupByKeyInstruction = PartialGroupByKeyInstruction+    { _pgbkiValueCombiningFn  :: !(Maybe PartialGroupByKeyInstructionValueCombiningFn)+    , _pgbkiInput             :: !(Maybe InstructionInput)+    , _pgbkiInputElementCodec :: !(Maybe PartialGroupByKeyInstructionInputElementCodec)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'PartialGroupByKeyInstruction' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pgbkiValueCombiningFn'+--+-- * 'pgbkiInput'+--+-- * 'pgbkiInputElementCodec'+partialGroupByKeyInstruction+    :: PartialGroupByKeyInstruction+partialGroupByKeyInstruction =+    PartialGroupByKeyInstruction+    { _pgbkiValueCombiningFn = Nothing+    , _pgbkiInput = Nothing+    , _pgbkiInputElementCodec = Nothing+    }++-- | The value combining function to invoke.+pgbkiValueCombiningFn :: Lens' PartialGroupByKeyInstruction (Maybe PartialGroupByKeyInstructionValueCombiningFn)+pgbkiValueCombiningFn+  = lens _pgbkiValueCombiningFn+      (\ s a -> s{_pgbkiValueCombiningFn = a})++-- | Describes the input to the partial group-by-key instruction.+pgbkiInput :: Lens' PartialGroupByKeyInstruction (Maybe InstructionInput)+pgbkiInput+  = lens _pgbkiInput (\ s a -> s{_pgbkiInput = a})++-- | The codec to use for interpreting an element in the input PTable.+pgbkiInputElementCodec :: Lens' PartialGroupByKeyInstruction (Maybe PartialGroupByKeyInstructionInputElementCodec)+pgbkiInputElementCodec+  = lens _pgbkiInputElementCodec+      (\ s a -> s{_pgbkiInputElementCodec = a})++instance FromJSON PartialGroupByKeyInstruction where+        parseJSON+          = withObject "PartialGroupByKeyInstruction"+              (\ o ->+                 PartialGroupByKeyInstruction <$>+                   (o .:? "valueCombiningFn") <*> (o .:? "input") <*>+                     (o .:? "inputElementCodec"))++instance ToJSON PartialGroupByKeyInstruction where+        toJSON PartialGroupByKeyInstruction{..}+          = object+              (catMaybes+                 [("valueCombiningFn" .=) <$> _pgbkiValueCombiningFn,+                  ("input" .=) <$> _pgbkiInput,+                  ("inputElementCodec" .=) <$>+                    _pgbkiInputElementCodec])++-- | An instruction that does a ParDo operation. Takes one main input and+-- zero or more side inputs, and produces zero or more outputs. Runs user+-- code.+--+-- /See:/ 'parDoInstruction' smart constructor.+data ParDoInstruction = ParDoInstruction+    { _pdiNumOutputs       :: !(Maybe (Textual Int32))+    , _pdiMultiOutputInfos :: !(Maybe [MultiOutputInfo])+    , _pdiSideInputs       :: !(Maybe [SideInputInfo])+    , _pdiInput            :: !(Maybe InstructionInput)+    , _pdiUserFn           :: !(Maybe ParDoInstructionUserFn)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ParDoInstruction' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pdiNumOutputs'+--+-- * 'pdiMultiOutputInfos'+--+-- * 'pdiSideInputs'+--+-- * 'pdiInput'+--+-- * 'pdiUserFn'+parDoInstruction+    :: ParDoInstruction+parDoInstruction =+    ParDoInstruction+    { _pdiNumOutputs = Nothing+    , _pdiMultiOutputInfos = Nothing+    , _pdiSideInputs = Nothing+    , _pdiInput = Nothing+    , _pdiUserFn = Nothing+    }++-- | The number of outputs.+pdiNumOutputs :: Lens' ParDoInstruction (Maybe Int32)+pdiNumOutputs+  = lens _pdiNumOutputs+      (\ s a -> s{_pdiNumOutputs = a})+      . mapping _Coerce++-- | Information about each of the outputs, if user_fn is a MultiDoFn.+pdiMultiOutputInfos :: Lens' ParDoInstruction [MultiOutputInfo]+pdiMultiOutputInfos+  = lens _pdiMultiOutputInfos+      (\ s a -> s{_pdiMultiOutputInfos = a})+      . _Default+      . _Coerce++-- | Zero or more side inputs.+pdiSideInputs :: Lens' ParDoInstruction [SideInputInfo]+pdiSideInputs+  = lens _pdiSideInputs+      (\ s a -> s{_pdiSideInputs = a})+      . _Default+      . _Coerce++-- | The input.+pdiInput :: Lens' ParDoInstruction (Maybe InstructionInput)+pdiInput = lens _pdiInput (\ s a -> s{_pdiInput = a})++-- | The user function to invoke.+pdiUserFn :: Lens' ParDoInstruction (Maybe ParDoInstructionUserFn)+pdiUserFn+  = lens _pdiUserFn (\ s a -> s{_pdiUserFn = a})++instance FromJSON ParDoInstruction where+        parseJSON+          = withObject "ParDoInstruction"+              (\ o ->+                 ParDoInstruction <$>+                   (o .:? "numOutputs") <*>+                     (o .:? "multiOutputInfos" .!= mempty)+                     <*> (o .:? "sideInputs" .!= mempty)+                     <*> (o .:? "input")+                     <*> (o .:? "userFn"))++instance ToJSON ParDoInstruction where+        toJSON ParDoInstruction{..}+          = object+              (catMaybes+                 [("numOutputs" .=) <$> _pdiNumOutputs,+                  ("multiOutputInfos" .=) <$> _pdiMultiOutputInfos,+                  ("sideInputs" .=) <$> _pdiSideInputs,+                  ("input" .=) <$> _pdiInput,+                  ("userFn" .=) <$> _pdiUserFn])++-- | Identifies the location of a custom souce.+--+-- /See:/ 'customSourceLocation' smart constructor.+newtype CustomSourceLocation = CustomSourceLocation+    { _cslStateful :: Maybe Bool+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'CustomSourceLocation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cslStateful'+customSourceLocation+    :: CustomSourceLocation+customSourceLocation =+    CustomSourceLocation+    { _cslStateful = Nothing+    }++-- | Whether this source is stateful.+cslStateful :: Lens' CustomSourceLocation (Maybe Bool)+cslStateful+  = lens _cslStateful (\ s a -> s{_cslStateful = a})++instance FromJSON CustomSourceLocation where+        parseJSON+          = withObject "CustomSourceLocation"+              (\ o -> CustomSourceLocation <$> (o .:? "stateful"))++instance ToJSON CustomSourceLocation where+        toJSON CustomSourceLocation{..}+          = object+              (catMaybes [("stateful" .=) <$> _cslStateful])++--+-- /See:/ 'sourceBaseSpecsItem' smart constructor.+newtype SourceBaseSpecsItem = SourceBaseSpecsItem+    { _sbsiAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SourceBaseSpecsItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sbsiAddtional'+sourceBaseSpecsItem+    :: HashMap Text JSONValue -- ^ 'sbsiAddtional'+    -> SourceBaseSpecsItem+sourceBaseSpecsItem pSbsiAddtional_ =+    SourceBaseSpecsItem+    { _sbsiAddtional = _Coerce # pSbsiAddtional_+    }++-- | Properties of the object.+sbsiAddtional :: Lens' SourceBaseSpecsItem (HashMap Text JSONValue)+sbsiAddtional+  = lens _sbsiAddtional+      (\ s a -> s{_sbsiAddtional = a})+      . _Coerce++instance FromJSON SourceBaseSpecsItem where+        parseJSON+          = withObject "SourceBaseSpecsItem"+              (\ o -> SourceBaseSpecsItem <$> (parseJSONObject o))++instance ToJSON SourceBaseSpecsItem where+        toJSON = toJSON . _sbsiAddtional++-- | Describes a particular operation comprising a MapTask.+--+-- /See:/ 'parallelInstruction' smart constructor.+data ParallelInstruction = ParallelInstruction+    { _piRead              :: !(Maybe ReadInstruction)+    , _piWrite             :: !(Maybe WriteInstruction)+    , _piParDo             :: !(Maybe ParDoInstruction)+    , _piPartialGroupByKey :: !(Maybe PartialGroupByKeyInstruction)+    , _piOutputs           :: !(Maybe [InstructionOutput])+    , _piName              :: !(Maybe Text)+    , _piSystemName        :: !(Maybe Text)+    , _piFlatten           :: !(Maybe FlattenInstruction)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ParallelInstruction' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'piRead'+--+-- * 'piWrite'+--+-- * 'piParDo'+--+-- * 'piPartialGroupByKey'+--+-- * 'piOutputs'+--+-- * 'piName'+--+-- * 'piSystemName'+--+-- * 'piFlatten'+parallelInstruction+    :: ParallelInstruction+parallelInstruction =+    ParallelInstruction+    { _piRead = Nothing+    , _piWrite = Nothing+    , _piParDo = Nothing+    , _piPartialGroupByKey = Nothing+    , _piOutputs = Nothing+    , _piName = Nothing+    , _piSystemName = Nothing+    , _piFlatten = Nothing+    }++-- | Additional information for Read instructions.+piRead :: Lens' ParallelInstruction (Maybe ReadInstruction)+piRead = lens _piRead (\ s a -> s{_piRead = a})++-- | Additional information for Write instructions.+piWrite :: Lens' ParallelInstruction (Maybe WriteInstruction)+piWrite = lens _piWrite (\ s a -> s{_piWrite = a})++-- | Additional information for ParDo instructions.+piParDo :: Lens' ParallelInstruction (Maybe ParDoInstruction)+piParDo = lens _piParDo (\ s a -> s{_piParDo = a})++-- | Additional information for PartialGroupByKey instructions.+piPartialGroupByKey :: Lens' ParallelInstruction (Maybe PartialGroupByKeyInstruction)+piPartialGroupByKey+  = lens _piPartialGroupByKey+      (\ s a -> s{_piPartialGroupByKey = a})++-- | Describes the outputs of the instruction.+piOutputs :: Lens' ParallelInstruction [InstructionOutput]+piOutputs+  = lens _piOutputs (\ s a -> s{_piOutputs = a}) .+      _Default+      . _Coerce++-- | User-provided name of this operation.+piName :: Lens' ParallelInstruction (Maybe Text)+piName = lens _piName (\ s a -> s{_piName = a})++-- | System-defined name of this operation. Unique across the workflow.+piSystemName :: Lens' ParallelInstruction (Maybe Text)+piSystemName+  = lens _piSystemName (\ s a -> s{_piSystemName = a})++-- | Additional information for Flatten instructions.+piFlatten :: Lens' ParallelInstruction (Maybe FlattenInstruction)+piFlatten+  = lens _piFlatten (\ s a -> s{_piFlatten = a})++instance FromJSON ParallelInstruction where+        parseJSON+          = withObject "ParallelInstruction"+              (\ o ->+                 ParallelInstruction <$>+                   (o .:? "read") <*> (o .:? "write") <*>+                     (o .:? "parDo")+                     <*> (o .:? "partialGroupByKey")+                     <*> (o .:? "outputs" .!= mempty)+                     <*> (o .:? "name")+                     <*> (o .:? "systemName")+                     <*> (o .:? "flatten"))++instance ToJSON ParallelInstruction where+        toJSON ParallelInstruction{..}+          = object+              (catMaybes+                 [("read" .=) <$> _piRead, ("write" .=) <$> _piWrite,+                  ("parDo" .=) <$> _piParDo,+                  ("partialGroupByKey" .=) <$> _piPartialGroupByKey,+                  ("outputs" .=) <$> _piOutputs,+                  ("name" .=) <$> _piName,+                  ("systemName" .=) <$> _piSystemName,+                  ("flatten" .=) <$> _piFlatten])++-- | How to interpret the source element(s) as a side input value.+--+-- /See:/ 'sideInputInfoKind' smart constructor.+newtype SideInputInfoKind = SideInputInfoKind+    { _siikAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SideInputInfoKind' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'siikAddtional'+sideInputInfoKind+    :: HashMap Text JSONValue -- ^ 'siikAddtional'+    -> SideInputInfoKind+sideInputInfoKind pSiikAddtional_ =+    SideInputInfoKind+    { _siikAddtional = _Coerce # pSiikAddtional_+    }++-- | Properties of the object.+siikAddtional :: Lens' SideInputInfoKind (HashMap Text JSONValue)+siikAddtional+  = lens _siikAddtional+      (\ s a -> s{_siikAddtional = a})+      . _Coerce++instance FromJSON SideInputInfoKind where+        parseJSON+          = withObject "SideInputInfoKind"+              (\ o -> SideInputInfoKind <$> (parseJSONObject o))++instance ToJSON SideInputInfoKind where+        toJSON = toJSON . _siikAddtional++-- | DEPRECATED in favor of DerivedSource.+--+-- /See:/ 'sourceSplitShard' smart constructor.+data SourceSplitShard = SourceSplitShard+    { _sssDerivationMode :: !(Maybe Text)+    , _sssSource         :: !(Maybe Source)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SourceSplitShard' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sssDerivationMode'+--+-- * 'sssSource'+sourceSplitShard+    :: SourceSplitShard+sourceSplitShard =+    SourceSplitShard+    { _sssDerivationMode = Nothing+    , _sssSource = Nothing+    }++-- | DEPRECATED+sssDerivationMode :: Lens' SourceSplitShard (Maybe Text)+sssDerivationMode+  = lens _sssDerivationMode+      (\ s a -> s{_sssDerivationMode = a})++-- | DEPRECATED+sssSource :: Lens' SourceSplitShard (Maybe Source)+sssSource+  = lens _sssSource (\ s a -> s{_sssSource = a})++instance FromJSON SourceSplitShard where+        parseJSON+          = withObject "SourceSplitShard"+              (\ o ->+                 SourceSplitShard <$>+                   (o .:? "derivationMode") <*> (o .:? "source"))++instance ToJSON SourceSplitShard where+        toJSON SourceSplitShard{..}+          = object+              (catMaybes+                 [("derivationMode" .=) <$> _sssDerivationMode,+                  ("source" .=) <$> _sssSource])++-- | Information about a side input of a DoFn or an input of a SeqDoFn.+--+-- /See:/ 'sideInputInfo' smart constructor.+data SideInputInfo = SideInputInfo+    { _siiTag     :: !(Maybe Text)+    , _siiKind    :: !(Maybe SideInputInfoKind)+    , _siiSources :: !(Maybe [Source])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SideInputInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'siiTag'+--+-- * 'siiKind'+--+-- * 'siiSources'+sideInputInfo+    :: SideInputInfo+sideInputInfo =+    SideInputInfo+    { _siiTag = Nothing+    , _siiKind = Nothing+    , _siiSources = Nothing+    }++-- | The id of the tag the user code will access this side input by; this+-- should correspond to the tag of some MultiOutputInfo.+siiTag :: Lens' SideInputInfo (Maybe Text)+siiTag = lens _siiTag (\ s a -> s{_siiTag = a})++-- | How to interpret the source element(s) as a side input value.+siiKind :: Lens' SideInputInfo (Maybe SideInputInfoKind)+siiKind = lens _siiKind (\ s a -> s{_siiKind = a})++-- | The source(s) to read element(s) from to get the value of this side+-- input. If more than one source, then the elements are taken from the+-- sources, in the specified order if order matters. At least one source is+-- required.+siiSources :: Lens' SideInputInfo [Source]+siiSources+  = lens _siiSources (\ s a -> s{_siiSources = a}) .+      _Default+      . _Coerce++instance FromJSON SideInputInfo where+        parseJSON+          = withObject "SideInputInfo"+              (\ o ->+                 SideInputInfo <$>+                   (o .:? "tag") <*> (o .:? "kind") <*>+                     (o .:? "sources" .!= mempty))++instance ToJSON SideInputInfo where+        toJSON SideInputInfo{..}+          = object+              (catMaybes+                 [("tag" .=) <$> _siiTag, ("kind" .=) <$> _siiKind,+                  ("sources" .=) <$> _siiSources])++-- | Additional information about how a Dataflow job will be executed which+-- isn’t contained in the submitted job.+--+-- /See:/ 'jobExecutionInfo' smart constructor.+newtype JobExecutionInfo = JobExecutionInfo+    { _jeiStages :: Maybe JobExecutionInfoStages+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'JobExecutionInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'jeiStages'+jobExecutionInfo+    :: JobExecutionInfo+jobExecutionInfo =+    JobExecutionInfo+    { _jeiStages = Nothing+    }++-- | A mapping from each stage to the information about that stage.+jeiStages :: Lens' JobExecutionInfo (Maybe JobExecutionInfoStages)+jeiStages+  = lens _jeiStages (\ s a -> s{_jeiStages = a})++instance FromJSON JobExecutionInfo where+        parseJSON+          = withObject "JobExecutionInfo"+              (\ o -> JobExecutionInfo <$> (o .:? "stages"))++instance ToJSON JobExecutionInfo where+        toJSON JobExecutionInfo{..}+          = object (catMaybes [("stages" .=) <$> _jeiStages])++-- | The codec to use to decode data read from the source.+--+-- /See:/ 'sourceCodec' smart constructor.+newtype SourceCodec = SourceCodec+    { _souAddtional :: HashMap Text JSONValue+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SourceCodec' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'souAddtional'+sourceCodec+    :: HashMap Text JSONValue -- ^ 'souAddtional'+    -> SourceCodec+sourceCodec pSouAddtional_ =+    SourceCodec+    { _souAddtional = _Coerce # pSouAddtional_+    }++-- | Properties of the object.+souAddtional :: Lens' SourceCodec (HashMap Text JSONValue)+souAddtional+  = lens _souAddtional (\ s a -> s{_souAddtional = a})+      . _Coerce++instance FromJSON SourceCodec where+        parseJSON+          = withObject "SourceCodec"+              (\ o -> SourceCodec <$> (parseJSONObject o))++instance ToJSON SourceCodec where+        toJSON = toJSON . _souAddtional++-- | State family configuration.+--+-- /See:/ 'stateFamilyConfig' smart constructor.+data StateFamilyConfig = StateFamilyConfig+    { _sfcIsRead      :: !(Maybe Bool)+    , _sfcStateFamily :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'StateFamilyConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sfcIsRead'+--+-- * 'sfcStateFamily'+stateFamilyConfig+    :: StateFamilyConfig+stateFamilyConfig =+    StateFamilyConfig+    { _sfcIsRead = Nothing+    , _sfcStateFamily = Nothing+    }++-- | If true, this family corresponds to a read operation.+sfcIsRead :: Lens' StateFamilyConfig (Maybe Bool)+sfcIsRead+  = lens _sfcIsRead (\ s a -> s{_sfcIsRead = a})++-- | The state family value.+sfcStateFamily :: Lens' StateFamilyConfig (Maybe Text)+sfcStateFamily+  = lens _sfcStateFamily+      (\ s a -> s{_sfcStateFamily = a})++instance FromJSON StateFamilyConfig where+        parseJSON+          = withObject "StateFamilyConfig"+              (\ o ->+                 StateFamilyConfig <$>+                   (o .:? "isRead") <*> (o .:? "stateFamily"))++instance ToJSON StateFamilyConfig where+        toJSON StateFamilyConfig{..}+          = object+              (catMaybes+                 [("isRead" .=) <$> _sfcIsRead,+                  ("stateFamily" .=) <$> _sfcStateFamily])++-- | Data disk assignment information for a specific key-range of a sharded+-- computation. Currently we only support UTF-8 character splits to+-- simplify encoding into JSON.+--+-- /See:/ 'keyRangeDataDiskAssignment' smart constructor.+data KeyRangeDataDiskAssignment = KeyRangeDataDiskAssignment+    { _krddaDataDisk :: !(Maybe Text)+    , _krddaStart    :: !(Maybe Text)+    , _krddaEnd      :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'KeyRangeDataDiskAssignment' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'krddaDataDisk'+--+-- * 'krddaStart'+--+-- * 'krddaEnd'+keyRangeDataDiskAssignment+    :: KeyRangeDataDiskAssignment+keyRangeDataDiskAssignment =+    KeyRangeDataDiskAssignment+    { _krddaDataDisk = Nothing+    , _krddaStart = Nothing+    , _krddaEnd = Nothing+    }++-- | The name of the data disk where data for this range is stored. This name+-- is local to the Google Cloud Platform project and uniquely identifies+-- the disk within that project, for example+-- \"myproject-1014-104817-4c2-harness-0-disk-1\".+krddaDataDisk :: Lens' KeyRangeDataDiskAssignment (Maybe Text)+krddaDataDisk+  = lens _krddaDataDisk+      (\ s a -> s{_krddaDataDisk = a})++-- | The start (inclusive) of the key range.+krddaStart :: Lens' KeyRangeDataDiskAssignment (Maybe Text)+krddaStart+  = lens _krddaStart (\ s a -> s{_krddaStart = a})++-- | The end (exclusive) of the key range.+krddaEnd :: Lens' KeyRangeDataDiskAssignment (Maybe Text)+krddaEnd = lens _krddaEnd (\ s a -> s{_krddaEnd = a})++instance FromJSON KeyRangeDataDiskAssignment where+        parseJSON+          = withObject "KeyRangeDataDiskAssignment"+              (\ o ->+                 KeyRangeDataDiskAssignment <$>+                   (o .:? "dataDisk") <*> (o .:? "start") <*>+                     (o .:? "end"))++instance ToJSON KeyRangeDataDiskAssignment where+        toJSON KeyRangeDataDiskAssignment{..}+          = object+              (catMaybes+                 [("dataDisk" .=) <$> _krddaDataDisk,+                  ("start" .=) <$> _krddaStart,+                  ("end" .=) <$> _krddaEnd])++-- | Represents the operation to split a high-level Source specification into+-- bundles (parts for parallel processing). At a high level, splitting of a+-- source into bundles happens as follows: SourceSplitRequest is applied to+-- the source. If it returns SOURCE_SPLIT_OUTCOME_USE_CURRENT, no further+-- splitting happens and the source is used \"as is\". Otherwise, splitting+-- is applied recursively to each produced DerivedSource. As an+-- optimization, for any Source, if its does_not_need_splitting is true,+-- the framework assumes that splitting this source would return+-- SOURCE_SPLIT_OUTCOME_USE_CURRENT, and doesn\'t initiate a+-- SourceSplitRequest. This applies both to the initial source being split+-- and to bundles produced from it.+--+-- /See:/ 'sourceSplitRequest' smart constructor.+data SourceSplitRequest = SourceSplitRequest+    { _ssrSource  :: !(Maybe Source)+    , _ssrOptions :: !(Maybe SourceSplitOptions)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SourceSplitRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ssrSource'+--+-- * 'ssrOptions'+sourceSplitRequest+    :: SourceSplitRequest+sourceSplitRequest =+    SourceSplitRequest+    { _ssrSource = Nothing+    , _ssrOptions = Nothing+    }++-- | Specification of the source to be split.+ssrSource :: Lens' SourceSplitRequest (Maybe Source)+ssrSource+  = lens _ssrSource (\ s a -> s{_ssrSource = a})++-- | Hints for tuning the splitting process.+ssrOptions :: Lens' SourceSplitRequest (Maybe SourceSplitOptions)+ssrOptions+  = lens _ssrOptions (\ s a -> s{_ssrOptions = a})++instance FromJSON SourceSplitRequest where+        parseJSON+          = withObject "SourceSplitRequest"+              (\ o ->+                 SourceSplitRequest <$>+                   (o .:? "source") <*> (o .:? "options"))++instance ToJSON SourceSplitRequest where+        toJSON SourceSplitRequest{..}+          = object+              (catMaybes+                 [("source" .=) <$> _ssrSource,+                  ("options" .=) <$> _ssrOptions])++-- | Response to a request to list job messages.+--+-- /See:/ 'listJobMessagesResponse' smart constructor.+data ListJobMessagesResponse = ListJobMessagesResponse+    { _ljmrJobMessages   :: !(Maybe [JobMessage])+    , _ljmrNextPageToken :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ListJobMessagesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ljmrJobMessages'+--+-- * 'ljmrNextPageToken'+listJobMessagesResponse+    :: ListJobMessagesResponse+listJobMessagesResponse =+    ListJobMessagesResponse+    { _ljmrJobMessages = Nothing+    , _ljmrNextPageToken = Nothing+    }++-- | Messages in ascending timestamp order.+ljmrJobMessages :: Lens' ListJobMessagesResponse [JobMessage]+ljmrJobMessages+  = lens _ljmrJobMessages+      (\ s a -> s{_ljmrJobMessages = a})+      . _Default+      . _Coerce++-- | The token to obtain the next page of results if there are more.+ljmrNextPageToken :: Lens' ListJobMessagesResponse (Maybe Text)+ljmrNextPageToken+  = lens _ljmrNextPageToken+      (\ s a -> s{_ljmrNextPageToken = a})++instance FromJSON ListJobMessagesResponse where+        parseJSON+          = withObject "ListJobMessagesResponse"+              (\ o ->+                 ListJobMessagesResponse <$>+                   (o .:? "jobMessages" .!= mempty) <*>+                     (o .:? "nextPageToken"))++instance ToJSON ListJobMessagesResponse where+        toJSON ListJobMessagesResponse{..}+          = object+              (catMaybes+                 [("jobMessages" .=) <$> _ljmrJobMessages,+                  ("nextPageToken" .=) <$> _ljmrNextPageToken])++-- | Identifies a pubsub location to use for transferring data into or out of+-- a streaming Dataflow job.+--+-- /See:/ 'pubsubLocation' smart constructor.+data PubsubLocation = PubsubLocation+    { _plTrackingSubscription :: !(Maybe Text)+    , _plDropLateData         :: !(Maybe Bool)+    , _plTimestampLabel       :: !(Maybe Text)+    , _plIdLabel              :: !(Maybe Text)+    , _plTopic                :: !(Maybe Text)+    , _plSubscription         :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'PubsubLocation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'plTrackingSubscription'+--+-- * 'plDropLateData'+--+-- * 'plTimestampLabel'+--+-- * 'plIdLabel'+--+-- * 'plTopic'+--+-- * 'plSubscription'+pubsubLocation+    :: PubsubLocation+pubsubLocation =+    PubsubLocation+    { _plTrackingSubscription = Nothing+    , _plDropLateData = Nothing+    , _plTimestampLabel = Nothing+    , _plIdLabel = Nothing+    , _plTopic = Nothing+    , _plSubscription = Nothing+    }++-- | If set, specifies the pubsub subscription that will be used for tracking+-- custom time timestamps for watermark estimation.+plTrackingSubscription :: Lens' PubsubLocation (Maybe Text)+plTrackingSubscription+  = lens _plTrackingSubscription+      (\ s a -> s{_plTrackingSubscription = a})++-- | Indicates whether the pipeline allows late-arriving data.+plDropLateData :: Lens' PubsubLocation (Maybe Bool)+plDropLateData+  = lens _plDropLateData+      (\ s a -> s{_plDropLateData = a})++-- | If set, contains a pubsub label from which to extract record timestamps.+-- If left empty, record timestamps will be generated upon arrival.+plTimestampLabel :: Lens' PubsubLocation (Maybe Text)+plTimestampLabel+  = lens _plTimestampLabel+      (\ s a -> s{_plTimestampLabel = a})++-- | If set, contains a pubsub label from which to extract record ids. If+-- left empty, record deduplication will be strictly best effort.+plIdLabel :: Lens' PubsubLocation (Maybe Text)+plIdLabel+  = lens _plIdLabel (\ s a -> s{_plIdLabel = a})++-- | A pubsub topic, in the form of \"pubsub.googleapis.com\/topics\/ \/\"+plTopic :: Lens' PubsubLocation (Maybe Text)+plTopic = lens _plTopic (\ s a -> s{_plTopic = a})++-- | A pubsub subscription, in the form of+-- \"pubsub.googleapis.com\/subscriptions\/ \/\"+plSubscription :: Lens' PubsubLocation (Maybe Text)+plSubscription+  = lens _plSubscription+      (\ s a -> s{_plSubscription = a})++instance FromJSON PubsubLocation where+        parseJSON+          = withObject "PubsubLocation"+              (\ o ->+                 PubsubLocation <$>+                   (o .:? "trackingSubscription") <*>+                     (o .:? "dropLateData")+                     <*> (o .:? "timestampLabel")+                     <*> (o .:? "idLabel")+                     <*> (o .:? "topic")+                     <*> (o .:? "subscription"))++instance ToJSON PubsubLocation where+        toJSON PubsubLocation{..}+          = object+              (catMaybes+                 [("trackingSubscription" .=) <$>+                    _plTrackingSubscription,+                  ("dropLateData" .=) <$> _plDropLateData,+                  ("timestampLabel" .=) <$> _plTimestampLabel,+                  ("idLabel" .=) <$> _plIdLabel,+                  ("topic" .=) <$> _plTopic,+                  ("subscription" .=) <$> _plSubscription])++-- | An input of an instruction, as a reference to an output of a producer+-- instruction.+--+-- /See:/ 'instructionInput' smart constructor.+data InstructionInput = InstructionInput+    { _iiProducerInstructionIndex :: !(Maybe (Textual Int32))+    , _iiOutputNum                :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstructionInput' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'iiProducerInstructionIndex'+--+-- * 'iiOutputNum'+instructionInput+    :: InstructionInput+instructionInput =+    InstructionInput+    { _iiProducerInstructionIndex = Nothing+    , _iiOutputNum = Nothing+    }++-- | The index (origin zero) of the parallel instruction that produces the+-- output to be consumed by this input. This index is relative to the list+-- of instructions in this input\'s instruction\'s containing MapTask.+iiProducerInstructionIndex :: Lens' InstructionInput (Maybe Int32)+iiProducerInstructionIndex+  = lens _iiProducerInstructionIndex+      (\ s a -> s{_iiProducerInstructionIndex = a})+      . mapping _Coerce++-- | The output index (origin zero) within the producer.+iiOutputNum :: Lens' InstructionInput (Maybe Int32)+iiOutputNum+  = lens _iiOutputNum (\ s a -> s{_iiOutputNum = a}) .+      mapping _Coerce++instance FromJSON InstructionInput where+        parseJSON+          = withObject "InstructionInput"+              (\ o ->+                 InstructionInput <$>+                   (o .:? "producerInstructionIndex") <*>+                     (o .:? "outputNum"))++instance ToJSON InstructionInput where+        toJSON InstructionInput{..}+          = object+              (catMaybes+                 [("producerInstructionIndex" .=) <$>+                    _iiProducerInstructionIndex,+                  ("outputNum" .=) <$> _iiOutputNum])++-- | Describes a particular function to invoke.+--+-- /See:/ 'seqMapTask' smart constructor.+data SeqMapTask = SeqMapTask+    { _smtInputs      :: !(Maybe [SideInputInfo])+    , _smtName        :: !(Maybe Text)+    , _smtOutputInfos :: !(Maybe [SeqMapTaskOutputInfo])+    , _smtSystemName  :: !(Maybe Text)+    , _smtStageName   :: !(Maybe Text)+    , _smtUserFn      :: !(Maybe SeqMapTaskUserFn)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SeqMapTask' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'smtInputs'+--+-- * 'smtName'+--+-- * 'smtOutputInfos'+--+-- * 'smtSystemName'+--+-- * 'smtStageName'+--+-- * 'smtUserFn'+seqMapTask+    :: SeqMapTask+seqMapTask =+    SeqMapTask+    { _smtInputs = Nothing+    , _smtName = Nothing+    , _smtOutputInfos = Nothing+    , _smtSystemName = Nothing+    , _smtStageName = Nothing+    , _smtUserFn = Nothing+    }++-- | Information about each of the inputs.+smtInputs :: Lens' SeqMapTask [SideInputInfo]+smtInputs+  = lens _smtInputs (\ s a -> s{_smtInputs = a}) .+      _Default+      . _Coerce++-- | The user-provided name of the SeqDo operation.+smtName :: Lens' SeqMapTask (Maybe Text)+smtName = lens _smtName (\ s a -> s{_smtName = a})++-- | Information about each of the outputs.+smtOutputInfos :: Lens' SeqMapTask [SeqMapTaskOutputInfo]+smtOutputInfos+  = lens _smtOutputInfos+      (\ s a -> s{_smtOutputInfos = a})+      . _Default+      . _Coerce++-- | System-defined name of the SeqDo operation. Unique across the workflow.+smtSystemName :: Lens' SeqMapTask (Maybe Text)+smtSystemName+  = lens _smtSystemName+      (\ s a -> s{_smtSystemName = a})++-- | System-defined name of the stage containing the SeqDo operation. Unique+-- across the workflow.+smtStageName :: Lens' SeqMapTask (Maybe Text)+smtStageName+  = lens _smtStageName (\ s a -> s{_smtStageName = a})++-- | The user function to invoke.+smtUserFn :: Lens' SeqMapTask (Maybe SeqMapTaskUserFn)+smtUserFn+  = lens _smtUserFn (\ s a -> s{_smtUserFn = a})++instance FromJSON SeqMapTask where+        parseJSON+          = withObject "SeqMapTask"+              (\ o ->+                 SeqMapTask <$>+                   (o .:? "inputs" .!= mempty) <*> (o .:? "name") <*>+                     (o .:? "outputInfos" .!= mempty)+                     <*> (o .:? "systemName")+                     <*> (o .:? "stageName")+                     <*> (o .:? "userFn"))++instance ToJSON SeqMapTask where+        toJSON SeqMapTask{..}+          = object+              (catMaybes+                 [("inputs" .=) <$> _smtInputs,+                  ("name" .=) <$> _smtName,+                  ("outputInfos" .=) <$> _smtOutputInfos,+                  ("systemName" .=) <$> _smtSystemName,+                  ("stageName" .=) <$> _smtStageName,+                  ("userFn" .=) <$> _smtUserFn])++-- | A work item that represents the different operations that can be+-- performed on a user-defined Source specification.+--+-- /See:/ 'sourceOperationRequest' smart constructor.+data SourceOperationRequest = SourceOperationRequest+    { _sSplit       :: !(Maybe SourceSplitRequest)+    , _sGetMetadata :: !(Maybe SourceGetMetadataRequest)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SourceOperationRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sSplit'+--+-- * 'sGetMetadata'+sourceOperationRequest+    :: SourceOperationRequest+sourceOperationRequest =+    SourceOperationRequest+    { _sSplit = Nothing+    , _sGetMetadata = Nothing+    }++-- | Information about a request to split a source.+sSplit :: Lens' SourceOperationRequest (Maybe SourceSplitRequest)+sSplit = lens _sSplit (\ s a -> s{_sSplit = a})++-- | Information about a request to get metadata about a source.+sGetMetadata :: Lens' SourceOperationRequest (Maybe SourceGetMetadataRequest)+sGetMetadata+  = lens _sGetMetadata (\ s a -> s{_sGetMetadata = a})++instance FromJSON SourceOperationRequest where+        parseJSON+          = withObject "SourceOperationRequest"+              (\ o ->+                 SourceOperationRequest <$>+                   (o .:? "split") <*> (o .:? "getMetadata"))++instance ToJSON SourceOperationRequest where+        toJSON SourceOperationRequest{..}+          = object+              (catMaybes+                 [("split" .=) <$> _sSplit,+                  ("getMetadata" .=) <$> _sGetMetadata])++-- | Response to a request to lease WorkItems.+--+-- /See:/ 'leaseWorkItemResponse' smart constructor.+newtype LeaseWorkItemResponse = LeaseWorkItemResponse+    { _lwirWorkItems :: Maybe [WorkItem]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'LeaseWorkItemResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lwirWorkItems'+leaseWorkItemResponse+    :: LeaseWorkItemResponse+leaseWorkItemResponse =+    LeaseWorkItemResponse+    { _lwirWorkItems = Nothing+    }++-- | A list of the leased WorkItems.+lwirWorkItems :: Lens' LeaseWorkItemResponse [WorkItem]+lwirWorkItems+  = lens _lwirWorkItems+      (\ s a -> s{_lwirWorkItems = a})+      . _Default+      . _Coerce++instance FromJSON LeaseWorkItemResponse where+        parseJSON+          = withObject "LeaseWorkItemResponse"+              (\ o ->+                 LeaseWorkItemResponse <$>+                   (o .:? "workItems" .!= mempty))++instance ToJSON LeaseWorkItemResponse where+        toJSON LeaseWorkItemResponse{..}+          = object+              (catMaybes [("workItems" .=) <$> _lwirWorkItems])++-- | Position defines a position within a collection of data. The value can+-- be either the end position, a key (used with ordered collections), a+-- byte offset, or a record index.+--+-- /See:/ 'position' smart constructor.+data Position = Position+    { _pByteOffSet      :: !(Maybe (Textual Int64))+    , _pConcatPosition  :: !(Maybe ConcatPosition)+    , _pRecordIndex     :: !(Maybe (Textual Int64))+    , _pShufflePosition :: !(Maybe Text)+    , _pKey             :: !(Maybe Text)+    , _pEnd             :: !(Maybe Bool)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Position' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pByteOffSet'+--+-- * 'pConcatPosition'+--+-- * 'pRecordIndex'+--+-- * 'pShufflePosition'+--+-- * 'pKey'+--+-- * 'pEnd'+position+    :: Position+position =+    Position+    { _pByteOffSet = Nothing+    , _pConcatPosition = Nothing+    , _pRecordIndex = Nothing+    , _pShufflePosition = Nothing+    , _pKey = Nothing+    , _pEnd = Nothing+    }++-- | Position is a byte offset.+pByteOffSet :: Lens' Position (Maybe Int64)+pByteOffSet+  = lens _pByteOffSet (\ s a -> s{_pByteOffSet = a}) .+      mapping _Coerce++-- | CloudPosition is a concat position.+pConcatPosition :: Lens' Position (Maybe ConcatPosition)+pConcatPosition+  = lens _pConcatPosition+      (\ s a -> s{_pConcatPosition = a})++-- | Position is a record index.+pRecordIndex :: Lens' Position (Maybe Int64)+pRecordIndex+  = lens _pRecordIndex (\ s a -> s{_pRecordIndex = a})+      . mapping _Coerce++-- | CloudPosition is a base64 encoded BatchShufflePosition (with FIXED+-- sharding).+pShufflePosition :: Lens' Position (Maybe Text)+pShufflePosition+  = lens _pShufflePosition+      (\ s a -> s{_pShufflePosition = a})++-- | Position is a string key, ordered lexicographically.+pKey :: Lens' Position (Maybe Text)+pKey = lens _pKey (\ s a -> s{_pKey = a})++-- | Position is past all other positions. Also useful for the end position+-- of an unbounded range.+pEnd :: Lens' Position (Maybe Bool)+pEnd = lens _pEnd (\ s a -> s{_pEnd = a})++instance FromJSON Position where+        parseJSON+          = withObject "Position"+              (\ o ->+                 Position <$>+                   (o .:? "byteOffset") <*> (o .:? "concatPosition") <*>+                     (o .:? "recordIndex")+                     <*> (o .:? "shufflePosition")+                     <*> (o .:? "key")+                     <*> (o .:? "end"))++instance ToJSON Position where+        toJSON Position{..}+          = object+              (catMaybes+                 [("byteOffset" .=) <$> _pByteOffSet,+                  ("concatPosition" .=) <$> _pConcatPosition,+                  ("recordIndex" .=) <$> _pRecordIndex,+                  ("shufflePosition" .=) <$> _pShufflePosition,+                  ("key" .=) <$> _pKey, ("end" .=) <$> _pEnd])
+ gen/Network/Google/Dataflow/Types/Sum.hs view
@@ -0,0 +1,19 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE LambdaCase         #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Network.Google.Dataflow.Types.Sum+-- Copyright   : (c) 2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Network.Google.Dataflow.Types.Sum where++import           Network.Google.Prelude
+ gen/Network/Google/Resource/Dataflow/Projects/Jobs/Create.hs view
@@ -0,0 +1,206 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Dataflow.Projects.Jobs.Create+-- Copyright   : (c) 2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a dataflow job.+--+-- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.jobs.create@.+module Network.Google.Resource.Dataflow.Projects.Jobs.Create+    (+    -- * REST Resource+      ProjectsJobsCreateResource++    -- * Creating a Request+    , projectsJobsCreate+    , ProjectsJobsCreate++    -- * Request Lenses+    , pjcXgafv+    , pjcUploadProtocol+    , pjcPp+    , pjcAccessToken+    , pjcUploadType+    , pjcPayload+    , pjcBearerToken+    , pjcView+    , pjcProjectId+    , pjcReplaceJobId+    , pjcCallback+    ) where++import           Network.Google.Dataflow.Types+import           Network.Google.Prelude++-- | A resource alias for @dataflow.projects.jobs.create@ method which the+-- 'ProjectsJobsCreate' request conforms to.+type ProjectsJobsCreateResource =+     "v1b3" :>+       "projects" :>+         Capture "projectId" Text :>+           "jobs" :>+             QueryParam "$.xgafv" Text :>+               QueryParam "upload_protocol" Text :>+                 QueryParam "pp" Bool :>+                   QueryParam "access_token" Text :>+                     QueryParam "uploadType" Text :>+                       QueryParam "bearer_token" Text :>+                         QueryParam "view" Text :>+                           QueryParam "replaceJobId" Text :>+                             QueryParam "callback" Text :>+                               QueryParam "alt" AltJSON :>+                                 ReqBody '[JSON] Job :> Post '[JSON] Job++-- | Creates a dataflow job.+--+-- /See:/ 'projectsJobsCreate' smart constructor.+data ProjectsJobsCreate = ProjectsJobsCreate+    { _pjcXgafv          :: !(Maybe Text)+    , _pjcUploadProtocol :: !(Maybe Text)+    , _pjcPp             :: !Bool+    , _pjcAccessToken    :: !(Maybe Text)+    , _pjcUploadType     :: !(Maybe Text)+    , _pjcPayload        :: !Job+    , _pjcBearerToken    :: !(Maybe Text)+    , _pjcView           :: !(Maybe Text)+    , _pjcProjectId      :: !Text+    , _pjcReplaceJobId   :: !(Maybe Text)+    , _pjcCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ProjectsJobsCreate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pjcXgafv'+--+-- * 'pjcUploadProtocol'+--+-- * 'pjcPp'+--+-- * 'pjcAccessToken'+--+-- * 'pjcUploadType'+--+-- * 'pjcPayload'+--+-- * 'pjcBearerToken'+--+-- * 'pjcView'+--+-- * 'pjcProjectId'+--+-- * 'pjcReplaceJobId'+--+-- * 'pjcCallback'+projectsJobsCreate+    :: Job -- ^ 'pjcPayload'+    -> Text -- ^ 'pjcProjectId'+    -> ProjectsJobsCreate+projectsJobsCreate pPjcPayload_ pPjcProjectId_ =+    ProjectsJobsCreate+    { _pjcXgafv = Nothing+    , _pjcUploadProtocol = Nothing+    , _pjcPp = True+    , _pjcAccessToken = Nothing+    , _pjcUploadType = Nothing+    , _pjcPayload = pPjcPayload_+    , _pjcBearerToken = Nothing+    , _pjcView = Nothing+    , _pjcProjectId = pPjcProjectId_+    , _pjcReplaceJobId = Nothing+    , _pjcCallback = Nothing+    }++-- | V1 error format.+pjcXgafv :: Lens' ProjectsJobsCreate (Maybe Text)+pjcXgafv = lens _pjcXgafv (\ s a -> s{_pjcXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+pjcUploadProtocol :: Lens' ProjectsJobsCreate (Maybe Text)+pjcUploadProtocol+  = lens _pjcUploadProtocol+      (\ s a -> s{_pjcUploadProtocol = a})++-- | Pretty-print response.+pjcPp :: Lens' ProjectsJobsCreate Bool+pjcPp = lens _pjcPp (\ s a -> s{_pjcPp = a})++-- | OAuth access token.+pjcAccessToken :: Lens' ProjectsJobsCreate (Maybe Text)+pjcAccessToken+  = lens _pjcAccessToken+      (\ s a -> s{_pjcAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+pjcUploadType :: Lens' ProjectsJobsCreate (Maybe Text)+pjcUploadType+  = lens _pjcUploadType+      (\ s a -> s{_pjcUploadType = a})++-- | Multipart request metadata.+pjcPayload :: Lens' ProjectsJobsCreate Job+pjcPayload+  = lens _pjcPayload (\ s a -> s{_pjcPayload = a})++-- | OAuth bearer token.+pjcBearerToken :: Lens' ProjectsJobsCreate (Maybe Text)+pjcBearerToken+  = lens _pjcBearerToken+      (\ s a -> s{_pjcBearerToken = a})++-- | Level of information requested in response.+pjcView :: Lens' ProjectsJobsCreate (Maybe Text)+pjcView = lens _pjcView (\ s a -> s{_pjcView = a})++-- | The project which owns the job.+pjcProjectId :: Lens' ProjectsJobsCreate Text+pjcProjectId+  = lens _pjcProjectId (\ s a -> s{_pjcProjectId = a})++-- | DEPRECATED. This field is now on the Job message.+pjcReplaceJobId :: Lens' ProjectsJobsCreate (Maybe Text)+pjcReplaceJobId+  = lens _pjcReplaceJobId+      (\ s a -> s{_pjcReplaceJobId = a})++-- | JSONP+pjcCallback :: Lens' ProjectsJobsCreate (Maybe Text)+pjcCallback+  = lens _pjcCallback (\ s a -> s{_pjcCallback = a})++instance GoogleRequest ProjectsJobsCreate where+        type Rs ProjectsJobsCreate = Job+        requestClient ProjectsJobsCreate{..}+          = go _pjcProjectId _pjcXgafv _pjcUploadProtocol+              (Just _pjcPp)+              _pjcAccessToken+              _pjcUploadType+              _pjcBearerToken+              _pjcView+              _pjcReplaceJobId+              _pjcCallback+              (Just AltJSON)+              _pjcPayload+              dataflowService+          where go+                  = buildClient+                      (Proxy :: Proxy ProjectsJobsCreateResource)+                      mempty
+ gen/Network/Google/Resource/Dataflow/Projects/Jobs/Get.hs view
@@ -0,0 +1,192 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Dataflow.Projects.Jobs.Get+-- Copyright   : (c) 2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets the state of the specified dataflow job.+--+-- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.jobs.get@.+module Network.Google.Resource.Dataflow.Projects.Jobs.Get+    (+    -- * REST Resource+      ProjectsJobsGetResource++    -- * Creating a Request+    , projectsJobsGet+    , ProjectsJobsGet++    -- * Request Lenses+    , pjgXgafv+    , pjgJobId+    , pjgUploadProtocol+    , pjgPp+    , pjgAccessToken+    , pjgUploadType+    , pjgBearerToken+    , pjgView+    , pjgProjectId+    , pjgCallback+    ) where++import           Network.Google.Dataflow.Types+import           Network.Google.Prelude++-- | A resource alias for @dataflow.projects.jobs.get@ method which the+-- 'ProjectsJobsGet' request conforms to.+type ProjectsJobsGetResource =+     "v1b3" :>+       "projects" :>+         Capture "projectId" Text :>+           "jobs" :>+             Capture "jobId" Text :>+               QueryParam "$.xgafv" Text :>+                 QueryParam "upload_protocol" Text :>+                   QueryParam "pp" Bool :>+                     QueryParam "access_token" Text :>+                       QueryParam "uploadType" Text :>+                         QueryParam "bearer_token" Text :>+                           QueryParam "view" Text :>+                             QueryParam "callback" Text :>+                               QueryParam "alt" AltJSON :> Get '[JSON] Job++-- | Gets the state of the specified dataflow job.+--+-- /See:/ 'projectsJobsGet' smart constructor.+data ProjectsJobsGet = ProjectsJobsGet+    { _pjgXgafv          :: !(Maybe Text)+    , _pjgJobId          :: !Text+    , _pjgUploadProtocol :: !(Maybe Text)+    , _pjgPp             :: !Bool+    , _pjgAccessToken    :: !(Maybe Text)+    , _pjgUploadType     :: !(Maybe Text)+    , _pjgBearerToken    :: !(Maybe Text)+    , _pjgView           :: !(Maybe Text)+    , _pjgProjectId      :: !Text+    , _pjgCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ProjectsJobsGet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pjgXgafv'+--+-- * 'pjgJobId'+--+-- * 'pjgUploadProtocol'+--+-- * 'pjgPp'+--+-- * 'pjgAccessToken'+--+-- * 'pjgUploadType'+--+-- * 'pjgBearerToken'+--+-- * 'pjgView'+--+-- * 'pjgProjectId'+--+-- * 'pjgCallback'+projectsJobsGet+    :: Text -- ^ 'pjgJobId'+    -> Text -- ^ 'pjgProjectId'+    -> ProjectsJobsGet+projectsJobsGet pPjgJobId_ pPjgProjectId_ =+    ProjectsJobsGet+    { _pjgXgafv = Nothing+    , _pjgJobId = pPjgJobId_+    , _pjgUploadProtocol = Nothing+    , _pjgPp = True+    , _pjgAccessToken = Nothing+    , _pjgUploadType = Nothing+    , _pjgBearerToken = Nothing+    , _pjgView = Nothing+    , _pjgProjectId = pPjgProjectId_+    , _pjgCallback = Nothing+    }++-- | V1 error format.+pjgXgafv :: Lens' ProjectsJobsGet (Maybe Text)+pjgXgafv = lens _pjgXgafv (\ s a -> s{_pjgXgafv = a})++-- | Identifies a single job.+pjgJobId :: Lens' ProjectsJobsGet Text+pjgJobId = lens _pjgJobId (\ s a -> s{_pjgJobId = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+pjgUploadProtocol :: Lens' ProjectsJobsGet (Maybe Text)+pjgUploadProtocol+  = lens _pjgUploadProtocol+      (\ s a -> s{_pjgUploadProtocol = a})++-- | Pretty-print response.+pjgPp :: Lens' ProjectsJobsGet Bool+pjgPp = lens _pjgPp (\ s a -> s{_pjgPp = a})++-- | OAuth access token.+pjgAccessToken :: Lens' ProjectsJobsGet (Maybe Text)+pjgAccessToken+  = lens _pjgAccessToken+      (\ s a -> s{_pjgAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+pjgUploadType :: Lens' ProjectsJobsGet (Maybe Text)+pjgUploadType+  = lens _pjgUploadType+      (\ s a -> s{_pjgUploadType = a})++-- | OAuth bearer token.+pjgBearerToken :: Lens' ProjectsJobsGet (Maybe Text)+pjgBearerToken+  = lens _pjgBearerToken+      (\ s a -> s{_pjgBearerToken = a})++-- | Level of information requested in response.+pjgView :: Lens' ProjectsJobsGet (Maybe Text)+pjgView = lens _pjgView (\ s a -> s{_pjgView = a})++-- | The project which owns the job.+pjgProjectId :: Lens' ProjectsJobsGet Text+pjgProjectId+  = lens _pjgProjectId (\ s a -> s{_pjgProjectId = a})++-- | JSONP+pjgCallback :: Lens' ProjectsJobsGet (Maybe Text)+pjgCallback+  = lens _pjgCallback (\ s a -> s{_pjgCallback = a})++instance GoogleRequest ProjectsJobsGet where+        type Rs ProjectsJobsGet = Job+        requestClient ProjectsJobsGet{..}+          = go _pjgProjectId _pjgJobId _pjgXgafv+              _pjgUploadProtocol+              (Just _pjgPp)+              _pjgAccessToken+              _pjgUploadType+              _pjgBearerToken+              _pjgView+              _pjgCallback+              (Just AltJSON)+              dataflowService+          where go+                  = buildClient+                      (Proxy :: Proxy ProjectsJobsGetResource)+                      mempty
+ gen/Network/Google/Resource/Dataflow/Projects/Jobs/GetMetrics.hs view
@@ -0,0 +1,200 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Dataflow.Projects.Jobs.GetMetrics+-- Copyright   : (c) 2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Request the job status.+--+-- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.jobs.getMetrics@.+module Network.Google.Resource.Dataflow.Projects.Jobs.GetMetrics+    (+    -- * REST Resource+      ProjectsJobsGetMetricsResource++    -- * Creating a Request+    , projectsJobsGetMetrics+    , ProjectsJobsGetMetrics++    -- * Request Lenses+    , pjgmXgafv+    , pjgmJobId+    , pjgmUploadProtocol+    , pjgmStartTime+    , pjgmPp+    , pjgmAccessToken+    , pjgmUploadType+    , pjgmBearerToken+    , pjgmProjectId+    , pjgmCallback+    ) where++import           Network.Google.Dataflow.Types+import           Network.Google.Prelude++-- | A resource alias for @dataflow.projects.jobs.getMetrics@ method which the+-- 'ProjectsJobsGetMetrics' request conforms to.+type ProjectsJobsGetMetricsResource =+     "v1b3" :>+       "projects" :>+         Capture "projectId" Text :>+           "jobs" :>+             Capture "jobId" Text :>+               "metrics" :>+                 QueryParam "$.xgafv" Text :>+                   QueryParam "upload_protocol" Text :>+                     QueryParam "startTime" Text :>+                       QueryParam "pp" Bool :>+                         QueryParam "access_token" Text :>+                           QueryParam "uploadType" Text :>+                             QueryParam "bearer_token" Text :>+                               QueryParam "callback" Text :>+                                 QueryParam "alt" AltJSON :>+                                   Get '[JSON] JobMetrics++-- | Request the job status.+--+-- /See:/ 'projectsJobsGetMetrics' smart constructor.+data ProjectsJobsGetMetrics = ProjectsJobsGetMetrics+    { _pjgmXgafv          :: !(Maybe Text)+    , _pjgmJobId          :: !Text+    , _pjgmUploadProtocol :: !(Maybe Text)+    , _pjgmStartTime      :: !(Maybe Text)+    , _pjgmPp             :: !Bool+    , _pjgmAccessToken    :: !(Maybe Text)+    , _pjgmUploadType     :: !(Maybe Text)+    , _pjgmBearerToken    :: !(Maybe Text)+    , _pjgmProjectId      :: !Text+    , _pjgmCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ProjectsJobsGetMetrics' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pjgmXgafv'+--+-- * 'pjgmJobId'+--+-- * 'pjgmUploadProtocol'+--+-- * 'pjgmStartTime'+--+-- * 'pjgmPp'+--+-- * 'pjgmAccessToken'+--+-- * 'pjgmUploadType'+--+-- * 'pjgmBearerToken'+--+-- * 'pjgmProjectId'+--+-- * 'pjgmCallback'+projectsJobsGetMetrics+    :: Text -- ^ 'pjgmJobId'+    -> Text -- ^ 'pjgmProjectId'+    -> ProjectsJobsGetMetrics+projectsJobsGetMetrics pPjgmJobId_ pPjgmProjectId_ =+    ProjectsJobsGetMetrics+    { _pjgmXgafv = Nothing+    , _pjgmJobId = pPjgmJobId_+    , _pjgmUploadProtocol = Nothing+    , _pjgmStartTime = Nothing+    , _pjgmPp = True+    , _pjgmAccessToken = Nothing+    , _pjgmUploadType = Nothing+    , _pjgmBearerToken = Nothing+    , _pjgmProjectId = pPjgmProjectId_+    , _pjgmCallback = Nothing+    }++-- | V1 error format.+pjgmXgafv :: Lens' ProjectsJobsGetMetrics (Maybe Text)+pjgmXgafv+  = lens _pjgmXgafv (\ s a -> s{_pjgmXgafv = a})++-- | The job to get messages for.+pjgmJobId :: Lens' ProjectsJobsGetMetrics Text+pjgmJobId+  = lens _pjgmJobId (\ s a -> s{_pjgmJobId = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+pjgmUploadProtocol :: Lens' ProjectsJobsGetMetrics (Maybe Text)+pjgmUploadProtocol+  = lens _pjgmUploadProtocol+      (\ s a -> s{_pjgmUploadProtocol = a})++-- | Return only metric data that has changed since this time. Default is to+-- return all information about all metrics for the job.+pjgmStartTime :: Lens' ProjectsJobsGetMetrics (Maybe Text)+pjgmStartTime+  = lens _pjgmStartTime+      (\ s a -> s{_pjgmStartTime = a})++-- | Pretty-print response.+pjgmPp :: Lens' ProjectsJobsGetMetrics Bool+pjgmPp = lens _pjgmPp (\ s a -> s{_pjgmPp = a})++-- | OAuth access token.+pjgmAccessToken :: Lens' ProjectsJobsGetMetrics (Maybe Text)+pjgmAccessToken+  = lens _pjgmAccessToken+      (\ s a -> s{_pjgmAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+pjgmUploadType :: Lens' ProjectsJobsGetMetrics (Maybe Text)+pjgmUploadType+  = lens _pjgmUploadType+      (\ s a -> s{_pjgmUploadType = a})++-- | OAuth bearer token.+pjgmBearerToken :: Lens' ProjectsJobsGetMetrics (Maybe Text)+pjgmBearerToken+  = lens _pjgmBearerToken+      (\ s a -> s{_pjgmBearerToken = a})++-- | A project id.+pjgmProjectId :: Lens' ProjectsJobsGetMetrics Text+pjgmProjectId+  = lens _pjgmProjectId+      (\ s a -> s{_pjgmProjectId = a})++-- | JSONP+pjgmCallback :: Lens' ProjectsJobsGetMetrics (Maybe Text)+pjgmCallback+  = lens _pjgmCallback (\ s a -> s{_pjgmCallback = a})++instance GoogleRequest ProjectsJobsGetMetrics where+        type Rs ProjectsJobsGetMetrics = JobMetrics+        requestClient ProjectsJobsGetMetrics{..}+          = go _pjgmProjectId _pjgmJobId _pjgmXgafv+              _pjgmUploadProtocol+              _pjgmStartTime+              (Just _pjgmPp)+              _pjgmAccessToken+              _pjgmUploadType+              _pjgmBearerToken+              _pjgmCallback+              (Just AltJSON)+              dataflowService+          where go+                  = buildClient+                      (Proxy :: Proxy ProjectsJobsGetMetricsResource)+                      mempty
+ gen/Network/Google/Resource/Dataflow/Projects/Jobs/List.hs view
@@ -0,0 +1,209 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Dataflow.Projects.Jobs.List+-- Copyright   : (c) 2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- List the jobs of a project+--+-- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.jobs.list@.+module Network.Google.Resource.Dataflow.Projects.Jobs.List+    (+    -- * REST Resource+      ProjectsJobsListResource++    -- * Creating a Request+    , projectsJobsList+    , ProjectsJobsList++    -- * Request Lenses+    , pjlXgafv+    , pjlUploadProtocol+    , pjlPp+    , pjlAccessToken+    , pjlUploadType+    , pjlBearerToken+    , pjlView+    , pjlPageToken+    , pjlProjectId+    , pjlPageSize+    , pjlCallback+    ) where++import           Network.Google.Dataflow.Types+import           Network.Google.Prelude++-- | A resource alias for @dataflow.projects.jobs.list@ method which the+-- 'ProjectsJobsList' request conforms to.+type ProjectsJobsListResource =+     "v1b3" :>+       "projects" :>+         Capture "projectId" Text :>+           "jobs" :>+             QueryParam "$.xgafv" Text :>+               QueryParam "upload_protocol" Text :>+                 QueryParam "pp" Bool :>+                   QueryParam "access_token" Text :>+                     QueryParam "uploadType" Text :>+                       QueryParam "bearer_token" Text :>+                         QueryParam "view" Text :>+                           QueryParam "pageToken" Text :>+                             QueryParam "pageSize" (Textual Int32) :>+                               QueryParam "callback" Text :>+                                 QueryParam "alt" AltJSON :>+                                   Get '[JSON] ListJobsResponse++-- | List the jobs of a project+--+-- /See:/ 'projectsJobsList' smart constructor.+data ProjectsJobsList = ProjectsJobsList+    { _pjlXgafv          :: !(Maybe Text)+    , _pjlUploadProtocol :: !(Maybe Text)+    , _pjlPp             :: !Bool+    , _pjlAccessToken    :: !(Maybe Text)+    , _pjlUploadType     :: !(Maybe Text)+    , _pjlBearerToken    :: !(Maybe Text)+    , _pjlView           :: !(Maybe Text)+    , _pjlPageToken      :: !(Maybe Text)+    , _pjlProjectId      :: !Text+    , _pjlPageSize       :: !(Maybe (Textual Int32))+    , _pjlCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ProjectsJobsList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pjlXgafv'+--+-- * 'pjlUploadProtocol'+--+-- * 'pjlPp'+--+-- * 'pjlAccessToken'+--+-- * 'pjlUploadType'+--+-- * 'pjlBearerToken'+--+-- * 'pjlView'+--+-- * 'pjlPageToken'+--+-- * 'pjlProjectId'+--+-- * 'pjlPageSize'+--+-- * 'pjlCallback'+projectsJobsList+    :: Text -- ^ 'pjlProjectId'+    -> ProjectsJobsList+projectsJobsList pPjlProjectId_ =+    ProjectsJobsList+    { _pjlXgafv = Nothing+    , _pjlUploadProtocol = Nothing+    , _pjlPp = True+    , _pjlAccessToken = Nothing+    , _pjlUploadType = Nothing+    , _pjlBearerToken = Nothing+    , _pjlView = Nothing+    , _pjlPageToken = Nothing+    , _pjlProjectId = pPjlProjectId_+    , _pjlPageSize = Nothing+    , _pjlCallback = Nothing+    }++-- | V1 error format.+pjlXgafv :: Lens' ProjectsJobsList (Maybe Text)+pjlXgafv = lens _pjlXgafv (\ s a -> s{_pjlXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+pjlUploadProtocol :: Lens' ProjectsJobsList (Maybe Text)+pjlUploadProtocol+  = lens _pjlUploadProtocol+      (\ s a -> s{_pjlUploadProtocol = a})++-- | Pretty-print response.+pjlPp :: Lens' ProjectsJobsList Bool+pjlPp = lens _pjlPp (\ s a -> s{_pjlPp = a})++-- | OAuth access token.+pjlAccessToken :: Lens' ProjectsJobsList (Maybe Text)+pjlAccessToken+  = lens _pjlAccessToken+      (\ s a -> s{_pjlAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+pjlUploadType :: Lens' ProjectsJobsList (Maybe Text)+pjlUploadType+  = lens _pjlUploadType+      (\ s a -> s{_pjlUploadType = a})++-- | OAuth bearer token.+pjlBearerToken :: Lens' ProjectsJobsList (Maybe Text)+pjlBearerToken+  = lens _pjlBearerToken+      (\ s a -> s{_pjlBearerToken = a})++-- | Level of information requested in response. Default is SUMMARY.+pjlView :: Lens' ProjectsJobsList (Maybe Text)+pjlView = lens _pjlView (\ s a -> s{_pjlView = a})++-- | Set this to the \'next_page_token\' field of a previous response to+-- request additional results in a long list.+pjlPageToken :: Lens' ProjectsJobsList (Maybe Text)+pjlPageToken+  = lens _pjlPageToken (\ s a -> s{_pjlPageToken = a})++-- | The project which owns the jobs.+pjlProjectId :: Lens' ProjectsJobsList Text+pjlProjectId+  = lens _pjlProjectId (\ s a -> s{_pjlProjectId = a})++-- | If there are many jobs, limit response to at most this many. The actual+-- number of jobs returned will be the lesser of max_responses and an+-- unspecified server-defined limit.+pjlPageSize :: Lens' ProjectsJobsList (Maybe Int32)+pjlPageSize+  = lens _pjlPageSize (\ s a -> s{_pjlPageSize = a}) .+      mapping _Coerce++-- | JSONP+pjlCallback :: Lens' ProjectsJobsList (Maybe Text)+pjlCallback+  = lens _pjlCallback (\ s a -> s{_pjlCallback = a})++instance GoogleRequest ProjectsJobsList where+        type Rs ProjectsJobsList = ListJobsResponse+        requestClient ProjectsJobsList{..}+          = go _pjlProjectId _pjlXgafv _pjlUploadProtocol+              (Just _pjlPp)+              _pjlAccessToken+              _pjlUploadType+              _pjlBearerToken+              _pjlView+              _pjlPageToken+              _pjlPageSize+              _pjlCallback+              (Just AltJSON)+              dataflowService+          where go+                  = buildClient+                      (Proxy :: Proxy ProjectsJobsListResource)+                      mempty
+ gen/Network/Google/Resource/Dataflow/Projects/Jobs/Messages/List.hs view
@@ -0,0 +1,256 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Dataflow.Projects.Jobs.Messages.List+-- Copyright   : (c) 2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Request the job status.+--+-- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.jobs.messages.list@.+module Network.Google.Resource.Dataflow.Projects.Jobs.Messages.List+    (+    -- * REST Resource+      ProjectsJobsMessagesListResource++    -- * Creating a Request+    , projectsJobsMessagesList+    , ProjectsJobsMessagesList++    -- * Request Lenses+    , pjmlXgafv+    , pjmlJobId+    , pjmlUploadProtocol+    , pjmlStartTime+    , pjmlPp+    , pjmlAccessToken+    , pjmlUploadType+    , pjmlBearerToken+    , pjmlEndTime+    , pjmlMinimumImportance+    , pjmlPageToken+    , pjmlProjectId+    , pjmlPageSize+    , pjmlCallback+    ) where++import           Network.Google.Dataflow.Types+import           Network.Google.Prelude++-- | A resource alias for @dataflow.projects.jobs.messages.list@ method which the+-- 'ProjectsJobsMessagesList' request conforms to.+type ProjectsJobsMessagesListResource =+     "v1b3" :>+       "projects" :>+         Capture "projectId" Text :>+           "jobs" :>+             Capture "jobId" Text :>+               "messages" :>+                 QueryParam "$.xgafv" Text :>+                   QueryParam "upload_protocol" Text :>+                     QueryParam "startTime" Text :>+                       QueryParam "pp" Bool :>+                         QueryParam "access_token" Text :>+                           QueryParam "uploadType" Text :>+                             QueryParam "bearer_token" Text :>+                               QueryParam "endTime" Text :>+                                 QueryParam "minimumImportance" Text :>+                                   QueryParam "pageToken" Text :>+                                     QueryParam "pageSize" (Textual Int32) :>+                                       QueryParam "callback" Text :>+                                         QueryParam "alt" AltJSON :>+                                           Get '[JSON] ListJobMessagesResponse++-- | Request the job status.+--+-- /See:/ 'projectsJobsMessagesList' smart constructor.+data ProjectsJobsMessagesList = ProjectsJobsMessagesList+    { _pjmlXgafv             :: !(Maybe Text)+    , _pjmlJobId             :: !Text+    , _pjmlUploadProtocol    :: !(Maybe Text)+    , _pjmlStartTime         :: !(Maybe Text)+    , _pjmlPp                :: !Bool+    , _pjmlAccessToken       :: !(Maybe Text)+    , _pjmlUploadType        :: !(Maybe Text)+    , _pjmlBearerToken       :: !(Maybe Text)+    , _pjmlEndTime           :: !(Maybe Text)+    , _pjmlMinimumImportance :: !(Maybe Text)+    , _pjmlPageToken         :: !(Maybe Text)+    , _pjmlProjectId         :: !Text+    , _pjmlPageSize          :: !(Maybe (Textual Int32))+    , _pjmlCallback          :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ProjectsJobsMessagesList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pjmlXgafv'+--+-- * 'pjmlJobId'+--+-- * 'pjmlUploadProtocol'+--+-- * 'pjmlStartTime'+--+-- * 'pjmlPp'+--+-- * 'pjmlAccessToken'+--+-- * 'pjmlUploadType'+--+-- * 'pjmlBearerToken'+--+-- * 'pjmlEndTime'+--+-- * 'pjmlMinimumImportance'+--+-- * 'pjmlPageToken'+--+-- * 'pjmlProjectId'+--+-- * 'pjmlPageSize'+--+-- * 'pjmlCallback'+projectsJobsMessagesList+    :: Text -- ^ 'pjmlJobId'+    -> Text -- ^ 'pjmlProjectId'+    -> ProjectsJobsMessagesList+projectsJobsMessagesList pPjmlJobId_ pPjmlProjectId_ =+    ProjectsJobsMessagesList+    { _pjmlXgafv = Nothing+    , _pjmlJobId = pPjmlJobId_+    , _pjmlUploadProtocol = Nothing+    , _pjmlStartTime = Nothing+    , _pjmlPp = True+    , _pjmlAccessToken = Nothing+    , _pjmlUploadType = Nothing+    , _pjmlBearerToken = Nothing+    , _pjmlEndTime = Nothing+    , _pjmlMinimumImportance = Nothing+    , _pjmlPageToken = Nothing+    , _pjmlProjectId = pPjmlProjectId_+    , _pjmlPageSize = Nothing+    , _pjmlCallback = Nothing+    }++-- | V1 error format.+pjmlXgafv :: Lens' ProjectsJobsMessagesList (Maybe Text)+pjmlXgafv+  = lens _pjmlXgafv (\ s a -> s{_pjmlXgafv = a})++-- | The job to get messages about.+pjmlJobId :: Lens' ProjectsJobsMessagesList Text+pjmlJobId+  = lens _pjmlJobId (\ s a -> s{_pjmlJobId = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+pjmlUploadProtocol :: Lens' ProjectsJobsMessagesList (Maybe Text)+pjmlUploadProtocol+  = lens _pjmlUploadProtocol+      (\ s a -> s{_pjmlUploadProtocol = a})++-- | If specified, return only messages with timestamps >= start_time. The+-- default is the job creation time (i.e. beginning of messages).+pjmlStartTime :: Lens' ProjectsJobsMessagesList (Maybe Text)+pjmlStartTime+  = lens _pjmlStartTime+      (\ s a -> s{_pjmlStartTime = a})++-- | Pretty-print response.+pjmlPp :: Lens' ProjectsJobsMessagesList Bool+pjmlPp = lens _pjmlPp (\ s a -> s{_pjmlPp = a})++-- | OAuth access token.+pjmlAccessToken :: Lens' ProjectsJobsMessagesList (Maybe Text)+pjmlAccessToken+  = lens _pjmlAccessToken+      (\ s a -> s{_pjmlAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+pjmlUploadType :: Lens' ProjectsJobsMessagesList (Maybe Text)+pjmlUploadType+  = lens _pjmlUploadType+      (\ s a -> s{_pjmlUploadType = a})++-- | OAuth bearer token.+pjmlBearerToken :: Lens' ProjectsJobsMessagesList (Maybe Text)+pjmlBearerToken+  = lens _pjmlBearerToken+      (\ s a -> s{_pjmlBearerToken = a})++-- | Return only messages with timestamps \< end_time. The default is now+-- (i.e. return up to the latest messages available).+pjmlEndTime :: Lens' ProjectsJobsMessagesList (Maybe Text)+pjmlEndTime+  = lens _pjmlEndTime (\ s a -> s{_pjmlEndTime = a})++-- | Filter to only get messages with importance >= level+pjmlMinimumImportance :: Lens' ProjectsJobsMessagesList (Maybe Text)+pjmlMinimumImportance+  = lens _pjmlMinimumImportance+      (\ s a -> s{_pjmlMinimumImportance = a})++-- | If supplied, this should be the value of next_page_token returned by an+-- earlier call. This will cause the next page of results to be returned.+pjmlPageToken :: Lens' ProjectsJobsMessagesList (Maybe Text)+pjmlPageToken+  = lens _pjmlPageToken+      (\ s a -> s{_pjmlPageToken = a})++-- | A project id.+pjmlProjectId :: Lens' ProjectsJobsMessagesList Text+pjmlProjectId+  = lens _pjmlProjectId+      (\ s a -> s{_pjmlProjectId = a})++-- | If specified, determines the maximum number of messages to return. If+-- unspecified, the service may choose an appropriate default, or may+-- return an arbitrarily large number of results.+pjmlPageSize :: Lens' ProjectsJobsMessagesList (Maybe Int32)+pjmlPageSize+  = lens _pjmlPageSize (\ s a -> s{_pjmlPageSize = a})+      . mapping _Coerce++-- | JSONP+pjmlCallback :: Lens' ProjectsJobsMessagesList (Maybe Text)+pjmlCallback+  = lens _pjmlCallback (\ s a -> s{_pjmlCallback = a})++instance GoogleRequest ProjectsJobsMessagesList where+        type Rs ProjectsJobsMessagesList =+             ListJobMessagesResponse+        requestClient ProjectsJobsMessagesList{..}+          = go _pjmlProjectId _pjmlJobId _pjmlXgafv+              _pjmlUploadProtocol+              _pjmlStartTime+              (Just _pjmlPp)+              _pjmlAccessToken+              _pjmlUploadType+              _pjmlBearerToken+              _pjmlEndTime+              _pjmlMinimumImportance+              _pjmlPageToken+              _pjmlPageSize+              _pjmlCallback+              (Just AltJSON)+              dataflowService+          where go+                  = buildClient+                      (Proxy :: Proxy ProjectsJobsMessagesListResource)+                      mempty
+ gen/Network/Google/Resource/Dataflow/Projects/Jobs/Update.hs view
@@ -0,0 +1,194 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Dataflow.Projects.Jobs.Update+-- Copyright   : (c) 2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates the state of an existing dataflow job.+--+-- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.jobs.update@.+module Network.Google.Resource.Dataflow.Projects.Jobs.Update+    (+    -- * REST Resource+      ProjectsJobsUpdateResource++    -- * Creating a Request+    , projectsJobsUpdate+    , ProjectsJobsUpdate++    -- * Request Lenses+    , pjuXgafv+    , pjuJobId+    , pjuUploadProtocol+    , pjuPp+    , pjuAccessToken+    , pjuUploadType+    , pjuPayload+    , pjuBearerToken+    , pjuProjectId+    , pjuCallback+    ) where++import           Network.Google.Dataflow.Types+import           Network.Google.Prelude++-- | A resource alias for @dataflow.projects.jobs.update@ method which the+-- 'ProjectsJobsUpdate' request conforms to.+type ProjectsJobsUpdateResource =+     "v1b3" :>+       "projects" :>+         Capture "projectId" Text :>+           "jobs" :>+             Capture "jobId" Text :>+               QueryParam "$.xgafv" Text :>+                 QueryParam "upload_protocol" Text :>+                   QueryParam "pp" Bool :>+                     QueryParam "access_token" Text :>+                       QueryParam "uploadType" Text :>+                         QueryParam "bearer_token" Text :>+                           QueryParam "callback" Text :>+                             QueryParam "alt" AltJSON :>+                               ReqBody '[JSON] Job :> Put '[JSON] Job++-- | Updates the state of an existing dataflow job.+--+-- /See:/ 'projectsJobsUpdate' smart constructor.+data ProjectsJobsUpdate = ProjectsJobsUpdate+    { _pjuXgafv          :: !(Maybe Text)+    , _pjuJobId          :: !Text+    , _pjuUploadProtocol :: !(Maybe Text)+    , _pjuPp             :: !Bool+    , _pjuAccessToken    :: !(Maybe Text)+    , _pjuUploadType     :: !(Maybe Text)+    , _pjuPayload        :: !Job+    , _pjuBearerToken    :: !(Maybe Text)+    , _pjuProjectId      :: !Text+    , _pjuCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ProjectsJobsUpdate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pjuXgafv'+--+-- * 'pjuJobId'+--+-- * 'pjuUploadProtocol'+--+-- * 'pjuPp'+--+-- * 'pjuAccessToken'+--+-- * 'pjuUploadType'+--+-- * 'pjuPayload'+--+-- * 'pjuBearerToken'+--+-- * 'pjuProjectId'+--+-- * 'pjuCallback'+projectsJobsUpdate+    :: Text -- ^ 'pjuJobId'+    -> Job -- ^ 'pjuPayload'+    -> Text -- ^ 'pjuProjectId'+    -> ProjectsJobsUpdate+projectsJobsUpdate pPjuJobId_ pPjuPayload_ pPjuProjectId_ =+    ProjectsJobsUpdate+    { _pjuXgafv = Nothing+    , _pjuJobId = pPjuJobId_+    , _pjuUploadProtocol = Nothing+    , _pjuPp = True+    , _pjuAccessToken = Nothing+    , _pjuUploadType = Nothing+    , _pjuPayload = pPjuPayload_+    , _pjuBearerToken = Nothing+    , _pjuProjectId = pPjuProjectId_+    , _pjuCallback = Nothing+    }++-- | V1 error format.+pjuXgafv :: Lens' ProjectsJobsUpdate (Maybe Text)+pjuXgafv = lens _pjuXgafv (\ s a -> s{_pjuXgafv = a})++-- | Identifies a single job.+pjuJobId :: Lens' ProjectsJobsUpdate Text+pjuJobId = lens _pjuJobId (\ s a -> s{_pjuJobId = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+pjuUploadProtocol :: Lens' ProjectsJobsUpdate (Maybe Text)+pjuUploadProtocol+  = lens _pjuUploadProtocol+      (\ s a -> s{_pjuUploadProtocol = a})++-- | Pretty-print response.+pjuPp :: Lens' ProjectsJobsUpdate Bool+pjuPp = lens _pjuPp (\ s a -> s{_pjuPp = a})++-- | OAuth access token.+pjuAccessToken :: Lens' ProjectsJobsUpdate (Maybe Text)+pjuAccessToken+  = lens _pjuAccessToken+      (\ s a -> s{_pjuAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+pjuUploadType :: Lens' ProjectsJobsUpdate (Maybe Text)+pjuUploadType+  = lens _pjuUploadType+      (\ s a -> s{_pjuUploadType = a})++-- | Multipart request metadata.+pjuPayload :: Lens' ProjectsJobsUpdate Job+pjuPayload+  = lens _pjuPayload (\ s a -> s{_pjuPayload = a})++-- | OAuth bearer token.+pjuBearerToken :: Lens' ProjectsJobsUpdate (Maybe Text)+pjuBearerToken+  = lens _pjuBearerToken+      (\ s a -> s{_pjuBearerToken = a})++-- | The project which owns the job.+pjuProjectId :: Lens' ProjectsJobsUpdate Text+pjuProjectId+  = lens _pjuProjectId (\ s a -> s{_pjuProjectId = a})++-- | JSONP+pjuCallback :: Lens' ProjectsJobsUpdate (Maybe Text)+pjuCallback+  = lens _pjuCallback (\ s a -> s{_pjuCallback = a})++instance GoogleRequest ProjectsJobsUpdate where+        type Rs ProjectsJobsUpdate = Job+        requestClient ProjectsJobsUpdate{..}+          = go _pjuProjectId _pjuJobId _pjuXgafv+              _pjuUploadProtocol+              (Just _pjuPp)+              _pjuAccessToken+              _pjuUploadType+              _pjuBearerToken+              _pjuCallback+              (Just AltJSON)+              _pjuPayload+              dataflowService+          where go+                  = buildClient+                      (Proxy :: Proxy ProjectsJobsUpdateResource)+                      mempty
+ gen/Network/Google/Resource/Dataflow/Projects/Jobs/WorkItems/Lease.hs view
@@ -0,0 +1,202 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Dataflow.Projects.Jobs.WorkItems.Lease+-- Copyright   : (c) 2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Leases a dataflow WorkItem to run.+--+-- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.jobs.workItems.lease@.+module Network.Google.Resource.Dataflow.Projects.Jobs.WorkItems.Lease+    (+    -- * REST Resource+      ProjectsJobsWorkItemsLeaseResource++    -- * Creating a Request+    , projectsJobsWorkItemsLease+    , ProjectsJobsWorkItemsLease++    -- * Request Lenses+    , pjwilXgafv+    , pjwilJobId+    , pjwilUploadProtocol+    , pjwilPp+    , pjwilAccessToken+    , pjwilUploadType+    , pjwilPayload+    , pjwilBearerToken+    , pjwilProjectId+    , pjwilCallback+    ) where++import           Network.Google.Dataflow.Types+import           Network.Google.Prelude++-- | A resource alias for @dataflow.projects.jobs.workItems.lease@ method which the+-- 'ProjectsJobsWorkItemsLease' request conforms to.+type ProjectsJobsWorkItemsLeaseResource =+     "v1b3" :>+       "projects" :>+         Capture "projectId" Text :>+           "jobs" :>+             Capture "jobId" Text :>+               "workItems:lease" :>+                 QueryParam "$.xgafv" Text :>+                   QueryParam "upload_protocol" Text :>+                     QueryParam "pp" Bool :>+                       QueryParam "access_token" Text :>+                         QueryParam "uploadType" Text :>+                           QueryParam "bearer_token" Text :>+                             QueryParam "callback" Text :>+                               QueryParam "alt" AltJSON :>+                                 ReqBody '[JSON] LeaseWorkItemRequest :>+                                   Post '[JSON] LeaseWorkItemResponse++-- | Leases a dataflow WorkItem to run.+--+-- /See:/ 'projectsJobsWorkItemsLease' smart constructor.+data ProjectsJobsWorkItemsLease = ProjectsJobsWorkItemsLease+    { _pjwilXgafv          :: !(Maybe Text)+    , _pjwilJobId          :: !Text+    , _pjwilUploadProtocol :: !(Maybe Text)+    , _pjwilPp             :: !Bool+    , _pjwilAccessToken    :: !(Maybe Text)+    , _pjwilUploadType     :: !(Maybe Text)+    , _pjwilPayload        :: !LeaseWorkItemRequest+    , _pjwilBearerToken    :: !(Maybe Text)+    , _pjwilProjectId      :: !Text+    , _pjwilCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ProjectsJobsWorkItemsLease' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pjwilXgafv'+--+-- * 'pjwilJobId'+--+-- * 'pjwilUploadProtocol'+--+-- * 'pjwilPp'+--+-- * 'pjwilAccessToken'+--+-- * 'pjwilUploadType'+--+-- * 'pjwilPayload'+--+-- * 'pjwilBearerToken'+--+-- * 'pjwilProjectId'+--+-- * 'pjwilCallback'+projectsJobsWorkItemsLease+    :: Text -- ^ 'pjwilJobId'+    -> LeaseWorkItemRequest -- ^ 'pjwilPayload'+    -> Text -- ^ 'pjwilProjectId'+    -> ProjectsJobsWorkItemsLease+projectsJobsWorkItemsLease pPjwilJobId_ pPjwilPayload_ pPjwilProjectId_ =+    ProjectsJobsWorkItemsLease+    { _pjwilXgafv = Nothing+    , _pjwilJobId = pPjwilJobId_+    , _pjwilUploadProtocol = Nothing+    , _pjwilPp = True+    , _pjwilAccessToken = Nothing+    , _pjwilUploadType = Nothing+    , _pjwilPayload = pPjwilPayload_+    , _pjwilBearerToken = Nothing+    , _pjwilProjectId = pPjwilProjectId_+    , _pjwilCallback = Nothing+    }++-- | V1 error format.+pjwilXgafv :: Lens' ProjectsJobsWorkItemsLease (Maybe Text)+pjwilXgafv+  = lens _pjwilXgafv (\ s a -> s{_pjwilXgafv = a})++-- | Identifies the workflow job this worker belongs to.+pjwilJobId :: Lens' ProjectsJobsWorkItemsLease Text+pjwilJobId+  = lens _pjwilJobId (\ s a -> s{_pjwilJobId = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+pjwilUploadProtocol :: Lens' ProjectsJobsWorkItemsLease (Maybe Text)+pjwilUploadProtocol+  = lens _pjwilUploadProtocol+      (\ s a -> s{_pjwilUploadProtocol = a})++-- | Pretty-print response.+pjwilPp :: Lens' ProjectsJobsWorkItemsLease Bool+pjwilPp = lens _pjwilPp (\ s a -> s{_pjwilPp = a})++-- | OAuth access token.+pjwilAccessToken :: Lens' ProjectsJobsWorkItemsLease (Maybe Text)+pjwilAccessToken+  = lens _pjwilAccessToken+      (\ s a -> s{_pjwilAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+pjwilUploadType :: Lens' ProjectsJobsWorkItemsLease (Maybe Text)+pjwilUploadType+  = lens _pjwilUploadType+      (\ s a -> s{_pjwilUploadType = a})++-- | Multipart request metadata.+pjwilPayload :: Lens' ProjectsJobsWorkItemsLease LeaseWorkItemRequest+pjwilPayload+  = lens _pjwilPayload (\ s a -> s{_pjwilPayload = a})++-- | OAuth bearer token.+pjwilBearerToken :: Lens' ProjectsJobsWorkItemsLease (Maybe Text)+pjwilBearerToken+  = lens _pjwilBearerToken+      (\ s a -> s{_pjwilBearerToken = a})++-- | Identifies the project this worker belongs to.+pjwilProjectId :: Lens' ProjectsJobsWorkItemsLease Text+pjwilProjectId+  = lens _pjwilProjectId+      (\ s a -> s{_pjwilProjectId = a})++-- | JSONP+pjwilCallback :: Lens' ProjectsJobsWorkItemsLease (Maybe Text)+pjwilCallback+  = lens _pjwilCallback+      (\ s a -> s{_pjwilCallback = a})++instance GoogleRequest ProjectsJobsWorkItemsLease+         where+        type Rs ProjectsJobsWorkItemsLease =+             LeaseWorkItemResponse+        requestClient ProjectsJobsWorkItemsLease{..}+          = go _pjwilProjectId _pjwilJobId _pjwilXgafv+              _pjwilUploadProtocol+              (Just _pjwilPp)+              _pjwilAccessToken+              _pjwilUploadType+              _pjwilBearerToken+              _pjwilCallback+              (Just AltJSON)+              _pjwilPayload+              dataflowService+          where go+                  = buildClient+                      (Proxy :: Proxy ProjectsJobsWorkItemsLeaseResource)+                      mempty
+ gen/Network/Google/Resource/Dataflow/Projects/Jobs/WorkItems/ReportStatus.hs view
@@ -0,0 +1,204 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Dataflow.Projects.Jobs.WorkItems.ReportStatus+-- Copyright   : (c) 2015 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Reports the status of dataflow WorkItems leased by a worker.+--+-- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.jobs.workItems.reportStatus@.+module Network.Google.Resource.Dataflow.Projects.Jobs.WorkItems.ReportStatus+    (+    -- * REST Resource+      ProjectsJobsWorkItemsReportStatusResource++    -- * Creating a Request+    , projectsJobsWorkItemsReportStatus+    , ProjectsJobsWorkItemsReportStatus++    -- * Request Lenses+    , pjwirsXgafv+    , pjwirsJobId+    , pjwirsUploadProtocol+    , pjwirsPp+    , pjwirsAccessToken+    , pjwirsUploadType+    , pjwirsPayload+    , pjwirsBearerToken+    , pjwirsProjectId+    , pjwirsCallback+    ) where++import           Network.Google.Dataflow.Types+import           Network.Google.Prelude++-- | A resource alias for @dataflow.projects.jobs.workItems.reportStatus@ method which the+-- 'ProjectsJobsWorkItemsReportStatus' request conforms to.+type ProjectsJobsWorkItemsReportStatusResource =+     "v1b3" :>+       "projects" :>+         Capture "projectId" Text :>+           "jobs" :>+             Capture "jobId" Text :>+               "workItems:reportStatus" :>+                 QueryParam "$.xgafv" Text :>+                   QueryParam "upload_protocol" Text :>+                     QueryParam "pp" Bool :>+                       QueryParam "access_token" Text :>+                         QueryParam "uploadType" Text :>+                           QueryParam "bearer_token" Text :>+                             QueryParam "callback" Text :>+                               QueryParam "alt" AltJSON :>+                                 ReqBody '[JSON] ReportWorkItemStatusRequest :>+                                   Post '[JSON] ReportWorkItemStatusResponse++-- | Reports the status of dataflow WorkItems leased by a worker.+--+-- /See:/ 'projectsJobsWorkItemsReportStatus' smart constructor.+data ProjectsJobsWorkItemsReportStatus = ProjectsJobsWorkItemsReportStatus+    { _pjwirsXgafv          :: !(Maybe Text)+    , _pjwirsJobId          :: !Text+    , _pjwirsUploadProtocol :: !(Maybe Text)+    , _pjwirsPp             :: !Bool+    , _pjwirsAccessToken    :: !(Maybe Text)+    , _pjwirsUploadType     :: !(Maybe Text)+    , _pjwirsPayload        :: !ReportWorkItemStatusRequest+    , _pjwirsBearerToken    :: !(Maybe Text)+    , _pjwirsProjectId      :: !Text+    , _pjwirsCallback       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ProjectsJobsWorkItemsReportStatus' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pjwirsXgafv'+--+-- * 'pjwirsJobId'+--+-- * 'pjwirsUploadProtocol'+--+-- * 'pjwirsPp'+--+-- * 'pjwirsAccessToken'+--+-- * 'pjwirsUploadType'+--+-- * 'pjwirsPayload'+--+-- * 'pjwirsBearerToken'+--+-- * 'pjwirsProjectId'+--+-- * 'pjwirsCallback'+projectsJobsWorkItemsReportStatus+    :: Text -- ^ 'pjwirsJobId'+    -> ReportWorkItemStatusRequest -- ^ 'pjwirsPayload'+    -> Text -- ^ 'pjwirsProjectId'+    -> ProjectsJobsWorkItemsReportStatus+projectsJobsWorkItemsReportStatus pPjwirsJobId_ pPjwirsPayload_ pPjwirsProjectId_ =+    ProjectsJobsWorkItemsReportStatus+    { _pjwirsXgafv = Nothing+    , _pjwirsJobId = pPjwirsJobId_+    , _pjwirsUploadProtocol = Nothing+    , _pjwirsPp = True+    , _pjwirsAccessToken = Nothing+    , _pjwirsUploadType = Nothing+    , _pjwirsPayload = pPjwirsPayload_+    , _pjwirsBearerToken = Nothing+    , _pjwirsProjectId = pPjwirsProjectId_+    , _pjwirsCallback = Nothing+    }++-- | V1 error format.+pjwirsXgafv :: Lens' ProjectsJobsWorkItemsReportStatus (Maybe Text)+pjwirsXgafv+  = lens _pjwirsXgafv (\ s a -> s{_pjwirsXgafv = a})++-- | The job which the WorkItem is part of.+pjwirsJobId :: Lens' ProjectsJobsWorkItemsReportStatus Text+pjwirsJobId+  = lens _pjwirsJobId (\ s a -> s{_pjwirsJobId = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+pjwirsUploadProtocol :: Lens' ProjectsJobsWorkItemsReportStatus (Maybe Text)+pjwirsUploadProtocol+  = lens _pjwirsUploadProtocol+      (\ s a -> s{_pjwirsUploadProtocol = a})++-- | Pretty-print response.+pjwirsPp :: Lens' ProjectsJobsWorkItemsReportStatus Bool+pjwirsPp = lens _pjwirsPp (\ s a -> s{_pjwirsPp = a})++-- | OAuth access token.+pjwirsAccessToken :: Lens' ProjectsJobsWorkItemsReportStatus (Maybe Text)+pjwirsAccessToken+  = lens _pjwirsAccessToken+      (\ s a -> s{_pjwirsAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+pjwirsUploadType :: Lens' ProjectsJobsWorkItemsReportStatus (Maybe Text)+pjwirsUploadType+  = lens _pjwirsUploadType+      (\ s a -> s{_pjwirsUploadType = a})++-- | Multipart request metadata.+pjwirsPayload :: Lens' ProjectsJobsWorkItemsReportStatus ReportWorkItemStatusRequest+pjwirsPayload+  = lens _pjwirsPayload+      (\ s a -> s{_pjwirsPayload = a})++-- | OAuth bearer token.+pjwirsBearerToken :: Lens' ProjectsJobsWorkItemsReportStatus (Maybe Text)+pjwirsBearerToken+  = lens _pjwirsBearerToken+      (\ s a -> s{_pjwirsBearerToken = a})++-- | The project which owns the WorkItem\'s job.+pjwirsProjectId :: Lens' ProjectsJobsWorkItemsReportStatus Text+pjwirsProjectId+  = lens _pjwirsProjectId+      (\ s a -> s{_pjwirsProjectId = a})++-- | JSONP+pjwirsCallback :: Lens' ProjectsJobsWorkItemsReportStatus (Maybe Text)+pjwirsCallback+  = lens _pjwirsCallback+      (\ s a -> s{_pjwirsCallback = a})++instance GoogleRequest+         ProjectsJobsWorkItemsReportStatus where+        type Rs ProjectsJobsWorkItemsReportStatus =+             ReportWorkItemStatusResponse+        requestClient ProjectsJobsWorkItemsReportStatus{..}+          = go _pjwirsProjectId _pjwirsJobId _pjwirsXgafv+              _pjwirsUploadProtocol+              (Just _pjwirsPp)+              _pjwirsAccessToken+              _pjwirsUploadType+              _pjwirsBearerToken+              _pjwirsCallback+              (Just AltJSON)+              _pjwirsPayload+              dataflowService+          where go+                  = buildClient+                      (Proxy ::+                         Proxy ProjectsJobsWorkItemsReportStatusResource)+                      mempty
+ gogol-dataflow.cabal view
@@ -0,0 +1,53 @@+name:                  gogol-dataflow+version:               0.0.1+synopsis:              Google Dataflow SDK.+homepage:              https://github.com/brendanhay/gogol+bug-reports:           https://github.com/brendanhay/gogol/issues+license:               OtherLicense+license-file:          LICENSE+author:                Brendan Hay+maintainer:            Brendan Hay <brendan.g.hay@gmail.com>+copyright:             Copyright (c) 2015 Brendan Hay+category:              Network, Google, Cloud+build-type:            Simple+cabal-version:         >= 1.10+extra-source-files:    README.md++description:+    Google Dataflow API.+    .+    /Warning:/ This is an experimental prototype/preview release which is still+    under exploratory development and not intended for public use, caveat emptor!+    .+    This library is compatible with version @v1b3@+    of the API.++source-repository head+    type:     git+    location: git://github.com/brendanhay/gogol.git++library+    default-language:  Haskell2010+    hs-source-dirs:    src gen++    ghc-options:       -Wall++    exposed-modules:+          Network.Google.Dataflow+        , Network.Google.Dataflow.Types+        , Network.Google.Resource.Dataflow.Projects.Jobs.Create+        , Network.Google.Resource.Dataflow.Projects.Jobs.Get+        , Network.Google.Resource.Dataflow.Projects.Jobs.GetMetrics+        , Network.Google.Resource.Dataflow.Projects.Jobs.List+        , Network.Google.Resource.Dataflow.Projects.Jobs.Messages.List+        , Network.Google.Resource.Dataflow.Projects.Jobs.Update+        , Network.Google.Resource.Dataflow.Projects.Jobs.WorkItems.Lease+        , Network.Google.Resource.Dataflow.Projects.Jobs.WorkItems.ReportStatus++    other-modules:+          Network.Google.Dataflow.Types.Product+        , Network.Google.Dataflow.Types.Sum++    build-depends:+          gogol-core == 0.0.1.*+        , base       >= 4.7 && < 5