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](/admin-sdk/reseller/v1/reference/customers/insert.html) method. For more information about creating a subscription for different payment plans, see [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#create_subscription).
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](/admin-sdk/reseller/v1/how-tos/batch.html) to transfer all of these subscriptions. For more information, see how to [transfer subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#transfer_a_subscription).

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

$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>);
}