provision method

Future<Subscription> provision(
  1. Subscription request,
  2. String parent, {
  3. int? cycleOptions_initialCycleDuration_count,
  4. String? cycleOptions_initialCycleDuration_unit,
  5. String? subscriptionId,
  6. String? $fields,
})

Used by partners to provision a subscription for their customers.

This creates a subscription without associating it with the end user account. EntitleSubscription must be called separately using OAuth in order for the end user account to be associated with the subscription. It should be called directly by the partner using service accounts.

request - The metadata request object.

Request parameters:

parent - Required. The parent resource name, which is the identifier of the partner. It will have the format of "partners/{partner_id}". Value must have pattern ^partners/\[^/\]+$.

cycleOptions_initialCycleDuration_count - number of duration units to be included.

cycleOptions_initialCycleDuration_unit - The unit used for the duration Possible string values are:

  • "UNIT_UNSPECIFIED" : Default value, reserved as an invalid or an unexpected value.
  • "MONTH" : Unit of a calendar month.
  • "DAY" : Unit of a day.
  • "HOUR" : Unit of an hour. It is used for testing.

subscriptionId - Required. Identifies the subscription resource on the Partner side. The value is restricted to 63 ASCII characters at the maximum. If a subscription with the same ID already exists, the creation fails with an ALREADY_EXISTS error.

$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> provision(
  Subscription request,
  core.String parent, {
  core.int? cycleOptions_initialCycleDuration_count,
  core.String? cycleOptions_initialCycleDuration_unit,
  core.String? subscriptionId,
  core.String? $fields,
}) async {
  final body_ = convert.json.encode(request);
  final queryParams_ = <core.String, core.List<core.String>>{
    'cycleOptions.initialCycleDuration.count':
        ?cycleOptions_initialCycleDuration_count == null
        ? null
        : ['${cycleOptions_initialCycleDuration_count}'],
    'cycleOptions.initialCycleDuration.unit':
        ?cycleOptions_initialCycleDuration_unit == null
        ? null
        : [cycleOptions_initialCycleDuration_unit],
    'subscriptionId': ?subscriptionId == null ? null : [subscriptionId],
    'fields': ?$fields == null ? null : [$fields],
  };

  final url_ =
      'v1/' + core.Uri.encodeFull('$parent') + '/subscriptions:provision';

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