// Copyright 2025 Google LLC.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Code generated file. DO NOT EDIT.

// Package paymentsresellersubscription provides access to the Payments Reseller Subscription API.
//
// For product documentation, see: https://developers.google.com/payments/reseller/subscription/
//
// # Library status
//
// These client libraries are officially supported by Google. However, this
// library is considered complete and is in maintenance mode. This means
// that we will address critical bugs and security issues but will not add
// any new features.
//
// When possible, we recommend using our newer
// [Cloud Client Libraries for Go](https://pkg.go.dev/cloud.google.com/go)
// that are still actively being worked and iterated on.
//
// # Creating a client
//
// Usage example:
//
//	import "google.golang.org/api/paymentsresellersubscription/v1"
//	...
//	ctx := context.Background()
//	paymentsresellersubscriptionService, err := paymentsresellersubscription.NewService(ctx)
//
// In this example, Google Application Default Credentials are used for
// authentication. For information on how to create and obtain Application
// Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
//
// # Other authentication options
//
// To use an API key for authentication (note: some APIs do not support API
// keys), use [google.golang.org/api/option.WithAPIKey]:
//
//	paymentsresellersubscriptionService, err := paymentsresellersubscription.NewService(ctx, option.WithAPIKey("AIza..."))
//
// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth
// flow, use [google.golang.org/api/option.WithTokenSource]:
//
//	config := &oauth2.Config{...}
//	// ...
//	token, err := config.Exchange(ctx, ...)
//	paymentsresellersubscriptionService, err := paymentsresellersubscription.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
//
// See [google.golang.org/api/option.ClientOption] for details on options.
package paymentsresellersubscription // import "google.golang.org/api/paymentsresellersubscription/v1"

import (
	"bytes"
	"context"
	"encoding/json"
	"errors"
	"fmt"
	"io"
	"log/slog"
	"net/http"
	"net/url"
	"strconv"
	"strings"

	"github.com/googleapis/gax-go/v2/internallog"
	googleapi "google.golang.org/api/googleapi"
	internal "google.golang.org/api/internal"
	gensupport "google.golang.org/api/internal/gensupport"
	option "google.golang.org/api/option"
	internaloption "google.golang.org/api/option/internaloption"
	htransport "google.golang.org/api/transport/http"
)

// Always reference these packages, just in case the auto-generated code
// below doesn't.
var _ = bytes.NewBuffer
var _ = strconv.Itoa
var _ = fmt.Sprintf
var _ = json.NewDecoder
var _ = io.Copy
var _ = url.Parse
var _ = gensupport.MarshalJSON
var _ = googleapi.Version
var _ = errors.New
var _ = strings.Replace
var _ = context.Canceled
var _ = internaloption.WithDefaultEndpoint
var _ = internal.Version
var _ = internallog.New

const apiId = "paymentsresellersubscription:v1"
const apiName = "paymentsresellersubscription"
const apiVersion = "v1"
const basePath = "https://paymentsresellersubscription.googleapis.com/"
const basePathTemplate = "https://paymentsresellersubscription.UNIVERSE_DOMAIN/"
const mtlsBasePath = "https://paymentsresellersubscription.mtls.googleapis.com/"

// OAuth2 scopes used by this API.
const (
	// See and/or control the devices that you selected
	SdmServiceScope = "https://www.googleapis.com/auth/sdm.service"
)

// NewService creates a new Service.
func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
	scopesOption := internaloption.WithDefaultScopes(
		"https://www.googleapis.com/auth/sdm.service",
	)
	// NOTE: prepend, so we don't override user-specified scopes.
	opts = append([]option.ClientOption{scopesOption}, opts...)
	opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
	opts = append(opts, internaloption.WithDefaultEndpointTemplate(basePathTemplate))
	opts = append(opts, internaloption.WithDefaultMTLSEndpoint(mtlsBasePath))
	opts = append(opts, internaloption.EnableNewAuthLibrary())
	client, endpoint, err := htransport.NewClient(ctx, opts...)
	if err != nil {
		return nil, err
	}
	s := &Service{client: client, BasePath: basePath, logger: internaloption.GetLogger(opts)}
	s.Partners = NewPartnersService(s)
	if endpoint != "" {
		s.BasePath = endpoint
	}
	return s, nil
}

// New creates a new Service. It uses the provided http.Client for requests.
//
// Deprecated: please use NewService instead.
// To provide a custom HTTP client, use option.WithHTTPClient.
// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
func New(client *http.Client) (*Service, error) {
	if client == nil {
		return nil, errors.New("client is nil")
	}
	return NewService(context.TODO(), option.WithHTTPClient(client))
}

type Service struct {
	client    *http.Client
	logger    *slog.Logger
	BasePath  string // API endpoint base URL
	UserAgent string // optional additional User-Agent fragment

	Partners *PartnersService
}

func (s *Service) userAgent() string {
	if s.UserAgent == "" {
		return googleapi.UserAgent
	}
	return googleapi.UserAgent + " " + s.UserAgent
}

func NewPartnersService(s *Service) *PartnersService {
	rs := &PartnersService{s: s}
	rs.Products = NewPartnersProductsService(s)
	rs.Promotions = NewPartnersPromotionsService(s)
	rs.Subscriptions = NewPartnersSubscriptionsService(s)
	rs.UserSessions = NewPartnersUserSessionsService(s)
	return rs
}

type PartnersService struct {
	s *Service

	Products *PartnersProductsService

	Promotions *PartnersPromotionsService

	Subscriptions *PartnersSubscriptionsService

	UserSessions *PartnersUserSessionsService
}

func NewPartnersProductsService(s *Service) *PartnersProductsService {
	rs := &PartnersProductsService{s: s}
	return rs
}

type PartnersProductsService struct {
	s *Service
}

func NewPartnersPromotionsService(s *Service) *PartnersPromotionsService {
	rs := &PartnersPromotionsService{s: s}
	return rs
}

type PartnersPromotionsService struct {
	s *Service
}

func NewPartnersSubscriptionsService(s *Service) *PartnersSubscriptionsService {
	rs := &PartnersSubscriptionsService{s: s}
	return rs
}

type PartnersSubscriptionsService struct {
	s *Service
}

func NewPartnersUserSessionsService(s *Service) *PartnersUserSessionsService {
	rs := &PartnersUserSessionsService{s: s}
	return rs
}

type PartnersUserSessionsService struct {
	s *Service
}

// GoogleCloudPaymentsResellerSubscriptionV1Amount: Describes the amount unit
// including the currency code.
type GoogleCloudPaymentsResellerSubscriptionV1Amount struct {
	// AmountMicros: Required. Amount in micros (1_000_000 micros = 1 currency
	// unit)
	AmountMicros int64 `json:"amountMicros,omitempty,string"`
	// CurrencyCode: Required. Currency codes in accordance with [ISO-4217 Currency
	// Codes] (https://en.wikipedia.org/wiki/ISO_4217). For example, USD.
	CurrencyCode string `json:"currencyCode,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AmountMicros") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AmountMicros") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1Amount) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1Amount
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1CancelSubscriptionRequest: Request
// to cancel a subscription.
type GoogleCloudPaymentsResellerSubscriptionV1CancelSubscriptionRequest struct {
	// CancelImmediately: Optional. If true, Google will cancel the subscription
	// immediately, and may or may not (based on the contract) issue a prorated
	// refund for the remainder of the billing cycle. Otherwise, Google defers the
	// cancelation at renewal_time, and will not issue a refund. - YouTube
	// subscriptions must use this option currently. However, the user will still
	// have access to the subscription until the end of the billing cycle.
	CancelImmediately bool `json:"cancelImmediately,omitempty"`
	// CancellationReason: Specifies the reason for the cancellation.
	//
	// Possible values:
	//   "CANCELLATION_REASON_UNSPECIFIED" - Reason is unspecified. Should not be
	// used.
	//   "CANCELLATION_REASON_FRAUD" - Fraudualant transaction.
	//   "CANCELLATION_REASON_REMORSE" - Buyer's remorse.
	//   "CANCELLATION_REASON_ACCIDENTAL_PURCHASE" - Accidential purchase.
	//   "CANCELLATION_REASON_PAST_DUE" - Payment is past due.
	//   "CANCELLATION_REASON_ACCOUNT_CLOSED" - Used for notification only, do not
	// use in Cancel API. User account closed.
	//   "CANCELLATION_REASON_UPGRADE_DOWNGRADE" - Used for notification only, do
	// not use in Cancel API. Cancellation due to upgrade or downgrade.
	//   "CANCELLATION_REASON_USER_DELINQUENCY" - Cancellation due to user
	// delinquency
	//   "CANCELLATION_REASON_SYSTEM_ERROR" - Used for notification only, do not
	// use in Cancel API. Cancellation due to an unrecoverable system error.
	//   "CANCELLATION_REASON_SYSTEM_CANCEL" - Used for notification only, do not
	// use in Cancel API. The subscription is cancelled by Google automatically
	// since it is no longer valid.
	//   "CANCELLATION_REASON_OTHER" - Other reason.
	CancellationReason string `json:"cancellationReason,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CancelImmediately") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CancelImmediately") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1CancelSubscriptionRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1CancelSubscriptionRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1CancelSubscriptionResponse:
// Response that contains the cancelled subscription resource.
type GoogleCloudPaymentsResellerSubscriptionV1CancelSubscriptionResponse struct {
	// Subscription: The cancelled subscription resource.
	Subscription *GoogleCloudPaymentsResellerSubscriptionV1Subscription `json:"subscription,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Subscription") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Subscription") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1CancelSubscriptionResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1CancelSubscriptionResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1CreateSubscriptionIntent: Intent
// message for creating a Subscription resource.
type GoogleCloudPaymentsResellerSubscriptionV1CreateSubscriptionIntent struct {
	// Parent: Required. The parent resource name, which is the identifier of the
	// partner.
	Parent string `json:"parent,omitempty"`
	// Subscription: Required. The Subscription to be created.
	Subscription *GoogleCloudPaymentsResellerSubscriptionV1Subscription `json:"subscription,omitempty"`
	// SubscriptionId: Required. Identifies the subscription resource on the
	// Partner side. The value is restricted to 63 ASCII characters at the maximum.
	// If a subscription was previously created with the same subscription_id, we
	// will directly return that one.
	SubscriptionId string `json:"subscriptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Parent") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Parent") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1CreateSubscriptionIntent) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1CreateSubscriptionIntent
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1Duration: Describes the length of a
// period of a time.
type GoogleCloudPaymentsResellerSubscriptionV1Duration struct {
	// Count: number of duration units to be included.
	Count int64 `json:"count,omitempty"`
	// Unit: The unit used for the duration
	//
	// Possible values:
	//   "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.
	Unit string `json:"unit,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Count") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Count") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1Duration) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1Duration
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionIntent: Intent
// for entitling the previously provisioned subscription to an end user.
type GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionIntent struct {
	// Name: Required. The name of the subscription resource that is entitled to
	// the current end user.
	Name string `json:"name,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Name") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Name") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionIntent) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionIntent
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionRequest: Partner
// request for entitling the previously provisioned subscription to an end
// user. The end user identity is inferred from the request OAuth context.
type GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionRequest struct {
	// LineItemEntitlementDetails: Optional. The line items to be entitled. If
	// unspecified, all line items will be entitled.
	LineItemEntitlementDetails []*GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionRequestLineItemEntitlementDetails `json:"lineItemEntitlementDetails,omitempty"`
	// ForceSendFields is a list of field names (e.g. "LineItemEntitlementDetails")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "LineItemEntitlementDetails") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionRequestLineItemEn
// titlementDetails: The details of the line item to be entitled.
type GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionRequestLineItemEntitlementDetails struct {
	// LineItemIndex: Required. The index of the line item to be entitled.
	LineItemIndex int64 `json:"lineItemIndex,omitempty"`
	// Products: Optional. Only applicable if the line item corresponds to a hard
	// bundle. Product resource names that identify the bundle elements to be
	// entitled in the line item. If unspecified, all bundle elements will be
	// entitled. The format is 'partners/{partner_id}/products/{product_id}'.
	Products []string `json:"products,omitempty"`
	// ForceSendFields is a list of field names (e.g. "LineItemIndex") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "LineItemIndex") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionRequestLineItemEntitlementDetails) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionRequestLineItemEntitlementDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionResponse:
// Response that contains the entitled subscription resource.
type GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionResponse struct {
	// Subscription: The subscription that has user linked to it.
	Subscription *GoogleCloudPaymentsResellerSubscriptionV1Subscription `json:"subscription,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Subscription") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Subscription") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1ExtendSubscriptionRequest: Request
// message for extending a Subscription resource. A new recurrence will be made
// based on the subscription schedule defined by the original product.
type GoogleCloudPaymentsResellerSubscriptionV1ExtendSubscriptionRequest struct {
	// Extension: Required. Specifies details of the extension. Currently, the
	// duration of the extension must be exactly one billing cycle of the original
	// subscription.
	Extension *GoogleCloudPaymentsResellerSubscriptionV1Extension `json:"extension,omitempty"`
	// RequestId: Required. Restricted to 36 ASCII characters. A random UUID is
	// recommended. The idempotency key for the request. The ID generation logic is
	// controlled by the partner. request_id should be the same as on retries of
	// the same request. A different request_id must be used for a extension of a
	// different cycle.
	RequestId string `json:"requestId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Extension") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Extension") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1ExtendSubscriptionRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1ExtendSubscriptionRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1ExtendSubscriptionResponse:
// Response that contains the timestamps after the extension.
type GoogleCloudPaymentsResellerSubscriptionV1ExtendSubscriptionResponse struct {
	// CycleEndTime: The time at which the subscription is expected to be extended,
	// in ISO 8061 format. UTC timezone. Example,
	// "cycleEndTime":"2019-08-31T17:28:54.564Z"
	CycleEndTime string `json:"cycleEndTime,omitempty"`
	// FreeTrialEndTime: End of the free trial period, in ISO 8061 format. UTC
	// timezone. Example, "freeTrialEndTime":"2019-08-31T17:28:54.564Z" This time
	// will be set the same as initial subscription creation time if no free trial
	// period is offered to the partner.
	FreeTrialEndTime string `json:"freeTrialEndTime,omitempty"`
	// RenewalTime: Output only. The time at which the subscription is expected to
	// be renewed by Google - a new charge will be incurred and the service
	// entitlement will be renewed. A non-immediate cancellation will take place at
	// this time too, before which, the service entitlement for the end user will
	// remain valid. UTC timezone in ISO 8061 format. For example:
	// "2019-08-31T17:28:54.564Z"
	RenewalTime string `json:"renewalTime,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "CycleEndTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CycleEndTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1ExtendSubscriptionResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1ExtendSubscriptionResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1Extension: Describes the details of
// an extension request.
type GoogleCloudPaymentsResellerSubscriptionV1Extension struct {
	// Duration: Required. Specifies the period of access the subscription should
	// grant.
	Duration *GoogleCloudPaymentsResellerSubscriptionV1Duration `json:"duration,omitempty"`
	// PartnerUserToken: Required. Identifier of the end-user in partner’s
	// system.
	PartnerUserToken string `json:"partnerUserToken,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Duration") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Duration") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1Extension) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1Extension
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1FindEligiblePromotionsRequest:
// Request to find eligible promotions for the current user.
type GoogleCloudPaymentsResellerSubscriptionV1FindEligiblePromotionsRequest struct {
	// Filter: Optional. Specifies the filters for the promotion results. The
	// syntax is defined in https://google.aip.dev/160 with the following caveats:
	// 1. Only the following features are supported: - Logical operator `AND` -
	// Comparison operator `=` (no wildcards `*`) - Traversal operator `.` - Has
	// operator `:` (no wildcards `*`) 2. Only the following fields are supported:
	// - `applicableProducts` - `regionCodes` -
	// `youtubePayload.partnerEligibilityId` - `youtubePayload.postalCode` 3.
	// Unless explicitly mentioned above, other features are not supported.
	// Example: `applicableProducts:partners/partner1/products/product1 AND
	// regionCodes:US AND youtubePayload.postalCode=94043 AND
	// youtubePayload.partnerEligibilityId=eligibility-id`
	Filter string `json:"filter,omitempty"`
	// PageSize: Optional. The maximum number of promotions to return. The service
	// may return fewer than this value. If unspecified, at most 50 products will
	// be returned. The maximum value is 1000; values above 1000 will be coerced to
	// 1000.
	PageSize int64 `json:"pageSize,omitempty"`
	// PageToken: Optional. A page token, received from a previous `ListPromotions`
	// call. Provide this to retrieve the subsequent page. When paginating, all
	// other parameters provided to `ListPromotions` must match the call that
	// provided the page token.
	PageToken string `json:"pageToken,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Filter") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Filter") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1FindEligiblePromotionsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1FindEligiblePromotionsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1FindEligiblePromotionsResponse:
// Response containing the found promotions for the current user.
type GoogleCloudPaymentsResellerSubscriptionV1FindEligiblePromotionsResponse struct {
	// NextPageToken: A token, which can be sent as `page_token` to retrieve the
	// next page. If this field is empty, there are no subsequent pages.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// Promotions: The promotions for the current user.
	Promotions []*GoogleCloudPaymentsResellerSubscriptionV1Promotion `json:"promotions,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NextPageToken") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1FindEligiblePromotionsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1FindEligiblePromotionsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1FiniteBillingCycleDetails: Details
// for a subscriptiin line item with finite billing cycles.
type GoogleCloudPaymentsResellerSubscriptionV1FiniteBillingCycleDetails struct {
	// BillingCycleCountLimit: Required. The number of a subscription line item
	// billing cycles after which billing will stop automatically.
	BillingCycleCountLimit int64 `json:"billingCycleCountLimit,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "BillingCycleCountLimit") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BillingCycleCountLimit") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1FiniteBillingCycleDetails) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1FiniteBillingCycleDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1GenerateUserSessionRequest:
// [Preview only] Request to generate a user session.
type GoogleCloudPaymentsResellerSubscriptionV1GenerateUserSessionRequest struct {
	// IntentPayload: The user intent to generate the user session.
	IntentPayload *GoogleCloudPaymentsResellerSubscriptionV1IntentPayload `json:"intentPayload,omitempty"`
	// ForceSendFields is a list of field names (e.g. "IntentPayload") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "IntentPayload") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1GenerateUserSessionRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1GenerateUserSessionRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1GenerateUserSessionResponse:
// [Preview only] Response that contains the details for generated user
// session.
type GoogleCloudPaymentsResellerSubscriptionV1GenerateUserSessionResponse struct {
	// UserSession: The generated user session. The token size is proportional to
	// the size of the intent payload.
	UserSession *GoogleCloudPaymentsResellerSubscriptionV1UserSession `json:"userSession,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "UserSession") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "UserSession") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1GenerateUserSessionResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1GenerateUserSessionResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1GoogleHomePayload: Payload specific
// for Google Home products.
type GoogleCloudPaymentsResellerSubscriptionV1GoogleHomePayload struct {
	// AttachedToGoogleStructure: Output only. This identifies whether the
	// subscription is attached to a Google Home structure.
	AttachedToGoogleStructure bool `json:"attachedToGoogleStructure,omitempty"`
	// PartnerStructureId: Optional. This identifies the structure ID on partner
	// side that the subscription should be applied to. Only required when the
	// partner requires structure mapping.
	PartnerStructureId string `json:"partnerStructureId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AttachedToGoogleStructure")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AttachedToGoogleStructure") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1GoogleHomePayload) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1GoogleHomePayload
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1GoogleOnePayload: Payload specific
// to Google One products.
type GoogleCloudPaymentsResellerSubscriptionV1GoogleOnePayload struct {
	// Campaigns: Campaign attributed to sales of this subscription.
	Campaigns []string `json:"campaigns,omitempty"`
	// Offering: The type of offering the subscription was sold by the partner.
	// e.g. VAS.
	//
	// Possible values:
	//   "OFFERING_UNSPECIFIED" - The type of partner offering is unspecified.
	//   "OFFERING_VAS_BUNDLE" - Google One product purchased as a Value added
	// service in addition to existing partner's products. Customer pays additional
	// amount for Google One product.
	//   "OFFERING_VAS_STANDALONE" - Google One product purchased by itself by
	// customer as a value add service. Customer pays additional amount for Google
	// One product.
	//   "OFFERING_HARD_BUNDLE" - Product purchased as part of a hard bundle where
	// Google One was included with the bundle. Google One pricing is included in
	// the bundle.
	//   "OFFERING_SOFT_BUNDLE" - Purchased as part of a bundle where Google One
	// was provided as an option. Google One pricing is included in the bundle.
	Offering string `json:"offering,omitempty"`
	// SalesChannel: The type of sales channel through which the subscription was
	// sold.
	//
	// Possible values:
	//   "CHANNEL_UNSPECIFIED" - The channel type is unspecified.
	//   "CHANNEL_RETAIL" - Sold at store.
	//   "CHANNEL_ONLINE_WEB" - Sold through partner website.
	//   "CHANNEL_ONLINE_ANDROID_APP" - Sold through partner android app.
	//   "CHANNEL_ONLINE_IOS_APP" - Sold through partner iOS app.
	SalesChannel string `json:"salesChannel,omitempty"`
	// StoreId: The identifier for the partner store where the subscription was
	// sold.
	StoreId string `json:"storeId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Campaigns") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Campaigns") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1GoogleOnePayload) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1GoogleOnePayload
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1IntentPayload: The payload that
// describes the user intent.
type GoogleCloudPaymentsResellerSubscriptionV1IntentPayload struct {
	// CreateIntent: The request to create a subscription.
	CreateIntent *GoogleCloudPaymentsResellerSubscriptionV1CreateSubscriptionIntent `json:"createIntent,omitempty"`
	// EntitleIntent: The request to entitle a subscription.
	EntitleIntent *GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionIntent `json:"entitleIntent,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CreateIntent") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreateIntent") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1IntentPayload) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1IntentPayload
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1ListProductsResponse: Response that
// contains the products.
type GoogleCloudPaymentsResellerSubscriptionV1ListProductsResponse struct {
	// NextPageToken: A token, which can be sent as `page_token` to retrieve the
	// next page. If this field is empty, there are no subsequent pages.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// Products: The products for the specified partner.
	Products []*GoogleCloudPaymentsResellerSubscriptionV1Product `json:"products,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NextPageToken") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1ListProductsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1ListProductsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1ListPromotionsResponse: Response
// that contains the promotions.
type GoogleCloudPaymentsResellerSubscriptionV1ListPromotionsResponse struct {
	// NextPageToken: A token, which can be sent as `page_token` to retrieve the
	// next page. If this field is empty, there are no subsequent pages.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// Promotions: The promotions for the specified partner.
	Promotions []*GoogleCloudPaymentsResellerSubscriptionV1Promotion `json:"promotions,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NextPageToken") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1ListPromotionsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1ListPromotionsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1Location: Describes a location of
// an end user.
type GoogleCloudPaymentsResellerSubscriptionV1Location struct {
	// PostalCode: The postal code this location refers to. Ex. "94043"
	PostalCode string `json:"postalCode,omitempty"`
	// RegionCode: 2-letter ISO region code for current content region. Ex.
	// “US” Please refers to: https://en.wikipedia.org/wiki/ISO_3166-1
	RegionCode string `json:"regionCode,omitempty"`
	// ForceSendFields is a list of field names (e.g. "PostalCode") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "PostalCode") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1Location) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1Location
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1Product: A Product resource that
// defines a subscription service that can be resold.
type GoogleCloudPaymentsResellerSubscriptionV1Product struct {
	// BundleDetails: Output only. Specifies the details for a bundle product.
	BundleDetails *ProductBundleDetails `json:"bundleDetails,omitempty"`
	// FiniteBillingCycleDetails: Optional. Details for a subscription line item
	// with finite billing cycles. If unset, the line item will be charged
	// indefinitely.
	FiniteBillingCycleDetails *GoogleCloudPaymentsResellerSubscriptionV1FiniteBillingCycleDetails `json:"finiteBillingCycleDetails,omitempty"`
	// Name: Identifier. Response only. Resource name of the product. It will have
	// the format of "partners/{partner_id}/products/{product_id}"
	Name string `json:"name,omitempty"`
	// PriceConfigs: Output only. Price configs for the product in the available
	// regions.
	PriceConfigs []*GoogleCloudPaymentsResellerSubscriptionV1ProductPriceConfig `json:"priceConfigs,omitempty"`
	// ProductType: Output only. Specifies the type of the product.
	//
	// Possible values:
	//   "PRODUCT_TYPE_UNSPECIFIED" - Unspecified. It's reserved as an unexpected
	// value, should not be used.
	//   "PRODUCT_TYPE_SUBSCRIPTION" - The product is a subscription.
	//   "PRODUCT_TYPE_BUNDLE_SUBSCRIPTION" - The product is a bundled subscription
	// plan, which includes multiple subscription elements.
	ProductType string `json:"productType,omitempty"`
	// RegionCodes: Output only. 2-letter ISO region code where the product is
	// available in. Ex. "US" Please refers to:
	// https://en.wikipedia.org/wiki/ISO_3166-1
	RegionCodes []string `json:"regionCodes,omitempty"`
	// SubscriptionBillingCycleDuration: Output only. Specifies the length of the
	// billing cycle of the subscription.
	SubscriptionBillingCycleDuration *GoogleCloudPaymentsResellerSubscriptionV1Duration `json:"subscriptionBillingCycleDuration,omitempty"`
	// Titles: Output only. Localized human readable name of the product.
	Titles []*GoogleTypeLocalizedText `json:"titles,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BundleDetails") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BundleDetails") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1Product) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1Product
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1ProductBundleDetailsBundleElement:
// The individual product that is included in the bundle.
type GoogleCloudPaymentsResellerSubscriptionV1ProductBundleDetailsBundleElement struct {
	// Product: Required. Output only. Product resource name that identifies the
	// bundle element. The format is 'partners/{partner_id}/products/{product_id}'.
	Product string `json:"product,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Product") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Product") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1ProductBundleDetailsBundleElement) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1ProductBundleDetailsBundleElement
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1ProductPayload: Specifies product
// specific payload.
type GoogleCloudPaymentsResellerSubscriptionV1ProductPayload struct {
	// GoogleHomePayload: Payload specific to Google Home products.
	GoogleHomePayload *GoogleCloudPaymentsResellerSubscriptionV1GoogleHomePayload `json:"googleHomePayload,omitempty"`
	// GoogleOnePayload: Product-specific payloads. Payload specific to Google One
	// products.
	GoogleOnePayload *GoogleCloudPaymentsResellerSubscriptionV1GoogleOnePayload `json:"googleOnePayload,omitempty"`
	// YoutubePayload: Payload specific to Youtube products.
	YoutubePayload *GoogleCloudPaymentsResellerSubscriptionV1YoutubePayload `json:"youtubePayload,omitempty"`
	// ForceSendFields is a list of field names (e.g. "GoogleHomePayload") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "GoogleHomePayload") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1ProductPayload) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1ProductPayload
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1ProductPriceConfig: Configs the
// prices in an available region.
type GoogleCloudPaymentsResellerSubscriptionV1ProductPriceConfig struct {
	// Amount: Output only. The price in the region.
	Amount *GoogleCloudPaymentsResellerSubscriptionV1Amount `json:"amount,omitempty"`
	// RegionCode: Output only. 2-letter ISO region code where the product is
	// available in. Ex. "US".
	RegionCode string `json:"regionCode,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Amount") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Amount") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1ProductPriceConfig) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1ProductPriceConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1Promotion: A Promotion resource
// that defines a promotion for a subscription that can be resold.
type GoogleCloudPaymentsResellerSubscriptionV1Promotion struct {
	// ApplicableProducts: Output only. The product ids this promotion can be
	// applied to.
	ApplicableProducts []string `json:"applicableProducts,omitempty"`
	// EndTime: Optional. Specifies the end time (exclusive) of the period that the
	// promotion is available in. If unset, the promotion is available
	// indefinitely.
	EndTime string `json:"endTime,omitempty"`
	// FreeTrialDuration: Optional. Specifies the duration of the free trial of the
	// subscription when promotion_type is PROMOTION_TYPE_FREE_TRIAL
	FreeTrialDuration *GoogleCloudPaymentsResellerSubscriptionV1Duration `json:"freeTrialDuration,omitempty"`
	// IntroductoryPricingDetails: Optional. Specifies the introductory pricing
	// details when the promotion_type is PROMOTION_TYPE_INTRODUCTORY_PRICING.
	IntroductoryPricingDetails *GoogleCloudPaymentsResellerSubscriptionV1PromotionIntroductoryPricingDetails `json:"introductoryPricingDetails,omitempty"`
	// Name: Identifier. Response only. Resource name of the subscription
	// promotion. It will have the format of
	// "partners/{partner_id}/promotion/{promotion_id}"
	Name string `json:"name,omitempty"`
	// PromotionType: Output only. Specifies the type of the promotion.
	//
	// Possible values:
	//   "PROMOTION_TYPE_UNSPECIFIED" - The promotion type is unspecified.
	//   "PROMOTION_TYPE_FREE_TRIAL" - The promotion is a free trial.
	//   "PROMOTION_TYPE_INTRODUCTORY_PRICING" - The promotion is a reduced
	// introductory pricing.
	PromotionType string `json:"promotionType,omitempty"`
	// RegionCodes: Output only. 2-letter ISO region code where the promotion is
	// available in. Ex. "US" Please refers to:
	// https://en.wikipedia.org/wiki/ISO_3166-1
	RegionCodes []string `json:"regionCodes,omitempty"`
	// StartTime: Optional. Specifies the start time (inclusive) of the period that
	// the promotion is available in.
	StartTime string `json:"startTime,omitempty"`
	// Titles: Output only. Localized human readable name of the promotion.
	Titles []*GoogleTypeLocalizedText `json:"titles,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ApplicableProducts") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ApplicableProducts") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1Promotion) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1Promotion
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1PromotionIntroductoryPricingDetails:
//
//	The details of a introductory pricing promotion.
type GoogleCloudPaymentsResellerSubscriptionV1PromotionIntroductoryPricingDetails struct {
	// IntroductoryPricingSpecs: Output only. Specifies the introductory pricing
	// periods.
	IntroductoryPricingSpecs []*GoogleCloudPaymentsResellerSubscriptionV1PromotionIntroductoryPricingDetailsIntroductoryPricingSpec `json:"introductoryPricingSpecs,omitempty"`
	// ForceSendFields is a list of field names (e.g. "IntroductoryPricingSpecs")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "IntroductoryPricingSpecs") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1PromotionIntroductoryPricingDetails) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1PromotionIntroductoryPricingDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1PromotionIntroductoryPricingDetailsI
// ntroductoryPricingSpec: The duration of an introductory pricing promotion.
type GoogleCloudPaymentsResellerSubscriptionV1PromotionIntroductoryPricingDetailsIntroductoryPricingSpec struct {
	// DiscountAmount: Output only. The discount amount. The value is positive.
	DiscountAmount *GoogleCloudPaymentsResellerSubscriptionV1Amount `json:"discountAmount,omitempty"`
	// DiscountRatioMicros: Output only. The discount percentage in micros. For
	// example, 50,000 represents 5%.
	DiscountRatioMicros int64 `json:"discountRatioMicros,omitempty,string"`
	// RecurrenceCount: Output only. The duration of an introductory offer in
	// billing cycles.
	RecurrenceCount int64 `json:"recurrenceCount,omitempty"`
	// RegionCode: Output only. 2-letter ISO region code where the product is
	// available in. Ex. "US".
	RegionCode string `json:"regionCode,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DiscountAmount") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DiscountAmount") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1PromotionIntroductoryPricingDetailsIntroductoryPricingSpec) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1PromotionIntroductoryPricingDetailsIntroductoryPricingSpec
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1ResumeSubscriptionRequest: Request
// to resume a suspended subscription.
type GoogleCloudPaymentsResellerSubscriptionV1ResumeSubscriptionRequest struct {
}

// GoogleCloudPaymentsResellerSubscriptionV1ResumeSubscriptionResponse:
// Response that contains the resumed subscription.
type GoogleCloudPaymentsResellerSubscriptionV1ResumeSubscriptionResponse struct {
	// Subscription: The resumed subscription resource.
	Subscription *GoogleCloudPaymentsResellerSubscriptionV1Subscription `json:"subscription,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Subscription") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Subscription") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1ResumeSubscriptionResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1ResumeSubscriptionResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1ServicePeriod: A description of
// what time period or moment in time the product or service is being delivered
// over.
type GoogleCloudPaymentsResellerSubscriptionV1ServicePeriod struct {
	// EndTime: Optional. The end time of the service period. Time is exclusive.
	EndTime string `json:"endTime,omitempty"`
	// StartTime: Required. The start time of the service period. Time is
	// inclusive.
	StartTime string `json:"startTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EndTime") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "EndTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1ServicePeriod) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1ServicePeriod
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1Subscription: A subscription serves
// as a central billing entity between an external partner and Google. The
// underlying Google services rely on the subscription state to grant or revoke
// the user's service entitlement. It's important to note that the subscription
// state may not always perfectly align with the user's service entitlement.
// For example, some Google services may continue providing access to the user
// until the current billing cycle ends, even if the subscription has been
// immediately canceled. However, other services may not do the same. To fully
// understand the specific details, please consult the relevant contract or
// product policy.
type GoogleCloudPaymentsResellerSubscriptionV1Subscription struct {
	// CancellationDetails: Output only. Describes the details of a cancelled
	// subscription. Only applicable to subscription of state `STATE_CANCELLED`.
	CancellationDetails *GoogleCloudPaymentsResellerSubscriptionV1SubscriptionCancellationDetails `json:"cancellationDetails,omitempty"`
	// CreateTime: Output only. System generated timestamp when the subscription is
	// created. UTC timezone.
	CreateTime string `json:"createTime,omitempty"`
	// CycleEndTime: Output only. The time at which the subscription is expected to
	// be extended, in ISO 8061 format. UTC timezone. For example:
	// "2019-08-31T17:28:54.564Z"
	CycleEndTime string `json:"cycleEndTime,omitempty"`
	// EndUserEntitled: Output only. Indicates if the subscription is entitled to
	// the end user.
	EndUserEntitled bool `json:"endUserEntitled,omitempty"`
	// FreeTrialEndTime: Output only. End of the free trial period, in ISO 8061
	// format. For example, "2019-08-31T17:28:54.564Z". It will be set the same as
	// createTime if no free trial promotion is specified.
	FreeTrialEndTime string `json:"freeTrialEndTime,omitempty"`
	// LineItems: Required. The line items of the subscription.
	LineItems []*GoogleCloudPaymentsResellerSubscriptionV1SubscriptionLineItem `json:"lineItems,omitempty"`
	// MigrationDetails: Output only. Describes the details of the migrated
	// subscription. Only populated if this subscription is migrated from another
	// system.
	MigrationDetails *GoogleCloudPaymentsResellerSubscriptionV1SubscriptionMigrationDetails `json:"migrationDetails,omitempty"`
	// Name: Identifier. Resource name of the subscription. It will have the format
	// of "partners/{partner_id}/subscriptions/{subscription_id}". This is
	// available for authorizeAddon, but otherwise is response only.
	Name string `json:"name,omitempty"`
	// PartnerUserToken: Required. Identifier of the end-user in partner’s
	// system. The value is restricted to 63 ASCII characters at the maximum.
	PartnerUserToken string `json:"partnerUserToken,omitempty"`
	// ProcessingState: Output only. Describes the processing state of the
	// subscription. See more details at the lifecycle of a subscription
	// (/payments/reseller/subscription/reference/index/Receive.Notifications#paymen
	// ts-subscription-lifecycle).
	//
	// Possible values:
	//   "PROCESSING_STATE_UNSPECIFIED" - The processing state is unspecified.
	//   "PROCESSING_STATE_CANCELLING" - The subscription is being cancelled.
	//   "PROCESSING_STATE_RECURRING" - The subscription is recurring.
	ProcessingState string `json:"processingState,omitempty"`
	// Products: Optional. Deprecated: consider using `line_items` as the input.
	// Required. Resource name that identifies the purchased products. The format
	// will be 'partners/{partner_id}/products/{product_id}'.
	Products []string `json:"products,omitempty"`
	// PromotionSpecs: Optional. Subscription-level promotions. Only free trial is
	// supported on this level. It determines the first renewal time of the
	// subscription to be the end of the free trial period. Specify the promotion
	// resource name only when used as input.
	PromotionSpecs []*GoogleCloudPaymentsResellerSubscriptionV1SubscriptionPromotionSpec `json:"promotionSpecs,omitempty"`
	// Promotions: Optional. Deprecated: consider using the top-level
	// `promotion_specs` as the input. Optional. Resource name that identifies one
	// or more promotions that can be applied on the product. A typical promotion
	// for a subscription is Free trial. The format will be
	// 'partners/{partner_id}/promotions/{promotion_id}'.
	Promotions []string `json:"promotions,omitempty"`
	// PurchaseTime: Optional. The timestamp when the user transaction was made
	// with the Partner. Specify for the case of "bundle with choice", and it must
	// be before the provision_time (when the user makes a selection).
	PurchaseTime string `json:"purchaseTime,omitempty"`
	// RedirectUri: Output only. The place where partners should redirect the
	// end-user to after creation. This field might also be populated when creation
	// failed. However, Partners should always prepare a default URL to redirect
	// the user in case this field is empty.
	RedirectUri string `json:"redirectUri,omitempty"`
	// RenewalTime: Output only. The time at which the subscription is expected to
	// be renewed by Google - a new charge will be incurred and the service
	// entitlement will be renewed. A non-immediate cancellation will take place at
	// this time too, before which, the service entitlement for the end user will
	// remain valid. UTC timezone in ISO 8061 format. For example:
	// "2019-08-31T17:28:54.564Z"
	RenewalTime string `json:"renewalTime,omitempty"`
	// ServiceLocation: Required. The location that the service is provided as
	// indicated by the partner.
	ServiceLocation *GoogleCloudPaymentsResellerSubscriptionV1Location `json:"serviceLocation,omitempty"`
	// State: Output only. Describes the state of the subscription. See more
	// details at the lifecycle of a subscription
	// (/payments/reseller/subscription/reference/index/Receive.Notifications#paymen
	// ts-subscription-lifecycle).
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - The state is unspecified.
	//   "STATE_CREATED" - The subscription is created, a state before it is moved
	// to STATE_ACTIVE.
	//   "STATE_ACTIVE" - The subscription is active.
	//   "STATE_CANCELLED" - The subscription is cancelled. This is the final state
	// of the subscription, as it can no longer be modified or reactivated.
	//   "STATE_IN_GRACE_PERIOD" - The subscription is in grace period. It can
	// happen: 1) in manual extend mode, the subscription is not extended by the
	// partner at the end of current cycle. 2) for outbound authorization enabled
	// partners, a renewal purchase order is rejected.
	//   "STATE_CANCEL_AT_END_OF_CYCLE" - The subscription is waiting to be
	// cancelled by the next recurrence cycle.
	//   "STATE_SUSPENDED" - The subscription is suspended.
	State string `json:"state,omitempty"`
	// UpdateTime: Output only. System generated timestamp when the subscription is
	// most recently updated. UTC timezone.
	UpdateTime string `json:"updateTime,omitempty"`
	// UpgradeDowngradeDetails: Optional. Details about the previous subscription
	// that this new subscription upgrades/downgrades from. Only populated if this
	// subscription is an upgrade/downgrade from another subscription.
	UpgradeDowngradeDetails *GoogleCloudPaymentsResellerSubscriptionV1SubscriptionUpgradeDowngradeDetails `json:"upgradeDowngradeDetails,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "CancellationDetails") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CancellationDetails") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1Subscription) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1Subscription
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1SubscriptionCancellationDetails:
// Describes the details of a cancelled or cancelling subscription.
type GoogleCloudPaymentsResellerSubscriptionV1SubscriptionCancellationDetails struct {
	// Reason: Output only. The reason of the cancellation.
	//
	// Possible values:
	//   "CANCELLATION_REASON_UNSPECIFIED" - Reason is unspecified. Should not be
	// used.
	//   "CANCELLATION_REASON_FRAUD" - Fraudualant transaction.
	//   "CANCELLATION_REASON_REMORSE" - Buyer's remorse.
	//   "CANCELLATION_REASON_ACCIDENTAL_PURCHASE" - Accidential purchase.
	//   "CANCELLATION_REASON_PAST_DUE" - Payment is past due.
	//   "CANCELLATION_REASON_ACCOUNT_CLOSED" - Used for notification only, do not
	// use in Cancel API. User account closed.
	//   "CANCELLATION_REASON_UPGRADE_DOWNGRADE" - Used for notification only, do
	// not use in Cancel API. Cancellation due to upgrade or downgrade.
	//   "CANCELLATION_REASON_USER_DELINQUENCY" - Cancellation due to user
	// delinquency
	//   "CANCELLATION_REASON_SYSTEM_ERROR" - Used for notification only, do not
	// use in Cancel API. Cancellation due to an unrecoverable system error.
	//   "CANCELLATION_REASON_SYSTEM_CANCEL" - Used for notification only, do not
	// use in Cancel API. The subscription is cancelled by Google automatically
	// since it is no longer valid.
	//   "CANCELLATION_REASON_OTHER" - Other reason.
	Reason string `json:"reason,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Reason") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Reason") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1SubscriptionCancellationDetails) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1SubscriptionCancellationDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1SubscriptionLineItem: Individual
// line item definition of a subscription.
type GoogleCloudPaymentsResellerSubscriptionV1SubscriptionLineItem struct {
	// Amount: Output only. The price of the product/service in this line item. The
	// amount could be the wholesale price, or it can include a cost of sale based
	// on the contract.
	Amount *GoogleCloudPaymentsResellerSubscriptionV1Amount `json:"amount,omitempty"`
	// BundleDetails: Output only. The bundle details for the line item. Only
	// populated if the line item corresponds to a hard bundle.
	BundleDetails *SubscriptionLineItemBundleDetails `json:"bundleDetails,omitempty"`
	// Description: Output only. Description of this line item.
	Description string `json:"description,omitempty"`
	// FiniteBillingCycleDetails: Optional. Details for a subscription line item
	// with finite billing cycles. If unset, the line item will be charged
	// indefinitely. Used only with LINE_ITEM_RECURRENCE_TYPE_PERIODIC.
	FiniteBillingCycleDetails *GoogleCloudPaymentsResellerSubscriptionV1FiniteBillingCycleDetails `json:"finiteBillingCycleDetails,omitempty"`
	// LineItemFreeTrialEndTime: Output only. The free trial end time will be
	// populated after the line item is successfully processed. End time of the
	// line item free trial period, in ISO 8061 format. For example,
	// "2019-08-31T17:28:54.564Z". It will be set the same as createTime if no free
	// trial promotion is specified.
	LineItemFreeTrialEndTime string `json:"lineItemFreeTrialEndTime,omitempty"`
	// LineItemIndex: Output only. A unique index of the subscription line item.
	LineItemIndex int64 `json:"lineItemIndex,omitempty"`
	// LineItemPromotionSpecs: Optional. The promotions applied on the line item.
	// It can be: - an introductory pricing promotion. - a free trial promotion.
	// This feature is not enabled. If used, the request will be rejected. When
	// used as input in Create or Provision API, specify its resource name only.
	LineItemPromotionSpecs []*GoogleCloudPaymentsResellerSubscriptionV1SubscriptionPromotionSpec `json:"lineItemPromotionSpecs,omitempty"`
	// OneTimeRecurrenceDetails: Output only. Details only set for a ONE_TIME
	// recurrence line item.
	OneTimeRecurrenceDetails *GoogleCloudPaymentsResellerSubscriptionV1SubscriptionLineItemOneTimeRecurrenceDetails `json:"oneTimeRecurrenceDetails,omitempty"`
	// Product: Required. Product resource name that identifies one the line item
	// The format is 'partners/{partner_id}/products/{product_id}'.
	Product string `json:"product,omitempty"`
	// ProductPayload: Optional. Product specific payload for this line item.
	ProductPayload *GoogleCloudPaymentsResellerSubscriptionV1ProductPayload `json:"productPayload,omitempty"`
	// RecurrenceType: Output only. The recurrence type of the line item.
	//
	// Possible values:
	//   "LINE_ITEM_RECURRENCE_TYPE_UNSPECIFIED" - The line item recurrence type is
	// unspecified.
	//   "LINE_ITEM_RECURRENCE_TYPE_PERIODIC" - The line item recurs periodically.
	//   "LINE_ITEM_RECURRENCE_TYPE_ONE_TIME" - The line item does not recur in the
	// future.
	RecurrenceType string `json:"recurrenceType,omitempty"`
	// State: Output only. The state of the line item.
	//
	// Possible values:
	//   "LINE_ITEM_STATE_UNSPECIFIED" - Unspecified state.
	//   "LINE_ITEM_STATE_ACTIVE" - The line item is in ACTIVE state. If the
	// subscription is cancelled or suspended, the line item will not be charged
	// even if the line item is active.
	//   "LINE_ITEM_STATE_INACTIVE" - The line item is in INACTIVE state.
	//   "LINE_ITEM_STATE_NEW" - The line item is new, and is not activated or
	// charged yet.
	//   "LINE_ITEM_STATE_ACTIVATING" - The line item is being activated in order
	// to be charged. If a free trial applies to the line item, the line item is
	// pending a prorated charge at the end of the free trial period, as indicated
	// by `line_item_free_trial_end_time`.
	//   "LINE_ITEM_STATE_DEACTIVATING" - The line item is being deactivated, and a
	// prorated refund in being processed.
	//   "LINE_ITEM_STATE_WAITING_TO_DEACTIVATE" - The line item is scheduled to be
	// deactivated at the end of the current cycle.
	//   "LINE_ITEM_STATE_OFF_CYCLE_CHARGING" - Line item is being charged
	// off-cycle.
	State string `json:"state,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Amount") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Amount") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1SubscriptionLineItem) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1SubscriptionLineItem
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1SubscriptionLineItemBundleDetailsBun
// dleElementDetails: The details for an element in the hard bundle.
type GoogleCloudPaymentsResellerSubscriptionV1SubscriptionLineItemBundleDetailsBundleElementDetails struct {
	// Product: Output only. Product resource name that identifies the bundle
	// element. The format is 'partners/{partner_id}/products/{product_id}'.
	Product string `json:"product,omitempty"`
	// UserAccountLinkedTime: Output only. The time when this product is linked to
	// an end user.
	UserAccountLinkedTime string `json:"userAccountLinkedTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Product") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Product") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1SubscriptionLineItemBundleDetailsBundleElementDetails) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1SubscriptionLineItemBundleDetailsBundleElementDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1SubscriptionLineItemOneTimeRecurrenc
// eDetails: Details for a ONE_TIME recurrence line item.
type GoogleCloudPaymentsResellerSubscriptionV1SubscriptionLineItemOneTimeRecurrenceDetails struct {
	// ServicePeriod: Output only. The service period of the ONE_TIME line item.
	ServicePeriod *GoogleCloudPaymentsResellerSubscriptionV1ServicePeriod `json:"servicePeriod,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ServicePeriod") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ServicePeriod") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1SubscriptionLineItemOneTimeRecurrenceDetails) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1SubscriptionLineItemOneTimeRecurrenceDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1SubscriptionMigrationDetails:
// Describes the details of the migrated subscription.
type GoogleCloudPaymentsResellerSubscriptionV1SubscriptionMigrationDetails struct {
	// MigratedSubscriptionId: Output only. The migrated subscription id in the
	// legacy system.
	MigratedSubscriptionId string `json:"migratedSubscriptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "MigratedSubscriptionId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "MigratedSubscriptionId") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1SubscriptionMigrationDetails) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1SubscriptionMigrationDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1SubscriptionPromotionSpec:
// Describes the spec for one promotion.
type GoogleCloudPaymentsResellerSubscriptionV1SubscriptionPromotionSpec struct {
	// FreeTrialDuration: Output only. The duration of the free trial if the
	// promotion is of type FREE_TRIAL.
	FreeTrialDuration *GoogleCloudPaymentsResellerSubscriptionV1Duration `json:"freeTrialDuration,omitempty"`
	// IntroductoryPricingDetails: Output only. The details of the introductory
	// pricing spec if the promotion is of type INTRODUCTORY_PRICING.
	IntroductoryPricingDetails *GoogleCloudPaymentsResellerSubscriptionV1PromotionIntroductoryPricingDetails `json:"introductoryPricingDetails,omitempty"`
	// Promotion: Required. Promotion resource name that identifies a promotion.
	// The format is 'partners/{partner_id}/promotions/{promotion_id}'.
	Promotion string `json:"promotion,omitempty"`
	// Type: Output only. The type of the promotion for the spec.
	//
	// Possible values:
	//   "PROMOTION_TYPE_UNSPECIFIED" - The promotion type is unspecified.
	//   "PROMOTION_TYPE_FREE_TRIAL" - The promotion is a free trial.
	//   "PROMOTION_TYPE_INTRODUCTORY_PRICING" - The promotion is a reduced
	// introductory pricing.
	Type string `json:"type,omitempty"`
	// ForceSendFields is a list of field names (e.g. "FreeTrialDuration") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "FreeTrialDuration") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1SubscriptionPromotionSpec) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1SubscriptionPromotionSpec
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1SubscriptionUpgradeDowngradeDetails:
//
//	Details about the previous subscription that this new subscription
//
// upgrades/downgrades from.
type GoogleCloudPaymentsResellerSubscriptionV1SubscriptionUpgradeDowngradeDetails struct {
	// BillingCycleSpec: Required. Specifies the billing cycle spec for the new
	// upgraded/downgraded subscription.
	//
	// Possible values:
	//   "BILLING_CYCLE_SPEC_UNSPECIFIED" - Billing cycle spec is not specified.
	//   "BILLING_CYCLE_SPEC_ALIGN_WITH_PREVIOUS_SUBSCRIPTION" - The billing cycle
	// of the new subscription aligns with the previous subscription it upgrades or
	// downgrades from.
	//   "BILLING_CYCLE_SPEC_START_IMMEDIATELY" - The billing cycle of the new
	// subscription starts immediately.
	BillingCycleSpec string `json:"billingCycleSpec,omitempty"`
	// PreviousSubscriptionId: Required. The previous subscription id to be
	// replaced. This is not the full resource name, use the subscription_id
	// segment only.
	PreviousSubscriptionId string `json:"previousSubscriptionId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BillingCycleSpec") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BillingCycleSpec") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1SubscriptionUpgradeDowngradeDetails) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1SubscriptionUpgradeDowngradeDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1SuspendSubscriptionRequest: Request
// to suspend a subscription.
type GoogleCloudPaymentsResellerSubscriptionV1SuspendSubscriptionRequest struct {
}

// GoogleCloudPaymentsResellerSubscriptionV1SuspendSubscriptionResponse:
// Response that contains the suspended subscription.
type GoogleCloudPaymentsResellerSubscriptionV1SuspendSubscriptionResponse struct {
	// Subscription: The suspended subscription resource.
	Subscription *GoogleCloudPaymentsResellerSubscriptionV1Subscription `json:"subscription,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Subscription") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Subscription") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1SuspendSubscriptionResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1SuspendSubscriptionResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1UndoCancelSubscriptionRequest:
// Request to revoke a cancellation request.
type GoogleCloudPaymentsResellerSubscriptionV1UndoCancelSubscriptionRequest struct {
}

// GoogleCloudPaymentsResellerSubscriptionV1UndoCancelSubscriptionResponse:
// Response that contains the updated subscription resource.
type GoogleCloudPaymentsResellerSubscriptionV1UndoCancelSubscriptionResponse struct {
	// Subscription: The updated subscription resource.
	Subscription *GoogleCloudPaymentsResellerSubscriptionV1Subscription `json:"subscription,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Subscription") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Subscription") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1UndoCancelSubscriptionResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1UndoCancelSubscriptionResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1UserSession: A user session
// contains a short-lived token that includes information required to interact
// with Google Payments Reseller Platform using the following web endpoints. -
// A user session token should be generated dynamically for an authenticated
// user. You should refrain from sharing a token directly with a user in an
// unauthenticated context, such as SMS, or email. - You can re-generate new
// session tokens repeatedly for same `generate` request if necessary,
// regardless of the previous tokens being expired or not. You don't need to
// worry about multiple sessions resulting in duplicate fulfillments as
// guaranteed by the same subscription id. Please refer to the Google Managed
// Signup
// (/payments/reseller/subscription/reference/index/User.Signup.Integration/Goog
// le.Managed.Signup.\(In.Preview\)) documentation for additional integration
// details.
type GoogleCloudPaymentsResellerSubscriptionV1UserSession struct {
	// ExpireTime: Output only. The time at which the user session expires.
	ExpireTime string `json:"expireTime,omitempty"`
	// Token: Output only. The encrypted token of the user session, including the
	// information of the user's intent and request. This token should be provided
	// when redirecting the user to Google.
	Token string `json:"token,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ExpireTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ExpireTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1UserSession) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1UserSession
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleCloudPaymentsResellerSubscriptionV1YoutubePayload: Payload specific to
// Youtube products.
type GoogleCloudPaymentsResellerSubscriptionV1YoutubePayload struct {
	// AccessEndTime: Output only. The access expiration time for this line item.
	AccessEndTime string `json:"accessEndTime,omitempty"`
	// PartnerEligibilityIds: The list of eligibility_ids which are applicable for
	// the line item.
	PartnerEligibilityIds []string `json:"partnerEligibilityIds,omitempty"`
	// PartnerPlanType: Optional. Specifies the plan type offered to the end user
	// by the partner.
	//
	// Possible values:
	//   "PARTNER_PLAN_TYPE_UNSPECIFIED" - Unspecified. Should not use, reserved as
	// an invalid value.
	//   "PARTNER_PLAN_TYPE_STANDALONE" - This item is offered as a standalone
	// product to the user.
	//   "PARTNER_PLAN_TYPE_HARD_BUNDLE" - This item is bundled with another
	// partner offering, the item is provisioned at purchase time.
	//   "PARTNER_PLAN_TYPE_SOFT_BUNDLE" - This item is bundled with another
	// partner offering, the item is provisioned after puchase, when the user opts
	// in this Google service.
	PartnerPlanType string `json:"partnerPlanType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AccessEndTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AccessEndTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleCloudPaymentsResellerSubscriptionV1YoutubePayload) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudPaymentsResellerSubscriptionV1YoutubePayload
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleTypeLocalizedText: Localized variant of a text in a particular
// language.
type GoogleTypeLocalizedText struct {
	// LanguageCode: The text's BCP-47 language code, such as "en-US" or "sr-Latn".
	// For more information, see
	// http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
	LanguageCode string `json:"languageCode,omitempty"`
	// Text: Localized string in the language corresponding to language_code below.
	Text string `json:"text,omitempty"`
	// ForceSendFields is a list of field names (e.g. "LanguageCode") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "LanguageCode") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleTypeLocalizedText) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleTypeLocalizedText
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ProductBundleDetails: Details for a bundle product.
type ProductBundleDetails struct {
	// BundleElements: The individual products that are included in the bundle.
	BundleElements []*GoogleCloudPaymentsResellerSubscriptionV1ProductBundleDetailsBundleElement `json:"bundleElements,omitempty"`
	// EntitlementMode: The entitlement mode of the bundle product.
	//
	// Possible values:
	//   "ENTITLEMENT_MODE_UNSPECIFIED" - Unspecified. It's reserved as an
	// unexpected value, should not be used.
	//   "ENTITLEMENT_MODE_FULL" - All the bundle elements must be fully activated
	// in a single request.
	//   "ENTITLEMENT_MODE_INCREMENTAL" - The bundle elements could be
	// incrementally activated.
	EntitlementMode string `json:"entitlementMode,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BundleElements") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BundleElements") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ProductBundleDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ProductBundleDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SubscriptionLineItemBundleDetails: The bundle details for a line item
// corresponding to a hard bundle.
type SubscriptionLineItemBundleDetails struct {
	// BundleElementDetails: Output only. The details for each element in the hard
	// bundle.
	BundleElementDetails []*GoogleCloudPaymentsResellerSubscriptionV1SubscriptionLineItemBundleDetailsBundleElementDetails `json:"bundleElementDetails,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BundleElementDetails") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BundleElementDetails") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SubscriptionLineItemBundleDetails) MarshalJSON() ([]byte, error) {
	type NoMethod SubscriptionLineItemBundleDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type PartnersProductsListCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: Currently, it doesn't support **YouTube** products. Retrieves the
// products that can be resold by the partner. It should be autenticated with a
// service account.
//
//   - parent: The parent, the partner that can resell. Format:
//     partners/{partner}.
func (r *PartnersProductsService) List(parent string) *PartnersProductsListCall {
	c := &PartnersProductsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Filter sets the optional parameter "filter": Specifies the filters for the
// product results. The syntax is defined in https://google.aip.dev/160 with
// the following caveats: 1. Only the following features are supported: -
// Logical operator `AND` - Comparison operator `=` (no wildcards `*`) -
// Traversal operator `.` - Has operator `:` (no wildcards `*`) 2. Only the
// following fields are supported: - `regionCodes` -
// `youtubePayload.partnerEligibilityId` - `youtubePayload.postalCode` 3.
// Unless explicitly mentioned above, other features are not supported.
// Example: `regionCodes:US AND youtubePayload.postalCode=94043 AND
// youtubePayload.partnerEligibilityId=eligibility-id`
func (c *PartnersProductsListCall) Filter(filter string) *PartnersProductsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number of
// products to return. The service may return fewer than this value. If
// unspecified, at most 50 products will be returned. The maximum value is
// 1000; values above 1000 will be coerced to 1000.
func (c *PartnersProductsListCall) PageSize(pageSize int64) *PartnersProductsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A page token, received
// from a previous `ListProducts` call. Provide this to retrieve the subsequent
// page. When paginating, all other parameters provided to `ListProducts` must
// match the call that provided the page token.
func (c *PartnersProductsListCall) PageToken(pageToken string) *PartnersProductsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersProductsListCall) Fields(s ...googleapi.Field) *PartnersProductsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *PartnersProductsListCall) IfNoneMatch(entityTag string) *PartnersProductsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersProductsListCall) Context(ctx context.Context) *PartnersProductsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersProductsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersProductsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/products")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.products.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "paymentsresellersubscription.partners.products.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleCloudPaymentsResellerSubscriptionV1ListProductsResponse.ServerResponse
// .Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *PartnersProductsListCall) Do(opts ...googleapi.CallOption) (*GoogleCloudPaymentsResellerSubscriptionV1ListProductsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudPaymentsResellerSubscriptionV1ListProductsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.products.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *PartnersProductsListCall) Pages(ctx context.Context, f func(*GoogleCloudPaymentsResellerSubscriptionV1ListProductsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type PartnersPromotionsFindEligibleCall struct {
	s                                                                      *Service
	parent                                                                 string
	googlecloudpaymentsresellersubscriptionv1findeligiblepromotionsrequest *GoogleCloudPaymentsResellerSubscriptionV1FindEligiblePromotionsRequest
	urlParams_                                                             gensupport.URLParams
	ctx_                                                                   context.Context
	header_                                                                http.Header
}

// FindEligible: Currently, it is only enabeld for **YouTube**. Finds eligible
// promotions for the current user. The API requires user authorization via
// OAuth. The bare minimum oauth scope `openid` is sufficient, which will skip
// the consent screen.
//
//   - parent: The parent, the partner that can resell. Format:
//     partners/{partner}.
func (r *PartnersPromotionsService) FindEligible(parent string, googlecloudpaymentsresellersubscriptionv1findeligiblepromotionsrequest *GoogleCloudPaymentsResellerSubscriptionV1FindEligiblePromotionsRequest) *PartnersPromotionsFindEligibleCall {
	c := &PartnersPromotionsFindEligibleCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.googlecloudpaymentsresellersubscriptionv1findeligiblepromotionsrequest = googlecloudpaymentsresellersubscriptionv1findeligiblepromotionsrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersPromotionsFindEligibleCall) Fields(s ...googleapi.Field) *PartnersPromotionsFindEligibleCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersPromotionsFindEligibleCall) Context(ctx context.Context) *PartnersPromotionsFindEligibleCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersPromotionsFindEligibleCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersPromotionsFindEligibleCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlecloudpaymentsresellersubscriptionv1findeligiblepromotionsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/promotions:findEligible")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.promotions.findEligible", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "paymentsresellersubscription.partners.promotions.findEligible" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleCloudPaymentsResellerSubscriptionV1FindEligiblePromotionsResponse.Serv
// erResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *PartnersPromotionsFindEligibleCall) Do(opts ...googleapi.CallOption) (*GoogleCloudPaymentsResellerSubscriptionV1FindEligiblePromotionsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudPaymentsResellerSubscriptionV1FindEligiblePromotionsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.promotions.findEligible", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *PartnersPromotionsFindEligibleCall) Pages(ctx context.Context, f func(*GoogleCloudPaymentsResellerSubscriptionV1FindEligiblePromotionsResponse) error) error {
	c.ctx_ = ctx
	defer func(pt string) {
		c.googlecloudpaymentsresellersubscriptionv1findeligiblepromotionsrequest.PageToken = pt
	}(c.googlecloudpaymentsresellersubscriptionv1findeligiblepromotionsrequest.PageToken)
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.googlecloudpaymentsresellersubscriptionv1findeligiblepromotionsrequest.PageToken = x.NextPageToken
	}
}

type PartnersPromotionsListCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: Currently, it doesn't support **YouTube** promotions. Retrieves the
// promotions, such as free trial, that can be used by the partner. It should
// be autenticated with a service account.
//
//   - parent: The parent, the partner that can resell. Format:
//     partners/{partner}.
func (r *PartnersPromotionsService) List(parent string) *PartnersPromotionsListCall {
	c := &PartnersPromotionsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Filter sets the optional parameter "filter": Specifies the filters for the
// promotion results. The syntax is defined in https://google.aip.dev/160 with
// the following caveats: 1. Only the following features are supported: -
// Logical operator `AND` - Comparison operator `=` (no wildcards `*`) -
// Traversal operator `.` - Has operator `:` (no wildcards `*`) 2. Only the
// following fields are supported: - `applicableProducts` - `regionCodes` -
// `youtubePayload.partnerEligibilityId` - `youtubePayload.postalCode` 3.
// Unless explicitly mentioned above, other features are not supported.
// Example: `applicableProducts:partners/partner1/products/product1 AND
// regionCodes:US AND youtubePayload.postalCode=94043 AND
// youtubePayload.partnerEligibilityId=eligibility-id`
func (c *PartnersPromotionsListCall) Filter(filter string) *PartnersPromotionsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number of
// promotions to return. The service may return fewer than this value. If
// unspecified, at most 50 products will be returned. The maximum value is
// 1000; values above 1000 will be coerced to 1000.
func (c *PartnersPromotionsListCall) PageSize(pageSize int64) *PartnersPromotionsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A page token, received
// from a previous `ListPromotions` call. Provide this to retrieve the
// subsequent page. When paginating, all other parameters provided to
// `ListPromotions` must match the call that provided the page token.
func (c *PartnersPromotionsListCall) PageToken(pageToken string) *PartnersPromotionsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersPromotionsListCall) Fields(s ...googleapi.Field) *PartnersPromotionsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *PartnersPromotionsListCall) IfNoneMatch(entityTag string) *PartnersPromotionsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersPromotionsListCall) Context(ctx context.Context) *PartnersPromotionsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersPromotionsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersPromotionsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/promotions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.promotions.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "paymentsresellersubscription.partners.promotions.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleCloudPaymentsResellerSubscriptionV1ListPromotionsResponse.ServerRespon
// se.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *PartnersPromotionsListCall) Do(opts ...googleapi.CallOption) (*GoogleCloudPaymentsResellerSubscriptionV1ListPromotionsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudPaymentsResellerSubscriptionV1ListPromotionsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.promotions.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *PartnersPromotionsListCall) Pages(ctx context.Context, f func(*GoogleCloudPaymentsResellerSubscriptionV1ListPromotionsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type PartnersSubscriptionsCancelCall struct {
	s                                                                  *Service
	name                                                               string
	googlecloudpaymentsresellersubscriptionv1cancelsubscriptionrequest *GoogleCloudPaymentsResellerSubscriptionV1CancelSubscriptionRequest
	urlParams_                                                         gensupport.URLParams
	ctx_                                                               context.Context
	header_                                                            http.Header
}

// Cancel: Cancels a subscription service either immediately or by the end of
// the current billing cycle for their customers. It should be called directly
// by the partner using service accounts.
//
//   - name: The name of the subscription resource to be cancelled. It will have
//     the format of "partners/{partner_id}/subscriptions/{subscription_id}".
func (r *PartnersSubscriptionsService) Cancel(name string, googlecloudpaymentsresellersubscriptionv1cancelsubscriptionrequest *GoogleCloudPaymentsResellerSubscriptionV1CancelSubscriptionRequest) *PartnersSubscriptionsCancelCall {
	c := &PartnersSubscriptionsCancelCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlecloudpaymentsresellersubscriptionv1cancelsubscriptionrequest = googlecloudpaymentsresellersubscriptionv1cancelsubscriptionrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersSubscriptionsCancelCall) Fields(s ...googleapi.Field) *PartnersSubscriptionsCancelCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersSubscriptionsCancelCall) Context(ctx context.Context) *PartnersSubscriptionsCancelCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersSubscriptionsCancelCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersSubscriptionsCancelCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlecloudpaymentsresellersubscriptionv1cancelsubscriptionrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:cancel")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.subscriptions.cancel", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "paymentsresellersubscription.partners.subscriptions.cancel" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleCloudPaymentsResellerSubscriptionV1CancelSubscriptionResponse.ServerRe
// sponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *PartnersSubscriptionsCancelCall) Do(opts ...googleapi.CallOption) (*GoogleCloudPaymentsResellerSubscriptionV1CancelSubscriptionResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudPaymentsResellerSubscriptionV1CancelSubscriptionResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.subscriptions.cancel", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type PartnersSubscriptionsCreateCall struct {
	s                                                     *Service
	parentid                                              string
	googlecloudpaymentsresellersubscriptionv1subscription *GoogleCloudPaymentsResellerSubscriptionV1Subscription
	urlParams_                                            gensupport.URLParams
	ctx_                                                  context.Context
	header_                                               http.Header
}

// Create: Used by partners to create a subscription for their customers. The
// created subscription is associated with the end user inferred from the end
// user credentials. This API must be authorized by the end user using OAuth.
//
//   - parent: The parent resource name, which is the identifier of the partner.
//     It will have the format of "partners/{partner_id}".
func (r *PartnersSubscriptionsService) Create(parentid string, googlecloudpaymentsresellersubscriptionv1subscription *GoogleCloudPaymentsResellerSubscriptionV1Subscription) *PartnersSubscriptionsCreateCall {
	c := &PartnersSubscriptionsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parentid = parentid
	c.googlecloudpaymentsresellersubscriptionv1subscription = googlecloudpaymentsresellersubscriptionv1subscription
	return c
}

// SubscriptionId sets the optional parameter "subscriptionId": Required.
// Identifies the subscription resource on the Partner side. The value is
// restricted to 63 ASCII characters at the maximum. If a subscription was
// previously created with the same subscription_id, we will directly return
// that one.
func (c *PartnersSubscriptionsCreateCall) SubscriptionId(subscriptionId string) *PartnersSubscriptionsCreateCall {
	c.urlParams_.Set("subscriptionId", subscriptionId)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersSubscriptionsCreateCall) Fields(s ...googleapi.Field) *PartnersSubscriptionsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersSubscriptionsCreateCall) Context(ctx context.Context) *PartnersSubscriptionsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersSubscriptionsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersSubscriptionsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlecloudpaymentsresellersubscriptionv1subscription)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/subscriptions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parentid,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.subscriptions.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "paymentsresellersubscription.partners.subscriptions.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleCloudPaymentsResellerSubscriptionV1Subscription.ServerResponse.Header
// or (if a response was returned at all) in error.(*googleapi.Error).Header.
// Use googleapi.IsNotModified to check whether the returned error was because
// http.StatusNotModified was returned.
func (c *PartnersSubscriptionsCreateCall) Do(opts ...googleapi.CallOption) (*GoogleCloudPaymentsResellerSubscriptionV1Subscription, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudPaymentsResellerSubscriptionV1Subscription{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.subscriptions.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type PartnersSubscriptionsEntitleCall struct {
	s                                                                   *Service
	name                                                                string
	googlecloudpaymentsresellersubscriptionv1entitlesubscriptionrequest *GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionRequest
	urlParams_                                                          gensupport.URLParams
	ctx_                                                                context.Context
	header_                                                             http.Header
}

// Entitle: Entitles a previously provisioned subscription to the current end
// user. The end user identity is inferred from the authorized credential of
// the request. This API must be authorized by the end user using OAuth.
//
//   - name: The name of the subscription resource that is entitled to the
//     current end user. It will have the format of
//     "partners/{partner_id}/subscriptions/{subscription_id}".
func (r *PartnersSubscriptionsService) Entitle(name string, googlecloudpaymentsresellersubscriptionv1entitlesubscriptionrequest *GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionRequest) *PartnersSubscriptionsEntitleCall {
	c := &PartnersSubscriptionsEntitleCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlecloudpaymentsresellersubscriptionv1entitlesubscriptionrequest = googlecloudpaymentsresellersubscriptionv1entitlesubscriptionrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersSubscriptionsEntitleCall) Fields(s ...googleapi.Field) *PartnersSubscriptionsEntitleCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersSubscriptionsEntitleCall) Context(ctx context.Context) *PartnersSubscriptionsEntitleCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersSubscriptionsEntitleCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersSubscriptionsEntitleCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlecloudpaymentsresellersubscriptionv1entitlesubscriptionrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:entitle")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.subscriptions.entitle", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "paymentsresellersubscription.partners.subscriptions.entitle" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionResponse.ServerR
// esponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *PartnersSubscriptionsEntitleCall) Do(opts ...googleapi.CallOption) (*GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudPaymentsResellerSubscriptionV1EntitleSubscriptionResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.subscriptions.entitle", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type PartnersSubscriptionsExtendCall struct {
	s                                                                  *Service
	name                                                               string
	googlecloudpaymentsresellersubscriptionv1extendsubscriptionrequest *GoogleCloudPaymentsResellerSubscriptionV1ExtendSubscriptionRequest
	urlParams_                                                         gensupport.URLParams
	ctx_                                                               context.Context
	header_                                                            http.Header
}

// Extend: [Opt-in only] Most partners should be on auto-extend by default.
// Extends a subscription service for their customers on an ongoing basis for
// the subscription to remain active and renewable. It should be called
// directly by the partner using service accounts.
//
//   - name: The name of the subscription resource to be extended. It will have
//     the format of "partners/{partner_id}/subscriptions/{subscription_id}".
func (r *PartnersSubscriptionsService) Extend(name string, googlecloudpaymentsresellersubscriptionv1extendsubscriptionrequest *GoogleCloudPaymentsResellerSubscriptionV1ExtendSubscriptionRequest) *PartnersSubscriptionsExtendCall {
	c := &PartnersSubscriptionsExtendCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlecloudpaymentsresellersubscriptionv1extendsubscriptionrequest = googlecloudpaymentsresellersubscriptionv1extendsubscriptionrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersSubscriptionsExtendCall) Fields(s ...googleapi.Field) *PartnersSubscriptionsExtendCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersSubscriptionsExtendCall) Context(ctx context.Context) *PartnersSubscriptionsExtendCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersSubscriptionsExtendCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersSubscriptionsExtendCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlecloudpaymentsresellersubscriptionv1extendsubscriptionrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:extend")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.subscriptions.extend", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "paymentsresellersubscription.partners.subscriptions.extend" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleCloudPaymentsResellerSubscriptionV1ExtendSubscriptionResponse.ServerRe
// sponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *PartnersSubscriptionsExtendCall) Do(opts ...googleapi.CallOption) (*GoogleCloudPaymentsResellerSubscriptionV1ExtendSubscriptionResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudPaymentsResellerSubscriptionV1ExtendSubscriptionResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.subscriptions.extend", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type PartnersSubscriptionsGetCall struct {
	s            *Service
	name         string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Get: Gets a subscription by id. It should be called directly by the partner
// using service accounts.
//
//   - name: The name of the subscription resource to retrieve. It will have the
//     format of "partners/{partner_id}/subscriptions/{subscription_id}".
func (r *PartnersSubscriptionsService) Get(name string) *PartnersSubscriptionsGetCall {
	c := &PartnersSubscriptionsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersSubscriptionsGetCall) Fields(s ...googleapi.Field) *PartnersSubscriptionsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *PartnersSubscriptionsGetCall) IfNoneMatch(entityTag string) *PartnersSubscriptionsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersSubscriptionsGetCall) Context(ctx context.Context) *PartnersSubscriptionsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersSubscriptionsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersSubscriptionsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.subscriptions.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "paymentsresellersubscription.partners.subscriptions.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleCloudPaymentsResellerSubscriptionV1Subscription.ServerResponse.Header
// or (if a response was returned at all) in error.(*googleapi.Error).Header.
// Use googleapi.IsNotModified to check whether the returned error was because
// http.StatusNotModified was returned.
func (c *PartnersSubscriptionsGetCall) Do(opts ...googleapi.CallOption) (*GoogleCloudPaymentsResellerSubscriptionV1Subscription, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudPaymentsResellerSubscriptionV1Subscription{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.subscriptions.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type PartnersSubscriptionsProvisionCall struct {
	s                                                     *Service
	parentid                                              string
	googlecloudpaymentsresellersubscriptionv1subscription *GoogleCloudPaymentsResellerSubscriptionV1Subscription
	urlParams_                                            gensupport.URLParams
	ctx_                                                  context.Context
	header_                                               http.Header
}

// Provision: 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.
//
//   - parent: The parent resource name, which is the identifier of the partner.
//     It will have the format of "partners/{partner_id}".
func (r *PartnersSubscriptionsService) Provision(parentid string, googlecloudpaymentsresellersubscriptionv1subscription *GoogleCloudPaymentsResellerSubscriptionV1Subscription) *PartnersSubscriptionsProvisionCall {
	c := &PartnersSubscriptionsProvisionCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parentid = parentid
	c.googlecloudpaymentsresellersubscriptionv1subscription = googlecloudpaymentsresellersubscriptionv1subscription
	return c
}

// SubscriptionId sets the optional parameter "subscriptionId": Required.
// Identifies the subscription resource on the Partner side. The value is
// restricted to 63 ASCII characters at the maximum. If a subscription was
// previously created with the same subscription_id, we will directly return
// that one.
func (c *PartnersSubscriptionsProvisionCall) SubscriptionId(subscriptionId string) *PartnersSubscriptionsProvisionCall {
	c.urlParams_.Set("subscriptionId", subscriptionId)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersSubscriptionsProvisionCall) Fields(s ...googleapi.Field) *PartnersSubscriptionsProvisionCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersSubscriptionsProvisionCall) Context(ctx context.Context) *PartnersSubscriptionsProvisionCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersSubscriptionsProvisionCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersSubscriptionsProvisionCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlecloudpaymentsresellersubscriptionv1subscription)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/subscriptions:provision")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parentid,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.subscriptions.provision", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "paymentsresellersubscription.partners.subscriptions.provision" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleCloudPaymentsResellerSubscriptionV1Subscription.ServerResponse.Header
// or (if a response was returned at all) in error.(*googleapi.Error).Header.
// Use googleapi.IsNotModified to check whether the returned error was because
// http.StatusNotModified was returned.
func (c *PartnersSubscriptionsProvisionCall) Do(opts ...googleapi.CallOption) (*GoogleCloudPaymentsResellerSubscriptionV1Subscription, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudPaymentsResellerSubscriptionV1Subscription{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.subscriptions.provision", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type PartnersSubscriptionsResumeCall struct {
	s                                                                  *Service
	name                                                               string
	googlecloudpaymentsresellersubscriptionv1resumesubscriptionrequest *GoogleCloudPaymentsResellerSubscriptionV1ResumeSubscriptionRequest
	urlParams_                                                         gensupport.URLParams
	ctx_                                                               context.Context
	header_                                                            http.Header
}

// Resume: Resumes a suspended subscription. The new billing cycle will start
// at the time of the request. It should be called directly by the partner
// using service accounts.
//
//   - name: The name of the subscription resource to be resumed. It will have
//     the format of "partners/{partner_id}/subscriptions/{subscription_id}".
func (r *PartnersSubscriptionsService) Resume(name string, googlecloudpaymentsresellersubscriptionv1resumesubscriptionrequest *GoogleCloudPaymentsResellerSubscriptionV1ResumeSubscriptionRequest) *PartnersSubscriptionsResumeCall {
	c := &PartnersSubscriptionsResumeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlecloudpaymentsresellersubscriptionv1resumesubscriptionrequest = googlecloudpaymentsresellersubscriptionv1resumesubscriptionrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersSubscriptionsResumeCall) Fields(s ...googleapi.Field) *PartnersSubscriptionsResumeCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersSubscriptionsResumeCall) Context(ctx context.Context) *PartnersSubscriptionsResumeCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersSubscriptionsResumeCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersSubscriptionsResumeCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlecloudpaymentsresellersubscriptionv1resumesubscriptionrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:resume")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.subscriptions.resume", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "paymentsresellersubscription.partners.subscriptions.resume" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleCloudPaymentsResellerSubscriptionV1ResumeSubscriptionResponse.ServerRe
// sponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *PartnersSubscriptionsResumeCall) Do(opts ...googleapi.CallOption) (*GoogleCloudPaymentsResellerSubscriptionV1ResumeSubscriptionResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudPaymentsResellerSubscriptionV1ResumeSubscriptionResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.subscriptions.resume", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type PartnersSubscriptionsSuspendCall struct {
	s                                                                   *Service
	name                                                                string
	googlecloudpaymentsresellersubscriptionv1suspendsubscriptionrequest *GoogleCloudPaymentsResellerSubscriptionV1SuspendSubscriptionRequest
	urlParams_                                                          gensupport.URLParams
	ctx_                                                                context.Context
	header_                                                             http.Header
}

// Suspend: Suspends a subscription. Contract terms may dictate if a prorated
// refund will be issued upon suspension. It should be called directly by the
// partner using service accounts.
//
//   - name: The name of the subscription resource to be suspended. It will have
//     the format of "partners/{partner_id}/subscriptions/{subscription_id}".
func (r *PartnersSubscriptionsService) Suspend(name string, googlecloudpaymentsresellersubscriptionv1suspendsubscriptionrequest *GoogleCloudPaymentsResellerSubscriptionV1SuspendSubscriptionRequest) *PartnersSubscriptionsSuspendCall {
	c := &PartnersSubscriptionsSuspendCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlecloudpaymentsresellersubscriptionv1suspendsubscriptionrequest = googlecloudpaymentsresellersubscriptionv1suspendsubscriptionrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersSubscriptionsSuspendCall) Fields(s ...googleapi.Field) *PartnersSubscriptionsSuspendCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersSubscriptionsSuspendCall) Context(ctx context.Context) *PartnersSubscriptionsSuspendCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersSubscriptionsSuspendCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersSubscriptionsSuspendCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlecloudpaymentsresellersubscriptionv1suspendsubscriptionrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:suspend")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.subscriptions.suspend", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "paymentsresellersubscription.partners.subscriptions.suspend" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleCloudPaymentsResellerSubscriptionV1SuspendSubscriptionResponse.ServerR
// esponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *PartnersSubscriptionsSuspendCall) Do(opts ...googleapi.CallOption) (*GoogleCloudPaymentsResellerSubscriptionV1SuspendSubscriptionResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudPaymentsResellerSubscriptionV1SuspendSubscriptionResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.subscriptions.suspend", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type PartnersSubscriptionsUndoCancelCall struct {
	s                                                                      *Service
	name                                                                   string
	googlecloudpaymentsresellersubscriptionv1undocancelsubscriptionrequest *GoogleCloudPaymentsResellerSubscriptionV1UndoCancelSubscriptionRequest
	urlParams_                                                             gensupport.URLParams
	ctx_                                                                   context.Context
	header_                                                                http.Header
}

// UndoCancel: Currently, it is used by **Google One, Play Pass** partners.
// Revokes the pending cancellation of a subscription, which is currently in
// `STATE_CANCEL_AT_END_OF_CYCLE` state. If the subscription is already
// cancelled, the request will fail. It should be called directly by the
// partner using service accounts.
//
//   - name: The name of the subscription resource whose pending cancellation
//     needs to be undone. It will have the format of
//     "partners/{partner_id}/subscriptions/{subscription_id}".
func (r *PartnersSubscriptionsService) UndoCancel(name string, googlecloudpaymentsresellersubscriptionv1undocancelsubscriptionrequest *GoogleCloudPaymentsResellerSubscriptionV1UndoCancelSubscriptionRequest) *PartnersSubscriptionsUndoCancelCall {
	c := &PartnersSubscriptionsUndoCancelCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlecloudpaymentsresellersubscriptionv1undocancelsubscriptionrequest = googlecloudpaymentsresellersubscriptionv1undocancelsubscriptionrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersSubscriptionsUndoCancelCall) Fields(s ...googleapi.Field) *PartnersSubscriptionsUndoCancelCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersSubscriptionsUndoCancelCall) Context(ctx context.Context) *PartnersSubscriptionsUndoCancelCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersSubscriptionsUndoCancelCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersSubscriptionsUndoCancelCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlecloudpaymentsresellersubscriptionv1undocancelsubscriptionrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:undoCancel")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.subscriptions.undoCancel", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "paymentsresellersubscription.partners.subscriptions.undoCancel" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleCloudPaymentsResellerSubscriptionV1UndoCancelSubscriptionResponse.Serv
// erResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *PartnersSubscriptionsUndoCancelCall) Do(opts ...googleapi.CallOption) (*GoogleCloudPaymentsResellerSubscriptionV1UndoCancelSubscriptionResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudPaymentsResellerSubscriptionV1UndoCancelSubscriptionResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.subscriptions.undoCancel", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type PartnersUserSessionsGenerateCall struct {
	s                                                                   *Service
	parent                                                              string
	googlecloudpaymentsresellersubscriptionv1generateusersessionrequest *GoogleCloudPaymentsResellerSubscriptionV1GenerateUserSessionRequest
	urlParams_                                                          gensupport.URLParams
	ctx_                                                                context.Context
	header_                                                             http.Header
}

// Generate: This API replaces user authorized OAuth consent based APIs
// (Create, Entitle). Issues a timed session token for the given user intent.
// You can use the session token to redirect the user to Google to finish the
// signup flow. You can re-generate new session token repeatedly for the same
// request if necessary, regardless of the previous tokens being expired or
// not.
//
//   - parent: The parent, the partner that can resell. Format:
//     partners/{partner}.
func (r *PartnersUserSessionsService) Generate(parent string, googlecloudpaymentsresellersubscriptionv1generateusersessionrequest *GoogleCloudPaymentsResellerSubscriptionV1GenerateUserSessionRequest) *PartnersUserSessionsGenerateCall {
	c := &PartnersUserSessionsGenerateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.googlecloudpaymentsresellersubscriptionv1generateusersessionrequest = googlecloudpaymentsresellersubscriptionv1generateusersessionrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *PartnersUserSessionsGenerateCall) Fields(s ...googleapi.Field) *PartnersUserSessionsGenerateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *PartnersUserSessionsGenerateCall) Context(ctx context.Context) *PartnersUserSessionsGenerateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *PartnersUserSessionsGenerateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *PartnersUserSessionsGenerateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlecloudpaymentsresellersubscriptionv1generateusersessionrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/userSessions:generate")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.userSessions.generate", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "paymentsresellersubscription.partners.userSessions.generate" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleCloudPaymentsResellerSubscriptionV1GenerateUserSessionResponse.ServerR
// esponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *PartnersUserSessionsGenerateCall) Do(opts ...googleapi.CallOption) (*GoogleCloudPaymentsResellerSubscriptionV1GenerateUserSessionResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GoogleCloudPaymentsResellerSubscriptionV1GenerateUserSessionResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "paymentsresellersubscription.partners.userSessions.generate", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}
