insert method

Future<Subscription> insert(
  1. Subscription request,
  2. String customerId, {
  3. String? action,
  4. String? customerAuthToken,
  5. String? sourceSkuId,
  6. String? $fields,
})

Creates or transfer a subscription.

Create a subscription for a customer's account that you ordered using the Order a new customer account method. For more information about creating a subscription for different payment plans, see 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 batch operation to transfer all of these subscriptions. For more information, see how to transfer subscriptions.

request - The metadata request object.

Request parameters:

customerId - 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.

action - The intented insert action. Advised to set this when the customer already has a subscription for a different SKU in the same product. Possible string values are:

  • "actionUnspecified" : Auto determines whether to create new subscription, upgrade or downagrade existing subscription or transfer the existing subscription
  • "buy" : Create new subscription
  • "switch" : Switch existing subscription to another sku (upgrade/downgrade)

customerAuthToken - 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.

sourceSkuId - The sku_id of the existing subscription to be upgraded or downgraded. This is required when action is SWITCH.

$fields - Selector specifying which fields to include in a partial response.

Completes with a Subscription.

Completes with a commons.ApiRequestError if the API endpoint returned an error.

If the used http.Client completes with an error when making a REST call, this method will complete with the same error.

Implementation

async.Future<Subscription> insert(
  Subscription request,
  core.String customerId, {
  core.String? action,
  core.String? customerAuthToken,
  core.String? sourceSkuId,
  core.String? $fields,
}) async {
  final body_ = convert.json.encode(request);
  final queryParams_ = <core.String, core.List<core.String>>{
    if (action != null) 'action': [action],
    if (customerAuthToken != null) 'customerAuthToken': [customerAuthToken],
    if (sourceSkuId != null) 'sourceSkuId': [sourceSkuId],
    if ($fields != null) 'fields': [$fields],
  };

  final url_ =
      'apps/reseller/v1/customers/' +
      commons.escapeVariable('$customerId') +
      '/subscriptions';

  final response_ = await _requester.request(
    url_,
    'POST',
    body: body_,
    queryParams: queryParams_,
  );
  return Subscription.fromJson(
    response_ as core.Map<core.String, core.dynamic>,
  );
}