{-# 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.SecurityCenter.Organizations.Sources.Findings.Create
    (
    
      OrganizationsSourcesFindingsCreateResource
    
    , organizationsSourcesFindingsCreate
    , OrganizationsSourcesFindingsCreate
    
    , osfcParent
    , osfcXgafv
    , osfcUploadProtocol
    , osfcAccessToken
    , osfcUploadType
    , osfcPayload
    , osfcFindingId
    , osfcCallback
    ) where
import           Network.Google.Prelude
import           Network.Google.SecurityCenter.Types
type OrganizationsSourcesFindingsCreateResource =
     "v1" :>
       Capture "parent" Text :>
         "findings" :>
           QueryParam "$.xgafv" Xgafv :>
             QueryParam "upload_protocol" Text :>
               QueryParam "access_token" Text :>
                 QueryParam "uploadType" Text :>
                   QueryParam "findingId" Text :>
                     QueryParam "callback" Text :>
                       QueryParam "alt" AltJSON :>
                         ReqBody '[JSON] Finding :> Post '[JSON] Finding
data OrganizationsSourcesFindingsCreate =
  OrganizationsSourcesFindingsCreate'
    { _osfcParent         :: !Text
    , _osfcXgafv          :: !(Maybe Xgafv)
    , _osfcUploadProtocol :: !(Maybe Text)
    , _osfcAccessToken    :: !(Maybe Text)
    , _osfcUploadType     :: !(Maybe Text)
    , _osfcPayload        :: !Finding
    , _osfcFindingId      :: !(Maybe Text)
    , _osfcCallback       :: !(Maybe Text)
    }
  deriving (Eq, Show, Data, Typeable, Generic)
organizationsSourcesFindingsCreate
    :: Text 
    -> Finding 
    -> OrganizationsSourcesFindingsCreate
organizationsSourcesFindingsCreate pOsfcParent_ pOsfcPayload_ =
  OrganizationsSourcesFindingsCreate'
    { _osfcParent = pOsfcParent_
    , _osfcXgafv = Nothing
    , _osfcUploadProtocol = Nothing
    , _osfcAccessToken = Nothing
    , _osfcUploadType = Nothing
    , _osfcPayload = pOsfcPayload_
    , _osfcFindingId = Nothing
    , _osfcCallback = Nothing
    }
osfcParent :: Lens' OrganizationsSourcesFindingsCreate Text
osfcParent
  = lens _osfcParent (\ s a -> s{_osfcParent = a})
osfcXgafv :: Lens' OrganizationsSourcesFindingsCreate (Maybe Xgafv)
osfcXgafv
  = lens _osfcXgafv (\ s a -> s{_osfcXgafv = a})
osfcUploadProtocol :: Lens' OrganizationsSourcesFindingsCreate (Maybe Text)
osfcUploadProtocol
  = lens _osfcUploadProtocol
      (\ s a -> s{_osfcUploadProtocol = a})
osfcAccessToken :: Lens' OrganizationsSourcesFindingsCreate (Maybe Text)
osfcAccessToken
  = lens _osfcAccessToken
      (\ s a -> s{_osfcAccessToken = a})
osfcUploadType :: Lens' OrganizationsSourcesFindingsCreate (Maybe Text)
osfcUploadType
  = lens _osfcUploadType
      (\ s a -> s{_osfcUploadType = a})
osfcPayload :: Lens' OrganizationsSourcesFindingsCreate Finding
osfcPayload
  = lens _osfcPayload (\ s a -> s{_osfcPayload = a})
osfcFindingId :: Lens' OrganizationsSourcesFindingsCreate (Maybe Text)
osfcFindingId
  = lens _osfcFindingId
      (\ s a -> s{_osfcFindingId = a})
osfcCallback :: Lens' OrganizationsSourcesFindingsCreate (Maybe Text)
osfcCallback
  = lens _osfcCallback (\ s a -> s{_osfcCallback = a})
instance GoogleRequest
           OrganizationsSourcesFindingsCreate
         where
        type Rs OrganizationsSourcesFindingsCreate = Finding
        type Scopes OrganizationsSourcesFindingsCreate =
             '["https://www.googleapis.com/auth/cloud-platform"]
        requestClient OrganizationsSourcesFindingsCreate'{..}
          = go _osfcParent _osfcXgafv _osfcUploadProtocol
              _osfcAccessToken
              _osfcUploadType
              _osfcFindingId
              _osfcCallback
              (Just AltJSON)
              _osfcPayload
              securityCenterService
          where go
                  = buildClient
                      (Proxy ::
                         Proxy OrganizationsSourcesFindingsCreateResource)
                      mempty