From 889ddf42abf5198caeeafcb7a15b9a1bfbf69d9c Mon Sep 17 00:00:00 2001 From: Azure SDK for Python bot Date: Wed, 28 Feb 2018 09:05:18 -0800 Subject: [PATCH 1/2] Generated from 2fe6680dcdc514ad3dcfa0e0ee48aeb08d701a62 (#1109) Fix type mismatch error. --- .../2017-02-27-preview/billing/version.go | 6 +- .../2017-04-24-preview/billing/version.go | 6 +- .../2018-03-01-preview/billing/accounts.go | 162 +++++ .../mgmt/2018-03-01-preview/billing/client.go | 51 ++ .../2018-03-01-preview/billing/invoices.go | 294 +++++++++ .../mgmt/2018-03-01-preview/billing/models.go | 615 ++++++++++++++++++ .../2018-03-01-preview/billing/operations.go | 126 ++++ .../2018-03-01-preview/billing/periods.go | 223 +++++++ .../2018-03-01-preview/billing/version.go | 28 + 9 files changed, 1503 insertions(+), 8 deletions(-) create mode 100644 services/billing/mgmt/2018-03-01-preview/billing/accounts.go create mode 100644 services/billing/mgmt/2018-03-01-preview/billing/client.go create mode 100644 services/billing/mgmt/2018-03-01-preview/billing/invoices.go create mode 100644 services/billing/mgmt/2018-03-01-preview/billing/models.go create mode 100644 services/billing/mgmt/2018-03-01-preview/billing/operations.go create mode 100644 services/billing/mgmt/2018-03-01-preview/billing/periods.go create mode 100644 services/billing/mgmt/2018-03-01-preview/billing/version.go diff --git a/services/billing/mgmt/2017-02-27-preview/billing/version.go b/services/billing/mgmt/2017-02-27-preview/billing/version.go index 4e3efd4ff6d2..2a6ab52a2145 100644 --- a/services/billing/mgmt/2017-02-27-preview/billing/version.go +++ b/services/billing/mgmt/2017-02-27-preview/billing/version.go @@ -1,7 +1,5 @@ package billing -import "github.com/Azure/azure-sdk-for-go/version" - // Copyright (c) Microsoft and contributors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -21,10 +19,10 @@ import "github.com/Azure/azure-sdk-for-go/version" // UserAgent returns the UserAgent string to use when sending http.Requests. func UserAgent() string { - return "Azure-SDK-For-Go/" + version.Number + " billing/2017-02-27-preview" + return "Azure-SDK-For-Go/latest services" } // Version returns the semantic version (see http://semver.org) of the client. func Version() string { - return version.Number + return "latest" } diff --git a/services/billing/mgmt/2017-04-24-preview/billing/version.go b/services/billing/mgmt/2017-04-24-preview/billing/version.go index be657dc8853d..2a6ab52a2145 100644 --- a/services/billing/mgmt/2017-04-24-preview/billing/version.go +++ b/services/billing/mgmt/2017-04-24-preview/billing/version.go @@ -1,7 +1,5 @@ package billing -import "github.com/Azure/azure-sdk-for-go/version" - // Copyright (c) Microsoft and contributors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -21,10 +19,10 @@ import "github.com/Azure/azure-sdk-for-go/version" // UserAgent returns the UserAgent string to use when sending http.Requests. func UserAgent() string { - return "Azure-SDK-For-Go/" + version.Number + " billing/2017-04-24-preview" + return "Azure-SDK-For-Go/latest services" } // Version returns the semantic version (see http://semver.org) of the client. func Version() string { - return version.Number + return "latest" } diff --git a/services/billing/mgmt/2018-03-01-preview/billing/accounts.go b/services/billing/mgmt/2018-03-01-preview/billing/accounts.go new file mode 100644 index 000000000000..b362601509e2 --- /dev/null +++ b/services/billing/mgmt/2018-03-01-preview/billing/accounts.go @@ -0,0 +1,162 @@ +package billing + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "net/http" +) + +// AccountsClient is the billing client provides access to billing resources for Azure subscriptions. +type AccountsClient struct { + BaseClient +} + +// NewAccountsClient creates an instance of the AccountsClient client. +func NewAccountsClient(subscriptionID string) AccountsClient { + return NewAccountsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewAccountsClientWithBaseURI creates an instance of the AccountsClient client. +func NewAccountsClientWithBaseURI(baseURI string, subscriptionID string) AccountsClient { + return AccountsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Get gets a billing account by name. +// +// name is billing Account name. +func (client AccountsClient) Get(ctx context.Context, name string) (result AccountResult, err error) { + req, err := client.GetPreparer(ctx, name) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.AccountsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "billing.AccountsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.AccountsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client AccountsClient) GetPreparer(ctx context.Context, name string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "name": autorest.Encode("path", name), + } + + const APIVersion = "2018-03-01-preview" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/providers/Microsoft.Billing/billingAccounts/{name}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client AccountsClient) GetSender(req *http.Request) (*http.Response, error) { + return autorest.SendWithSender(client, req, + autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client AccountsClient) GetResponder(resp *http.Response) (result AccountResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists the billing accounts the caller has access to. +func (client AccountsClient) List(ctx context.Context) (result AccountListResult, err error) { + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.AccountsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "billing.AccountsClient", "List", resp, "Failure sending request") + return + } + + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.AccountsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client AccountsClient) ListPreparer(ctx context.Context) (*http.Request, error) { + const APIVersion = "2018-03-01-preview" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPath("/providers/Microsoft.Billing/billingAccounts"), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client AccountsClient) ListSender(req *http.Request) (*http.Response, error) { + return autorest.SendWithSender(client, req, + autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client AccountsClient) ListResponder(resp *http.Response) (result AccountListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/services/billing/mgmt/2018-03-01-preview/billing/client.go b/services/billing/mgmt/2018-03-01-preview/billing/client.go new file mode 100644 index 000000000000..0da92af415db --- /dev/null +++ b/services/billing/mgmt/2018-03-01-preview/billing/client.go @@ -0,0 +1,51 @@ +// Package billing implements the Azure ARM Billing service API version 2018-03-01-preview. +// +// Billing client provides access to billing resources for Azure subscriptions. +package billing + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "github.com/Azure/go-autorest/autorest" +) + +const ( + // DefaultBaseURI is the default URI used for the service Billing + DefaultBaseURI = "https://management.azure.com" +) + +// BaseClient is the base client for Billing. +type BaseClient struct { + autorest.Client + BaseURI string + SubscriptionID string +} + +// New creates an instance of the BaseClient client. +func New(subscriptionID string) BaseClient { + return NewWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewWithBaseURI creates an instance of the BaseClient client. +func NewWithBaseURI(baseURI string, subscriptionID string) BaseClient { + return BaseClient{ + Client: autorest.NewClientWithUserAgent(UserAgent()), + BaseURI: baseURI, + SubscriptionID: subscriptionID, + } +} diff --git a/services/billing/mgmt/2018-03-01-preview/billing/invoices.go b/services/billing/mgmt/2018-03-01-preview/billing/invoices.go new file mode 100644 index 000000000000..7f92d8a21b5f --- /dev/null +++ b/services/billing/mgmt/2018-03-01-preview/billing/invoices.go @@ -0,0 +1,294 @@ +package billing + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "net/http" +) + +// InvoicesClient is the billing client provides access to billing resources for Azure subscriptions. +type InvoicesClient struct { + BaseClient +} + +// NewInvoicesClient creates an instance of the InvoicesClient client. +func NewInvoicesClient(subscriptionID string) InvoicesClient { + return NewInvoicesClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewInvoicesClientWithBaseURI creates an instance of the InvoicesClient client. +func NewInvoicesClientWithBaseURI(baseURI string, subscriptionID string) InvoicesClient { + return InvoicesClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Get gets a named invoice resource. When getting a single invoice, the downloadUrl property is expanded +// automatically. This is only supported for Azure Web-Direct subscriptions. Other subscription types which were not +// purchased directly through the Azure web portal are not supported through this preview API. +// +// invoiceName is the name of an invoice resource. +func (client InvoicesClient) Get(ctx context.Context, invoiceName string) (result Invoice, err error) { + req, err := client.GetPreparer(ctx, invoiceName) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.InvoicesClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "billing.InvoicesClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.InvoicesClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client InvoicesClient) GetPreparer(ctx context.Context, invoiceName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "invoiceName": autorest.Encode("path", invoiceName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2018-03-01-preview" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Billing/invoices/{invoiceName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client InvoicesClient) GetSender(req *http.Request) (*http.Response, error) { + return autorest.SendWithSender(client, req, + azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client InvoicesClient) GetResponder(resp *http.Response) (result Invoice, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetLatest gets the most recent invoice. When getting a single invoice, the downloadUrl property is expanded +// automatically. This is only supported for Azure Web-Direct subscriptions. Other subscription types which were not +// purchased directly through the Azure web portal are not supported through this preview API. +func (client InvoicesClient) GetLatest(ctx context.Context) (result Invoice, err error) { + req, err := client.GetLatestPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.InvoicesClient", "GetLatest", nil, "Failure preparing request") + return + } + + resp, err := client.GetLatestSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "billing.InvoicesClient", "GetLatest", resp, "Failure sending request") + return + } + + result, err = client.GetLatestResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.InvoicesClient", "GetLatest", resp, "Failure responding to request") + } + + return +} + +// GetLatestPreparer prepares the GetLatest request. +func (client InvoicesClient) GetLatestPreparer(ctx context.Context) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2018-03-01-preview" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Billing/invoices/latest", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetLatestSender sends the GetLatest request. The method will close the +// http.Response Body if it receives an error. +func (client InvoicesClient) GetLatestSender(req *http.Request) (*http.Response, error) { + return autorest.SendWithSender(client, req, + azure.DoRetryWithRegistration(client.Client)) +} + +// GetLatestResponder handles the response to the GetLatest request. The method always +// closes the http.Response Body. +func (client InvoicesClient) GetLatestResponder(resp *http.Response) (result Invoice, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists the available invoices for a subscription in reverse chronological order beginning with the most recent +// invoice. In preview, invoices are available via this API only for invoice periods which end December 1, 2016 or +// later. This is only supported for Azure Web-Direct subscriptions. Other subscription types which were not purchased +// directly through the Azure web portal are not supported through this preview API. +// +// expand is may be used to expand the downloadUrl property within a list of invoices. This enables download links +// to be generated for multiple invoices at once. By default, downloadURLs are not included when listing invoices. +// filter is may be used to filter invoices by invoicePeriodEndDate. The filter supports 'eq', 'lt', 'gt', 'le', +// 'ge', and 'and'. It does not currently support 'ne', 'or', or 'not'. skiptoken is skiptoken is only used if a +// previous operation returned a partial result. If a previous response contains a nextLink element, the value of +// the nextLink element will include a skiptoken parameter that specifies a starting point to use for subsequent +// calls. top is may be used to limit the number of results to the most recent N invoices. +func (client InvoicesClient) List(ctx context.Context, expand string, filter string, skiptoken string, top *int32) (result InvoicesListResultPage, err error) { + if err := validation.Validate([]validation.Validation{ + {TargetValue: top, + Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMaximum, Rule: 100, Chain: nil}, + {Target: "top", Name: validation.InclusiveMinimum, Rule: 1, Chain: nil}, + }}}}}); err != nil { + return result, validation.NewError("billing.InvoicesClient", "List", err.Error()) + } + + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, expand, filter, skiptoken, top) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.InvoicesClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.ilr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "billing.InvoicesClient", "List", resp, "Failure sending request") + return + } + + result.ilr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.InvoicesClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client InvoicesClient) ListPreparer(ctx context.Context, expand string, filter string, skiptoken string, top *int32) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2018-03-01-preview" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + if len(filter) > 0 { + queryParameters["$filter"] = autorest.Encode("query", filter) + } + if len(skiptoken) > 0 { + queryParameters["$skiptoken"] = autorest.Encode("query", skiptoken) + } + if top != nil { + queryParameters["$top"] = autorest.Encode("query", *top) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Billing/invoices", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client InvoicesClient) ListSender(req *http.Request) (*http.Response, error) { + return autorest.SendWithSender(client, req, + azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client InvoicesClient) ListResponder(resp *http.Response) (result InvoicesListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client InvoicesClient) listNextResults(lastResults InvoicesListResult) (result InvoicesListResult, err error) { + req, err := lastResults.invoicesListResultPreparer() + if err != nil { + return result, autorest.NewErrorWithError(err, "billing.InvoicesClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "billing.InvoicesClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.InvoicesClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client InvoicesClient) ListComplete(ctx context.Context, expand string, filter string, skiptoken string, top *int32) (result InvoicesListResultIterator, err error) { + result.page, err = client.List(ctx, expand, filter, skiptoken, top) + return +} diff --git a/services/billing/mgmt/2018-03-01-preview/billing/models.go b/services/billing/mgmt/2018-03-01-preview/billing/models.go new file mode 100644 index 000000000000..132d384ace29 --- /dev/null +++ b/services/billing/mgmt/2018-03-01-preview/billing/models.go @@ -0,0 +1,615 @@ +package billing + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "encoding/json" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/date" + "github.com/Azure/go-autorest/autorest/to" + "net/http" +) + +// AccountListResult result of listing billing accounts. +type AccountListResult struct { + autorest.Response `json:"-"` + // Value - The list of billing accounts. + Value *[]AccountResult `json:"value,omitempty"` +} + +// AccountProperties the properties of the billing account. +type AccountProperties struct { + // PrincipalName - The account owner's principal name. + PrincipalName *string `json:"principalName,omitempty"` +} + +// AccountResult a billing account resource. +type AccountResult struct { + autorest.Response `json:"-"` + // AccountProperties - A billing account. + *AccountProperties `json:"properties,omitempty"` + // ID - Resource Id. + ID *string `json:"id,omitempty"` + // Name - Resource name. + Name *string `json:"name,omitempty"` + // Type - Resource type. + Type *string `json:"type,omitempty"` +} + +// UnmarshalJSON is the custom unmarshaler for AccountResult struct. +func (ar *AccountResult) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var accountProperties AccountProperties + err = json.Unmarshal(*v, &accountProperties) + if err != nil { + return err + } + ar.AccountProperties = &accountProperties + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + ar.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + ar.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + ar.Type = &typeVar + } + } + } + + return nil +} + +// DownloadURL a secure URL that can be used to download a PDF invoice until the URL expires. +type DownloadURL struct { + // ExpiryTime - The time in UTC at which this download URL will expire. + ExpiryTime *date.Time `json:"expiryTime,omitempty"` + // URL - The URL to the PDF file. + URL *string `json:"url,omitempty"` +} + +// ErrorDetails the details of the error. +type ErrorDetails struct { + // Code - Error code. + Code *string `json:"code,omitempty"` + // Message - Error message indicating why the operation failed. + Message *string `json:"message,omitempty"` + // Target - The target of the particular error. + Target *string `json:"target,omitempty"` +} + +// ErrorResponse error response indicates that the service is not able to process the incoming request. The reason +// is provided in the error message. +type ErrorResponse struct { + // Error - The details of the error. + Error *ErrorDetails `json:"error,omitempty"` +} + +// Invoice an invoice resource can be used download a PDF version of an invoice. +type Invoice struct { + autorest.Response `json:"-"` + // InvoiceProperties - An invoice. + *InvoiceProperties `json:"properties,omitempty"` + // ID - Resource Id. + ID *string `json:"id,omitempty"` + // Name - Resource name. + Name *string `json:"name,omitempty"` + // Type - Resource type. + Type *string `json:"type,omitempty"` +} + +// UnmarshalJSON is the custom unmarshaler for Invoice struct. +func (i *Invoice) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var invoiceProperties InvoiceProperties + err = json.Unmarshal(*v, &invoiceProperties) + if err != nil { + return err + } + i.InvoiceProperties = &invoiceProperties + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + i.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + i.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + i.Type = &typeVar + } + } + } + + return nil +} + +// InvoiceProperties the properties of the invoice. +type InvoiceProperties struct { + // DownloadURL - A secure link to download the PDF version of an invoice. The link will cease to work after its expiry time is reached. + DownloadURL *DownloadURL `json:"downloadUrl,omitempty"` + // InvoicePeriodStartDate - The start of the date range covered by the invoice. + InvoicePeriodStartDate *date.Date `json:"invoicePeriodStartDate,omitempty"` + // InvoicePeriodEndDate - The end of the date range covered by the invoice. + InvoicePeriodEndDate *date.Date `json:"invoicePeriodEndDate,omitempty"` + // BillingPeriodIds - Array of billing perdiod ids that the invoice is attributed to. + BillingPeriodIds *[]string `json:"billingPeriodIds,omitempty"` +} + +// InvoicesListResult result of listing invoices. It contains a list of available invoices in reverse chronological +// order. +type InvoicesListResult struct { + autorest.Response `json:"-"` + // Value - The list of invoices. + Value *[]Invoice `json:"value,omitempty"` + // NextLink - The link (url) to the next page of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// InvoicesListResultIterator provides access to a complete listing of Invoice values. +type InvoicesListResultIterator struct { + i int + page InvoicesListResultPage +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *InvoicesListResultIterator) Next() error { + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err := iter.page.Next() + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter InvoicesListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter InvoicesListResultIterator) Response() InvoicesListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter InvoicesListResultIterator) Value() Invoice { + if !iter.page.NotDone() { + return Invoice{} + } + return iter.page.Values()[iter.i] +} + +// IsEmpty returns true if the ListResult contains no values. +func (ilr InvoicesListResult) IsEmpty() bool { + return ilr.Value == nil || len(*ilr.Value) == 0 +} + +// invoicesListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (ilr InvoicesListResult) invoicesListResultPreparer() (*http.Request, error) { + if ilr.NextLink == nil || len(to.String(ilr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare(&http.Request{}, + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(ilr.NextLink))) +} + +// InvoicesListResultPage contains a page of Invoice values. +type InvoicesListResultPage struct { + fn func(InvoicesListResult) (InvoicesListResult, error) + ilr InvoicesListResult +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *InvoicesListResultPage) Next() error { + next, err := page.fn(page.ilr) + if err != nil { + return err + } + page.ilr = next + return nil +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page InvoicesListResultPage) NotDone() bool { + return !page.ilr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page InvoicesListResultPage) Response() InvoicesListResult { + return page.ilr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page InvoicesListResultPage) Values() []Invoice { + if page.ilr.IsEmpty() { + return nil + } + return *page.ilr.Value +} + +// Operation a Billing REST API operation. +type Operation struct { + // Name - Operation name: {provider}/{resource}/{operation}. + Name *string `json:"name,omitempty"` + // Display - The object that represents the operation. + Display *OperationDisplay `json:"display,omitempty"` +} + +// OperationDisplay the object that represents the operation. +type OperationDisplay struct { + // Provider - Service provider: Microsoft.Billing. + Provider *string `json:"provider,omitempty"` + // Resource - Resource on which the operation is performed: Invoice, etc. + Resource *string `json:"resource,omitempty"` + // Operation - Operation type: Read, write, delete, etc. + Operation *string `json:"operation,omitempty"` +} + +// OperationListResult result listing billing operations. It contains a list of operations and a URL link to get +// the next set of results. +type OperationListResult struct { + autorest.Response `json:"-"` + // Value - List of billing operations supported by the Microsoft.Billing resource provider. + Value *[]Operation `json:"value,omitempty"` + // NextLink - URL to get the next set of operation list results if there are any. + NextLink *string `json:"nextLink,omitempty"` +} + +// OperationListResultIterator provides access to a complete listing of Operation values. +type OperationListResultIterator struct { + i int + page OperationListResultPage +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *OperationListResultIterator) Next() error { + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err := iter.page.Next() + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter OperationListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter OperationListResultIterator) Response() OperationListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter OperationListResultIterator) Value() Operation { + if !iter.page.NotDone() { + return Operation{} + } + return iter.page.Values()[iter.i] +} + +// IsEmpty returns true if the ListResult contains no values. +func (olr OperationListResult) IsEmpty() bool { + return olr.Value == nil || len(*olr.Value) == 0 +} + +// operationListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (olr OperationListResult) operationListResultPreparer() (*http.Request, error) { + if olr.NextLink == nil || len(to.String(olr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare(&http.Request{}, + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(olr.NextLink))) +} + +// OperationListResultPage contains a page of Operation values. +type OperationListResultPage struct { + fn func(OperationListResult) (OperationListResult, error) + olr OperationListResult +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *OperationListResultPage) Next() error { + next, err := page.fn(page.olr) + if err != nil { + return err + } + page.olr = next + return nil +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page OperationListResultPage) NotDone() bool { + return !page.olr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page OperationListResultPage) Response() OperationListResult { + return page.olr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page OperationListResultPage) Values() []Operation { + if page.olr.IsEmpty() { + return nil + } + return *page.olr.Value +} + +// Period a billing period resource. +type Period struct { + autorest.Response `json:"-"` + // PeriodProperties - A billing period. + *PeriodProperties `json:"properties,omitempty"` + // ID - Resource Id. + ID *string `json:"id,omitempty"` + // Name - Resource name. + Name *string `json:"name,omitempty"` + // Type - Resource type. + Type *string `json:"type,omitempty"` +} + +// UnmarshalJSON is the custom unmarshaler for Period struct. +func (p *Period) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var periodProperties PeriodProperties + err = json.Unmarshal(*v, &periodProperties) + if err != nil { + return err + } + p.PeriodProperties = &periodProperties + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + p.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + p.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + p.Type = &typeVar + } + } + } + + return nil +} + +// PeriodProperties the properties of the billing period. +type PeriodProperties struct { + // BillingPeriodStartDate - The start of the date range covered by the billing period. + BillingPeriodStartDate *date.Date `json:"billingPeriodStartDate,omitempty"` + // BillingPeriodEndDate - The end of the date range covered by the billing period. + BillingPeriodEndDate *date.Date `json:"billingPeriodEndDate,omitempty"` + // InvoiceIds - Array of invoice ids that associated with. + InvoiceIds *[]string `json:"invoiceIds,omitempty"` +} + +// PeriodsListResult result of listing billing periods. It contains a list of available billing periods in reverse +// chronological order. +type PeriodsListResult struct { + autorest.Response `json:"-"` + // Value - The list of billing periods. + Value *[]Period `json:"value,omitempty"` + // NextLink - The link (url) to the next page of results. + NextLink *string `json:"nextLink,omitempty"` +} + +// PeriodsListResultIterator provides access to a complete listing of Period values. +type PeriodsListResultIterator struct { + i int + page PeriodsListResultPage +} + +// Next advances to the next value. If there was an error making +// the request the iterator does not advance and the error is returned. +func (iter *PeriodsListResultIterator) Next() error { + iter.i++ + if iter.i < len(iter.page.Values()) { + return nil + } + err := iter.page.Next() + if err != nil { + iter.i-- + return err + } + iter.i = 0 + return nil +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter PeriodsListResultIterator) NotDone() bool { + return iter.page.NotDone() && iter.i < len(iter.page.Values()) +} + +// Response returns the raw server response from the last page request. +func (iter PeriodsListResultIterator) Response() PeriodsListResult { + return iter.page.Response() +} + +// Value returns the current value or a zero-initialized value if the +// iterator has advanced beyond the end of the collection. +func (iter PeriodsListResultIterator) Value() Period { + if !iter.page.NotDone() { + return Period{} + } + return iter.page.Values()[iter.i] +} + +// IsEmpty returns true if the ListResult contains no values. +func (plr PeriodsListResult) IsEmpty() bool { + return plr.Value == nil || len(*plr.Value) == 0 +} + +// periodsListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (plr PeriodsListResult) periodsListResultPreparer() (*http.Request, error) { + if plr.NextLink == nil || len(to.String(plr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare(&http.Request{}, + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(plr.NextLink))) +} + +// PeriodsListResultPage contains a page of Period values. +type PeriodsListResultPage struct { + fn func(PeriodsListResult) (PeriodsListResult, error) + plr PeriodsListResult +} + +// Next advances to the next page of values. If there was an error making +// the request the page does not advance and the error is returned. +func (page *PeriodsListResultPage) Next() error { + next, err := page.fn(page.plr) + if err != nil { + return err + } + page.plr = next + return nil +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page PeriodsListResultPage) NotDone() bool { + return !page.plr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page PeriodsListResultPage) Response() PeriodsListResult { + return page.plr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page PeriodsListResultPage) Values() []Period { + if page.plr.IsEmpty() { + return nil + } + return *page.plr.Value +} + +// Resource the Resource model definition. +type Resource struct { + // ID - Resource Id. + ID *string `json:"id,omitempty"` + // Name - Resource name. + Name *string `json:"name,omitempty"` + // Type - Resource type. + Type *string `json:"type,omitempty"` +} diff --git a/services/billing/mgmt/2018-03-01-preview/billing/operations.go b/services/billing/mgmt/2018-03-01-preview/billing/operations.go new file mode 100644 index 000000000000..26aa1c6f01c5 --- /dev/null +++ b/services/billing/mgmt/2018-03-01-preview/billing/operations.go @@ -0,0 +1,126 @@ +package billing + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "net/http" +) + +// OperationsClient is the billing client provides access to billing resources for Azure subscriptions. +type OperationsClient struct { + BaseClient +} + +// NewOperationsClient creates an instance of the OperationsClient client. +func NewOperationsClient(subscriptionID string) OperationsClient { + return NewOperationsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewOperationsClientWithBaseURI creates an instance of the OperationsClient client. +func NewOperationsClientWithBaseURI(baseURI string, subscriptionID string) OperationsClient { + return OperationsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// List lists all of the available billing REST API operations. +func (client OperationsClient) List(ctx context.Context) (result OperationListResultPage, err error) { + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.OperationsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.olr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "billing.OperationsClient", "List", resp, "Failure sending request") + return + } + + result.olr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.OperationsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client OperationsClient) ListPreparer(ctx context.Context) (*http.Request, error) { + const APIVersion = "2018-03-01-preview" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPath("/providers/Microsoft.Billing/operations"), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client OperationsClient) ListSender(req *http.Request) (*http.Response, error) { + return autorest.SendWithSender(client, req, + autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client OperationsClient) ListResponder(resp *http.Response) (result OperationListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client OperationsClient) listNextResults(lastResults OperationListResult) (result OperationListResult, err error) { + req, err := lastResults.operationListResultPreparer() + if err != nil { + return result, autorest.NewErrorWithError(err, "billing.OperationsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "billing.OperationsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.OperationsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client OperationsClient) ListComplete(ctx context.Context) (result OperationListResultIterator, err error) { + result.page, err = client.List(ctx) + return +} diff --git a/services/billing/mgmt/2018-03-01-preview/billing/periods.go b/services/billing/mgmt/2018-03-01-preview/billing/periods.go new file mode 100644 index 000000000000..8362b9459e01 --- /dev/null +++ b/services/billing/mgmt/2018-03-01-preview/billing/periods.go @@ -0,0 +1,223 @@ +package billing + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "net/http" +) + +// PeriodsClient is the billing client provides access to billing resources for Azure subscriptions. +type PeriodsClient struct { + BaseClient +} + +// NewPeriodsClient creates an instance of the PeriodsClient client. +func NewPeriodsClient(subscriptionID string) PeriodsClient { + return NewPeriodsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewPeriodsClientWithBaseURI creates an instance of the PeriodsClient client. +func NewPeriodsClientWithBaseURI(baseURI string, subscriptionID string) PeriodsClient { + return PeriodsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// Get gets a named billing period. This is only supported for Azure Web-Direct subscriptions. Other subscription +// types which were not purchased directly through the Azure web portal are not supported through this preview API. +// +// billingPeriodName is the name of a BillingPeriod resource. +func (client PeriodsClient) Get(ctx context.Context, billingPeriodName string) (result Period, err error) { + req, err := client.GetPreparer(ctx, billingPeriodName) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.PeriodsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "billing.PeriodsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.PeriodsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client PeriodsClient) GetPreparer(ctx context.Context, billingPeriodName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "billingPeriodName": autorest.Encode("path", billingPeriodName), + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2018-03-01-preview" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client PeriodsClient) GetSender(req *http.Request) (*http.Response, error) { + return autorest.SendWithSender(client, req, + azure.DoRetryWithRegistration(client.Client)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client PeriodsClient) GetResponder(resp *http.Response) (result Period, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists the available billing periods for a subscription in reverse chronological order. This is only supported +// for Azure Web-Direct subscriptions. Other subscription types which were not purchased directly through the Azure web +// portal are not supported through this preview API. +// +// filter is may be used to filter billing periods by billingPeriodEndDate. The filter supports 'eq', 'lt', 'gt', +// 'le', 'ge', and 'and'. It does not currently support 'ne', 'or', or 'not'. skiptoken is skiptoken is only used +// if a previous operation returned a partial result. If a previous response contains a nextLink element, the value +// of the nextLink element will include a skiptoken parameter that specifies a starting point to use for subsequent +// calls. top is may be used to limit the number of results to the most recent N billing periods. +func (client PeriodsClient) List(ctx context.Context, filter string, skiptoken string, top *int32) (result PeriodsListResultPage, err error) { + if err := validation.Validate([]validation.Validation{ + {TargetValue: top, + Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMaximum, Rule: 100, Chain: nil}, + {Target: "top", Name: validation.InclusiveMinimum, Rule: 1, Chain: nil}, + }}}}}); err != nil { + return result, validation.NewError("billing.PeriodsClient", "List", err.Error()) + } + + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx, filter, skiptoken, top) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.PeriodsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.plr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "billing.PeriodsClient", "List", resp, "Failure sending request") + return + } + + result.plr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.PeriodsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client PeriodsClient) ListPreparer(ctx context.Context, filter string, skiptoken string, top *int32) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "subscriptionId": autorest.Encode("path", client.SubscriptionID), + } + + const APIVersion = "2018-03-01-preview" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(filter) > 0 { + queryParameters["$filter"] = autorest.Encode("query", filter) + } + if len(skiptoken) > 0 { + queryParameters["$skiptoken"] = autorest.Encode("query", skiptoken) + } + if top != nil { + queryParameters["$top"] = autorest.Encode("query", *top) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Billing/billingPeriods", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client PeriodsClient) ListSender(req *http.Request) (*http.Response, error) { + return autorest.SendWithSender(client, req, + azure.DoRetryWithRegistration(client.Client)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client PeriodsClient) ListResponder(resp *http.Response) (result PeriodsListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client PeriodsClient) listNextResults(lastResults PeriodsListResult) (result PeriodsListResult, err error) { + req, err := lastResults.periodsListResultPreparer() + if err != nil { + return result, autorest.NewErrorWithError(err, "billing.PeriodsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "billing.PeriodsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "billing.PeriodsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client PeriodsClient) ListComplete(ctx context.Context, filter string, skiptoken string, top *int32) (result PeriodsListResultIterator, err error) { + result.page, err = client.List(ctx, filter, skiptoken, top) + return +} diff --git a/services/billing/mgmt/2018-03-01-preview/billing/version.go b/services/billing/mgmt/2018-03-01-preview/billing/version.go new file mode 100644 index 000000000000..2a6ab52a2145 --- /dev/null +++ b/services/billing/mgmt/2018-03-01-preview/billing/version.go @@ -0,0 +1,28 @@ +package billing + +// Copyright (c) Microsoft and contributors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +// UserAgent returns the UserAgent string to use when sending http.Requests. +func UserAgent() string { + return "Azure-SDK-For-Go/latest services" +} + +// Version returns the semantic version (see http://semver.org) of the client. +func Version() string { + return "latest" +} From c0d043875e077f41b3d0201e32b47f025b9f672f Mon Sep 17 00:00:00 2001 From: Azure SDK for Python bot Date: Mon, 12 Mar 2018 10:37:10 -0700 Subject: [PATCH 2/2] Generated from 4b4cc708b2338998b2b2939bf3189111037bd87e (#1223) Rename BillingAccount->EnrollmentAccount. --- .../{accounts.go => enrollmentaccounts.go} | 54 +++++++++---------- .../mgmt/2018-03-01-preview/billing/models.go | 52 +++++++++--------- 2 files changed, 53 insertions(+), 53 deletions(-) rename services/billing/mgmt/2018-03-01-preview/billing/{accounts.go => enrollmentaccounts.go} (57%) diff --git a/services/billing/mgmt/2018-03-01-preview/billing/accounts.go b/services/billing/mgmt/2018-03-01-preview/billing/enrollmentaccounts.go similarity index 57% rename from services/billing/mgmt/2018-03-01-preview/billing/accounts.go rename to services/billing/mgmt/2018-03-01-preview/billing/enrollmentaccounts.go index b362601509e2..31a304826365 100644 --- a/services/billing/mgmt/2018-03-01-preview/billing/accounts.go +++ b/services/billing/mgmt/2018-03-01-preview/billing/enrollmentaccounts.go @@ -24,48 +24,48 @@ import ( "net/http" ) -// AccountsClient is the billing client provides access to billing resources for Azure subscriptions. -type AccountsClient struct { +// EnrollmentAccountsClient is the billing client provides access to billing resources for Azure subscriptions. +type EnrollmentAccountsClient struct { BaseClient } -// NewAccountsClient creates an instance of the AccountsClient client. -func NewAccountsClient(subscriptionID string) AccountsClient { - return NewAccountsClientWithBaseURI(DefaultBaseURI, subscriptionID) +// NewEnrollmentAccountsClient creates an instance of the EnrollmentAccountsClient client. +func NewEnrollmentAccountsClient(subscriptionID string) EnrollmentAccountsClient { + return NewEnrollmentAccountsClientWithBaseURI(DefaultBaseURI, subscriptionID) } -// NewAccountsClientWithBaseURI creates an instance of the AccountsClient client. -func NewAccountsClientWithBaseURI(baseURI string, subscriptionID string) AccountsClient { - return AccountsClient{NewWithBaseURI(baseURI, subscriptionID)} +// NewEnrollmentAccountsClientWithBaseURI creates an instance of the EnrollmentAccountsClient client. +func NewEnrollmentAccountsClientWithBaseURI(baseURI string, subscriptionID string) EnrollmentAccountsClient { + return EnrollmentAccountsClient{NewWithBaseURI(baseURI, subscriptionID)} } -// Get gets a billing account by name. +// Get gets a enrollment account by name. // -// name is billing Account name. -func (client AccountsClient) Get(ctx context.Context, name string) (result AccountResult, err error) { +// name is enrollment Account name. +func (client EnrollmentAccountsClient) Get(ctx context.Context, name string) (result EnrollmentAccountResult, err error) { req, err := client.GetPreparer(ctx, name) if err != nil { - err = autorest.NewErrorWithError(err, "billing.AccountsClient", "Get", nil, "Failure preparing request") + err = autorest.NewErrorWithError(err, "billing.EnrollmentAccountsClient", "Get", nil, "Failure preparing request") return } resp, err := client.GetSender(req) if err != nil { result.Response = autorest.Response{Response: resp} - err = autorest.NewErrorWithError(err, "billing.AccountsClient", "Get", resp, "Failure sending request") + err = autorest.NewErrorWithError(err, "billing.EnrollmentAccountsClient", "Get", resp, "Failure sending request") return } result, err = client.GetResponder(resp) if err != nil { - err = autorest.NewErrorWithError(err, "billing.AccountsClient", "Get", resp, "Failure responding to request") + err = autorest.NewErrorWithError(err, "billing.EnrollmentAccountsClient", "Get", resp, "Failure responding to request") } return } // GetPreparer prepares the Get request. -func (client AccountsClient) GetPreparer(ctx context.Context, name string) (*http.Request, error) { +func (client EnrollmentAccountsClient) GetPreparer(ctx context.Context, name string) (*http.Request, error) { pathParameters := map[string]interface{}{ "name": autorest.Encode("path", name), } @@ -78,21 +78,21 @@ func (client AccountsClient) GetPreparer(ctx context.Context, name string) (*htt preparer := autorest.CreatePreparer( autorest.AsGet(), autorest.WithBaseURL(client.BaseURI), - autorest.WithPathParameters("/providers/Microsoft.Billing/billingAccounts/{name}", pathParameters), + autorest.WithPathParameters("/providers/Microsoft.Billing/enrollmentAccounts/{name}", pathParameters), autorest.WithQueryParameters(queryParameters)) return preparer.Prepare((&http.Request{}).WithContext(ctx)) } // GetSender sends the Get request. The method will close the // http.Response Body if it receives an error. -func (client AccountsClient) GetSender(req *http.Request) (*http.Response, error) { +func (client EnrollmentAccountsClient) GetSender(req *http.Request) (*http.Response, error) { return autorest.SendWithSender(client, req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) } // GetResponder handles the response to the Get request. The method always // closes the http.Response Body. -func (client AccountsClient) GetResponder(resp *http.Response) (result AccountResult, err error) { +func (client EnrollmentAccountsClient) GetResponder(resp *http.Response) (result EnrollmentAccountResult, err error) { err = autorest.Respond( resp, client.ByInspecting(), @@ -103,31 +103,31 @@ func (client AccountsClient) GetResponder(resp *http.Response) (result AccountRe return } -// List lists the billing accounts the caller has access to. -func (client AccountsClient) List(ctx context.Context) (result AccountListResult, err error) { +// List lists the enrollment accounts the caller has access to. +func (client EnrollmentAccountsClient) List(ctx context.Context) (result EnrollmentAccountListResult, err error) { req, err := client.ListPreparer(ctx) if err != nil { - err = autorest.NewErrorWithError(err, "billing.AccountsClient", "List", nil, "Failure preparing request") + err = autorest.NewErrorWithError(err, "billing.EnrollmentAccountsClient", "List", nil, "Failure preparing request") return } resp, err := client.ListSender(req) if err != nil { result.Response = autorest.Response{Response: resp} - err = autorest.NewErrorWithError(err, "billing.AccountsClient", "List", resp, "Failure sending request") + err = autorest.NewErrorWithError(err, "billing.EnrollmentAccountsClient", "List", resp, "Failure sending request") return } result, err = client.ListResponder(resp) if err != nil { - err = autorest.NewErrorWithError(err, "billing.AccountsClient", "List", resp, "Failure responding to request") + err = autorest.NewErrorWithError(err, "billing.EnrollmentAccountsClient", "List", resp, "Failure responding to request") } return } // ListPreparer prepares the List request. -func (client AccountsClient) ListPreparer(ctx context.Context) (*http.Request, error) { +func (client EnrollmentAccountsClient) ListPreparer(ctx context.Context) (*http.Request, error) { const APIVersion = "2018-03-01-preview" queryParameters := map[string]interface{}{ "api-version": APIVersion, @@ -136,21 +136,21 @@ func (client AccountsClient) ListPreparer(ctx context.Context) (*http.Request, e preparer := autorest.CreatePreparer( autorest.AsGet(), autorest.WithBaseURL(client.BaseURI), - autorest.WithPath("/providers/Microsoft.Billing/billingAccounts"), + autorest.WithPath("/providers/Microsoft.Billing/enrollmentAccounts"), autorest.WithQueryParameters(queryParameters)) return preparer.Prepare((&http.Request{}).WithContext(ctx)) } // ListSender sends the List request. The method will close the // http.Response Body if it receives an error. -func (client AccountsClient) ListSender(req *http.Request) (*http.Response, error) { +func (client EnrollmentAccountsClient) ListSender(req *http.Request) (*http.Response, error) { return autorest.SendWithSender(client, req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) } // ListResponder handles the response to the List request. The method always // closes the http.Response Body. -func (client AccountsClient) ListResponder(resp *http.Response) (result AccountListResult, err error) { +func (client EnrollmentAccountsClient) ListResponder(resp *http.Response) (result EnrollmentAccountListResult, err error) { err = autorest.Respond( resp, client.ByInspecting(), diff --git a/services/billing/mgmt/2018-03-01-preview/billing/models.go b/services/billing/mgmt/2018-03-01-preview/billing/models.go index 132d384ace29..d428a221f7df 100644 --- a/services/billing/mgmt/2018-03-01-preview/billing/models.go +++ b/services/billing/mgmt/2018-03-01-preview/billing/models.go @@ -25,24 +25,32 @@ import ( "net/http" ) -// AccountListResult result of listing billing accounts. -type AccountListResult struct { +// DownloadURL a secure URL that can be used to download a PDF invoice until the URL expires. +type DownloadURL struct { + // ExpiryTime - The time in UTC at which this download URL will expire. + ExpiryTime *date.Time `json:"expiryTime,omitempty"` + // URL - The URL to the PDF file. + URL *string `json:"url,omitempty"` +} + +// EnrollmentAccountListResult result of listing enrollment accounts. +type EnrollmentAccountListResult struct { autorest.Response `json:"-"` - // Value - The list of billing accounts. - Value *[]AccountResult `json:"value,omitempty"` + // Value - The list of enrollment accounts. + Value *[]EnrollmentAccountResult `json:"value,omitempty"` } -// AccountProperties the properties of the billing account. -type AccountProperties struct { +// EnrollmentAccountProperties the properties of the enrollment account. +type EnrollmentAccountProperties struct { // PrincipalName - The account owner's principal name. PrincipalName *string `json:"principalName,omitempty"` } -// AccountResult a billing account resource. -type AccountResult struct { +// EnrollmentAccountResult an enrollment account resource. +type EnrollmentAccountResult struct { autorest.Response `json:"-"` - // AccountProperties - A billing account. - *AccountProperties `json:"properties,omitempty"` + // EnrollmentAccountProperties - An enrollment account. + *EnrollmentAccountProperties `json:"properties,omitempty"` // ID - Resource Id. ID *string `json:"id,omitempty"` // Name - Resource name. @@ -51,8 +59,8 @@ type AccountResult struct { Type *string `json:"type,omitempty"` } -// UnmarshalJSON is the custom unmarshaler for AccountResult struct. -func (ar *AccountResult) UnmarshalJSON(body []byte) error { +// UnmarshalJSON is the custom unmarshaler for EnrollmentAccountResult struct. +func (ear *EnrollmentAccountResult) UnmarshalJSON(body []byte) error { var m map[string]*json.RawMessage err := json.Unmarshal(body, &m) if err != nil { @@ -62,12 +70,12 @@ func (ar *AccountResult) UnmarshalJSON(body []byte) error { switch k { case "properties": if v != nil { - var accountProperties AccountProperties - err = json.Unmarshal(*v, &accountProperties) + var enrollmentAccountProperties EnrollmentAccountProperties + err = json.Unmarshal(*v, &enrollmentAccountProperties) if err != nil { return err } - ar.AccountProperties = &accountProperties + ear.EnrollmentAccountProperties = &enrollmentAccountProperties } case "id": if v != nil { @@ -76,7 +84,7 @@ func (ar *AccountResult) UnmarshalJSON(body []byte) error { if err != nil { return err } - ar.ID = &ID + ear.ID = &ID } case "name": if v != nil { @@ -85,7 +93,7 @@ func (ar *AccountResult) UnmarshalJSON(body []byte) error { if err != nil { return err } - ar.Name = &name + ear.Name = &name } case "type": if v != nil { @@ -94,7 +102,7 @@ func (ar *AccountResult) UnmarshalJSON(body []byte) error { if err != nil { return err } - ar.Type = &typeVar + ear.Type = &typeVar } } } @@ -102,14 +110,6 @@ func (ar *AccountResult) UnmarshalJSON(body []byte) error { return nil } -// DownloadURL a secure URL that can be used to download a PDF invoice until the URL expires. -type DownloadURL struct { - // ExpiryTime - The time in UTC at which this download URL will expire. - ExpiryTime *date.Time `json:"expiryTime,omitempty"` - // URL - The URL to the PDF file. - URL *string `json:"url,omitempty"` -} - // ErrorDetails the details of the error. type ErrorDetails struct { // Code - Error code.