gogol-apps-reseller-1.0.0: gen/Gogol/AppsReseller/Reseller/Subscriptions/Insert.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE ImportQualifiedPost #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- |
-- Module : Gogol.AppsReseller.Reseller.Subscriptions.Insert
-- Copyright : (c) 2015-2025 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay+gogol@gmail.com>
-- Toni Cebrián <toni@tonicebrian.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates or transfer a subscription. Create a subscription for a customer\'s account that you ordered using the </admin-sdk/reseller/v1/reference/customers/insert.html Order a new customer account> method. For more information about creating a subscription for different payment plans, see </admin-sdk/reseller/v1/how-tos/manage_subscriptions#create_subscription manage subscriptions>.\\ If you did not order the customer\'s account using the customer insert method, use the customer\'s @customerAuthToken@ when creating a subscription for that customer. If transferring a G Suite subscription with an associated Google Drive or Google Vault subscription, use the </admin-sdk/reseller/v1/how-tos/batch.html batch operation> to transfer all of these subscriptions. For more information, see how to </admin-sdk/reseller/v1/how-tos/manage_subscriptions#transfer_a_subscription transfer subscriptions>.
--
-- /See:/ <https://developers.google.com/google-apps/reseller/ Google Workspace Reseller API Reference> for @reseller.subscriptions.insert@.
module Gogol.AppsReseller.Reseller.Subscriptions.Insert
( -- * Resource
ResellerSubscriptionsInsertResource,
-- ** Constructing a Request
ResellerSubscriptionsInsert (..),
newResellerSubscriptionsInsert,
)
where
import Gogol.AppsReseller.Types
import Gogol.Prelude qualified as Core
-- | A resource alias for @reseller.subscriptions.insert@ method which the
-- 'ResellerSubscriptionsInsert' request conforms to.
type ResellerSubscriptionsInsertResource =
"apps"
Core.:> "reseller"
Core.:> "v1"
Core.:> "customers"
Core.:> Core.Capture "customerId" Core.Text
Core.:> "subscriptions"
Core.:> Core.QueryParam "$.xgafv" Xgafv
Core.:> Core.QueryParam "access_token" Core.Text
Core.:> Core.QueryParam "action" SubscriptionsInsertAction
Core.:> Core.QueryParam "callback" Core.Text
Core.:> Core.QueryParam "customerAuthToken" Core.Text
Core.:> Core.QueryParam "sourceSkuId" Core.Text
Core.:> Core.QueryParam "uploadType" Core.Text
Core.:> Core.QueryParam "upload_protocol" Core.Text
Core.:> Core.QueryParam "alt" Core.AltJSON
Core.:> Core.ReqBody '[Core.JSON] Subscription
Core.:> Core.Post '[Core.JSON] Subscription
-- | Creates or transfer a subscription. Create a subscription for a customer\'s account that you ordered using the </admin-sdk/reseller/v1/reference/customers/insert.html Order a new customer account> method. For more information about creating a subscription for different payment plans, see </admin-sdk/reseller/v1/how-tos/manage_subscriptions#create_subscription manage subscriptions>.\\ If you did not order the customer\'s account using the customer insert method, use the customer\'s @customerAuthToken@ when creating a subscription for that customer. If transferring a G Suite subscription with an associated Google Drive or Google Vault subscription, use the </admin-sdk/reseller/v1/how-tos/batch.html batch operation> to transfer all of these subscriptions. For more information, see how to </admin-sdk/reseller/v1/how-tos/manage_subscriptions#transfer_a_subscription transfer subscriptions>.
--
-- /See:/ 'newResellerSubscriptionsInsert' smart constructor.
data ResellerSubscriptionsInsert = ResellerSubscriptionsInsert
{ -- | V1 error format.
xgafv :: (Core.Maybe Xgafv),
-- | OAuth access token.
accessToken :: (Core.Maybe Core.Text),
-- | The intented insert action. The usage of this field is governed by certain policies which are being developed & tested currently. Hence, these might not work as intended. Once this is fully tested & available to consume, we will share more information about its usage, limitations and policy documentation.
action :: (Core.Maybe SubscriptionsInsertAction),
-- | JSONP
callback :: (Core.Maybe Core.Text),
-- | The @customerAuthToken@ query string is required when creating a resold account that transfers a direct customer\'s subscription or transfers another reseller customer\'s subscription to your reseller management. This is a hexadecimal authentication token needed to complete the subscription transfer. For more information, see the administrator help center.
customerAuthToken :: (Core.Maybe Core.Text),
-- | This can be either the customer\'s primary domain name or the customer\'s unique identifier. If the domain name for a customer changes, the old domain name cannot be used to access the customer, but the customer\'s unique identifier (as returned by the API) can always be used. We recommend storing the unique identifier in your systems where applicable.
customerId :: Core.Text,
-- | Multipart request metadata.
payload :: Subscription,
-- | The sku_id of the existing subscription to be upgraded or downgraded. This is required when action is SWITCH. The usage of this field is governed by certain policies which are being developed & tested currently. Hence, these might not work as intended. Once this is fully tested & available to consume, we will share more information about its usage, limitations and policy documentation.
sourceSkuId :: (Core.Maybe Core.Text),
-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
uploadType :: (Core.Maybe Core.Text),
-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
uploadProtocol :: (Core.Maybe Core.Text)
}
deriving (Core.Eq, Core.Show, Core.Generic)
-- | Creates a value of 'ResellerSubscriptionsInsert' with the minimum fields required to make a request.
newResellerSubscriptionsInsert ::
-- | This can be either the customer\'s primary domain name or the customer\'s unique identifier. If the domain name for a customer changes, the old domain name cannot be used to access the customer, but the customer\'s unique identifier (as returned by the API) can always be used. We recommend storing the unique identifier in your systems where applicable. See 'customerId'.
Core.Text ->
-- | Multipart request metadata. See 'payload'.
Subscription ->
ResellerSubscriptionsInsert
newResellerSubscriptionsInsert customerId payload =
ResellerSubscriptionsInsert
{ xgafv = Core.Nothing,
accessToken = Core.Nothing,
action = Core.Nothing,
callback = Core.Nothing,
customerAuthToken = Core.Nothing,
customerId = customerId,
payload = payload,
sourceSkuId = Core.Nothing,
uploadType = Core.Nothing,
uploadProtocol = Core.Nothing
}
instance Core.GoogleRequest ResellerSubscriptionsInsert where
type Rs ResellerSubscriptionsInsert = Subscription
type Scopes ResellerSubscriptionsInsert = '[Apps'Order]
requestClient ResellerSubscriptionsInsert {..} =
go
customerId
xgafv
accessToken
action
callback
customerAuthToken
sourceSkuId
uploadType
uploadProtocol
(Core.Just Core.AltJSON)
payload
appsResellerService
where
go =
Core.buildClient
(Core.Proxy :: Core.Proxy ResellerSubscriptionsInsertResource)
Core.mempty