...

Source file src/github.com/Azure/azure-sdk-for-go/services/iothub/mgmt/2020-03-01/devices/models.go

Documentation: github.com/Azure/azure-sdk-for-go/services/iothub/mgmt/2020-03-01/devices

     1  package devices
     2  
     3  // Copyright (c) Microsoft Corporation. All rights reserved.
     4  // Licensed under the MIT License. See License.txt in the project root for license information.
     5  //
     6  // Code generated by Microsoft (R) AutoRest Code Generator.
     7  // Changes may cause incorrect behavior and will be lost if the code is regenerated.
     8  
     9  import (
    10  	"context"
    11  	"encoding/json"
    12  	"github.com/Azure/go-autorest/autorest"
    13  	"github.com/Azure/go-autorest/autorest/azure"
    14  	"github.com/Azure/go-autorest/autorest/date"
    15  	"github.com/Azure/go-autorest/autorest/to"
    16  	"github.com/Azure/go-autorest/tracing"
    17  	"net/http"
    18  )
    19  
    20  // The package's fully qualified name.
    21  const fqdn = "github.com/Azure/azure-sdk-for-go/services/iothub/mgmt/2020-03-01/devices"
    22  
    23  // CertificateBodyDescription the JSON-serialized X509 Certificate.
    24  type CertificateBodyDescription struct {
    25  	// Certificate - base-64 representation of the X509 leaf certificate .cer file or just .pem file content.
    26  	Certificate *string `json:"certificate,omitempty"`
    27  }
    28  
    29  // CertificateDescription the X509 Certificate.
    30  type CertificateDescription struct {
    31  	autorest.Response `json:"-"`
    32  	Properties        *CertificateProperties `json:"properties,omitempty"`
    33  	// ID - READ-ONLY; The resource identifier.
    34  	ID *string `json:"id,omitempty"`
    35  	// Name - READ-ONLY; The name of the certificate.
    36  	Name *string `json:"name,omitempty"`
    37  	// Etag - READ-ONLY; The entity tag.
    38  	Etag *string `json:"etag,omitempty"`
    39  	// Type - READ-ONLY; The resource type.
    40  	Type *string `json:"type,omitempty"`
    41  }
    42  
    43  // MarshalJSON is the custom marshaler for CertificateDescription.
    44  func (cd CertificateDescription) MarshalJSON() ([]byte, error) {
    45  	objectMap := make(map[string]interface{})
    46  	if cd.Properties != nil {
    47  		objectMap["properties"] = cd.Properties
    48  	}
    49  	return json.Marshal(objectMap)
    50  }
    51  
    52  // CertificateListDescription the JSON-serialized array of Certificate objects.
    53  type CertificateListDescription struct {
    54  	autorest.Response `json:"-"`
    55  	// Value - The array of Certificate objects.
    56  	Value *[]CertificateDescription `json:"value,omitempty"`
    57  }
    58  
    59  // CertificateProperties the description of an X509 CA Certificate.
    60  type CertificateProperties struct {
    61  	// Subject - READ-ONLY; The certificate's subject name.
    62  	Subject *string `json:"subject,omitempty"`
    63  	// Expiry - READ-ONLY; The certificate's expiration date and time.
    64  	Expiry *date.TimeRFC1123 `json:"expiry,omitempty"`
    65  	// Thumbprint - READ-ONLY; The certificate's thumbprint.
    66  	Thumbprint *string `json:"thumbprint,omitempty"`
    67  	// IsVerified - READ-ONLY; Determines whether certificate has been verified.
    68  	IsVerified *bool `json:"isVerified,omitempty"`
    69  	// Created - READ-ONLY; The certificate's create date and time.
    70  	Created *date.TimeRFC1123 `json:"created,omitempty"`
    71  	// Updated - READ-ONLY; The certificate's last update date and time.
    72  	Updated *date.TimeRFC1123 `json:"updated,omitempty"`
    73  	// Certificate - The certificate content
    74  	Certificate *string `json:"certificate,omitempty"`
    75  }
    76  
    77  // MarshalJSON is the custom marshaler for CertificateProperties.
    78  func (cp CertificateProperties) MarshalJSON() ([]byte, error) {
    79  	objectMap := make(map[string]interface{})
    80  	if cp.Certificate != nil {
    81  		objectMap["certificate"] = cp.Certificate
    82  	}
    83  	return json.Marshal(objectMap)
    84  }
    85  
    86  // CertificatePropertiesWithNonce the description of an X509 CA Certificate including the challenge nonce
    87  // issued for the Proof-Of-Possession flow.
    88  type CertificatePropertiesWithNonce struct {
    89  	// Subject - READ-ONLY; The certificate's subject name.
    90  	Subject *string `json:"subject,omitempty"`
    91  	// Expiry - READ-ONLY; The certificate's expiration date and time.
    92  	Expiry *date.TimeRFC1123 `json:"expiry,omitempty"`
    93  	// Thumbprint - READ-ONLY; The certificate's thumbprint.
    94  	Thumbprint *string `json:"thumbprint,omitempty"`
    95  	// IsVerified - READ-ONLY; Determines whether certificate has been verified.
    96  	IsVerified *bool `json:"isVerified,omitempty"`
    97  	// Created - READ-ONLY; The certificate's create date and time.
    98  	Created *date.TimeRFC1123 `json:"created,omitempty"`
    99  	// Updated - READ-ONLY; The certificate's last update date and time.
   100  	Updated *date.TimeRFC1123 `json:"updated,omitempty"`
   101  	// VerificationCode - READ-ONLY; The certificate's verification code that will be used for proof of possession.
   102  	VerificationCode *string `json:"verificationCode,omitempty"`
   103  	// Certificate - READ-ONLY; The certificate content
   104  	Certificate *string `json:"certificate,omitempty"`
   105  }
   106  
   107  // MarshalJSON is the custom marshaler for CertificatePropertiesWithNonce.
   108  func (cpwn CertificatePropertiesWithNonce) MarshalJSON() ([]byte, error) {
   109  	objectMap := make(map[string]interface{})
   110  	return json.Marshal(objectMap)
   111  }
   112  
   113  // CertificateVerificationDescription the JSON-serialized leaf certificate
   114  type CertificateVerificationDescription struct {
   115  	// Certificate - base-64 representation of X509 certificate .cer file or just .pem file content.
   116  	Certificate *string `json:"certificate,omitempty"`
   117  }
   118  
   119  // CertificateWithNonceDescription the X509 Certificate.
   120  type CertificateWithNonceDescription struct {
   121  	autorest.Response `json:"-"`
   122  	Properties        *CertificatePropertiesWithNonce `json:"properties,omitempty"`
   123  	// ID - READ-ONLY; The resource identifier.
   124  	ID *string `json:"id,omitempty"`
   125  	// Name - READ-ONLY; The name of the certificate.
   126  	Name *string `json:"name,omitempty"`
   127  	// Etag - READ-ONLY; The entity tag.
   128  	Etag *string `json:"etag,omitempty"`
   129  	// Type - READ-ONLY; The resource type.
   130  	Type *string `json:"type,omitempty"`
   131  }
   132  
   133  // MarshalJSON is the custom marshaler for CertificateWithNonceDescription.
   134  func (cwnd CertificateWithNonceDescription) MarshalJSON() ([]byte, error) {
   135  	objectMap := make(map[string]interface{})
   136  	if cwnd.Properties != nil {
   137  		objectMap["properties"] = cwnd.Properties
   138  	}
   139  	return json.Marshal(objectMap)
   140  }
   141  
   142  // CloudToDeviceProperties the IoT hub cloud-to-device messaging properties.
   143  type CloudToDeviceProperties struct {
   144  	// MaxDeliveryCount - The max delivery count for cloud-to-device messages in the device queue. See: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#cloud-to-device-messages.
   145  	MaxDeliveryCount *int32 `json:"maxDeliveryCount,omitempty"`
   146  	// DefaultTTLAsIso8601 - The default time to live for cloud-to-device messages in the device queue. See: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#cloud-to-device-messages.
   147  	DefaultTTLAsIso8601 *string             `json:"defaultTtlAsIso8601,omitempty"`
   148  	Feedback            *FeedbackProperties `json:"feedback,omitempty"`
   149  }
   150  
   151  // EndpointHealthData the health data for an endpoint
   152  type EndpointHealthData struct {
   153  	// EndpointID - Id of the endpoint
   154  	EndpointID *string `json:"endpointId,omitempty"`
   155  	// HealthStatus - Health statuses have following meanings. The 'healthy' status shows that the endpoint is accepting messages as expected. The 'unhealthy' status shows that the endpoint is not accepting messages as expected and IoT Hub is retrying to send data to this endpoint. The status of an unhealthy endpoint will be updated to healthy when IoT Hub has established an eventually consistent state of health. The 'dead' status shows that the endpoint is not accepting messages, after IoT Hub retried sending messages for the retrial period. See IoT Hub metrics to identify errors and monitor issues with endpoints. The 'unknown' status shows that the IoT Hub has not established a connection with the endpoint. No messages have been delivered to or rejected from this endpoint. Possible values include: 'Unknown', 'Healthy', 'Unhealthy', 'Dead'
   156  	HealthStatus EndpointHealthStatus `json:"healthStatus,omitempty"`
   157  }
   158  
   159  // EndpointHealthDataListResult the JSON-serialized array of EndpointHealthData objects with a next link.
   160  type EndpointHealthDataListResult struct {
   161  	autorest.Response `json:"-"`
   162  	// Value - JSON-serialized array of Endpoint health data
   163  	Value *[]EndpointHealthData `json:"value,omitempty"`
   164  	// NextLink - READ-ONLY; Link to more results
   165  	NextLink *string `json:"nextLink,omitempty"`
   166  }
   167  
   168  // MarshalJSON is the custom marshaler for EndpointHealthDataListResult.
   169  func (ehdlr EndpointHealthDataListResult) MarshalJSON() ([]byte, error) {
   170  	objectMap := make(map[string]interface{})
   171  	if ehdlr.Value != nil {
   172  		objectMap["value"] = ehdlr.Value
   173  	}
   174  	return json.Marshal(objectMap)
   175  }
   176  
   177  // EndpointHealthDataListResultIterator provides access to a complete listing of EndpointHealthData values.
   178  type EndpointHealthDataListResultIterator struct {
   179  	i    int
   180  	page EndpointHealthDataListResultPage
   181  }
   182  
   183  // NextWithContext advances to the next value.  If there was an error making
   184  // the request the iterator does not advance and the error is returned.
   185  func (iter *EndpointHealthDataListResultIterator) NextWithContext(ctx context.Context) (err error) {
   186  	if tracing.IsEnabled() {
   187  		ctx = tracing.StartSpan(ctx, fqdn+"/EndpointHealthDataListResultIterator.NextWithContext")
   188  		defer func() {
   189  			sc := -1
   190  			if iter.Response().Response.Response != nil {
   191  				sc = iter.Response().Response.Response.StatusCode
   192  			}
   193  			tracing.EndSpan(ctx, sc, err)
   194  		}()
   195  	}
   196  	iter.i++
   197  	if iter.i < len(iter.page.Values()) {
   198  		return nil
   199  	}
   200  	err = iter.page.NextWithContext(ctx)
   201  	if err != nil {
   202  		iter.i--
   203  		return err
   204  	}
   205  	iter.i = 0
   206  	return nil
   207  }
   208  
   209  // Next advances to the next value.  If there was an error making
   210  // the request the iterator does not advance and the error is returned.
   211  // Deprecated: Use NextWithContext() instead.
   212  func (iter *EndpointHealthDataListResultIterator) Next() error {
   213  	return iter.NextWithContext(context.Background())
   214  }
   215  
   216  // NotDone returns true if the enumeration should be started or is not yet complete.
   217  func (iter EndpointHealthDataListResultIterator) NotDone() bool {
   218  	return iter.page.NotDone() && iter.i < len(iter.page.Values())
   219  }
   220  
   221  // Response returns the raw server response from the last page request.
   222  func (iter EndpointHealthDataListResultIterator) Response() EndpointHealthDataListResult {
   223  	return iter.page.Response()
   224  }
   225  
   226  // Value returns the current value or a zero-initialized value if the
   227  // iterator has advanced beyond the end of the collection.
   228  func (iter EndpointHealthDataListResultIterator) Value() EndpointHealthData {
   229  	if !iter.page.NotDone() {
   230  		return EndpointHealthData{}
   231  	}
   232  	return iter.page.Values()[iter.i]
   233  }
   234  
   235  // Creates a new instance of the EndpointHealthDataListResultIterator type.
   236  func NewEndpointHealthDataListResultIterator(page EndpointHealthDataListResultPage) EndpointHealthDataListResultIterator {
   237  	return EndpointHealthDataListResultIterator{page: page}
   238  }
   239  
   240  // IsEmpty returns true if the ListResult contains no values.
   241  func (ehdlr EndpointHealthDataListResult) IsEmpty() bool {
   242  	return ehdlr.Value == nil || len(*ehdlr.Value) == 0
   243  }
   244  
   245  // hasNextLink returns true if the NextLink is not empty.
   246  func (ehdlr EndpointHealthDataListResult) hasNextLink() bool {
   247  	return ehdlr.NextLink != nil && len(*ehdlr.NextLink) != 0
   248  }
   249  
   250  // endpointHealthDataListResultPreparer prepares a request to retrieve the next set of results.
   251  // It returns nil if no more results exist.
   252  func (ehdlr EndpointHealthDataListResult) endpointHealthDataListResultPreparer(ctx context.Context) (*http.Request, error) {
   253  	if !ehdlr.hasNextLink() {
   254  		return nil, nil
   255  	}
   256  	return autorest.Prepare((&http.Request{}).WithContext(ctx),
   257  		autorest.AsJSON(),
   258  		autorest.AsGet(),
   259  		autorest.WithBaseURL(to.String(ehdlr.NextLink)))
   260  }
   261  
   262  // EndpointHealthDataListResultPage contains a page of EndpointHealthData values.
   263  type EndpointHealthDataListResultPage struct {
   264  	fn    func(context.Context, EndpointHealthDataListResult) (EndpointHealthDataListResult, error)
   265  	ehdlr EndpointHealthDataListResult
   266  }
   267  
   268  // NextWithContext advances to the next page of values.  If there was an error making
   269  // the request the page does not advance and the error is returned.
   270  func (page *EndpointHealthDataListResultPage) NextWithContext(ctx context.Context) (err error) {
   271  	if tracing.IsEnabled() {
   272  		ctx = tracing.StartSpan(ctx, fqdn+"/EndpointHealthDataListResultPage.NextWithContext")
   273  		defer func() {
   274  			sc := -1
   275  			if page.Response().Response.Response != nil {
   276  				sc = page.Response().Response.Response.StatusCode
   277  			}
   278  			tracing.EndSpan(ctx, sc, err)
   279  		}()
   280  	}
   281  	for {
   282  		next, err := page.fn(ctx, page.ehdlr)
   283  		if err != nil {
   284  			return err
   285  		}
   286  		page.ehdlr = next
   287  		if !next.hasNextLink() || !next.IsEmpty() {
   288  			break
   289  		}
   290  	}
   291  	return nil
   292  }
   293  
   294  // Next advances to the next page of values.  If there was an error making
   295  // the request the page does not advance and the error is returned.
   296  // Deprecated: Use NextWithContext() instead.
   297  func (page *EndpointHealthDataListResultPage) Next() error {
   298  	return page.NextWithContext(context.Background())
   299  }
   300  
   301  // NotDone returns true if the page enumeration should be started or is not yet complete.
   302  func (page EndpointHealthDataListResultPage) NotDone() bool {
   303  	return !page.ehdlr.IsEmpty()
   304  }
   305  
   306  // Response returns the raw server response from the last page request.
   307  func (page EndpointHealthDataListResultPage) Response() EndpointHealthDataListResult {
   308  	return page.ehdlr
   309  }
   310  
   311  // Values returns the slice of values for the current page or nil if there are no values.
   312  func (page EndpointHealthDataListResultPage) Values() []EndpointHealthData {
   313  	if page.ehdlr.IsEmpty() {
   314  		return nil
   315  	}
   316  	return *page.ehdlr.Value
   317  }
   318  
   319  // Creates a new instance of the EndpointHealthDataListResultPage type.
   320  func NewEndpointHealthDataListResultPage(cur EndpointHealthDataListResult, getNextPage func(context.Context, EndpointHealthDataListResult) (EndpointHealthDataListResult, error)) EndpointHealthDataListResultPage {
   321  	return EndpointHealthDataListResultPage{
   322  		fn:    getNextPage,
   323  		ehdlr: cur,
   324  	}
   325  }
   326  
   327  // EnrichmentProperties the properties of an enrichment that your IoT hub applies to messages delivered to
   328  // endpoints.
   329  type EnrichmentProperties struct {
   330  	// Key - The key or name for the enrichment property.
   331  	Key *string `json:"key,omitempty"`
   332  	// Value - The value for the enrichment property.
   333  	Value *string `json:"value,omitempty"`
   334  	// EndpointNames - The list of endpoints for which the enrichment is applied to the message.
   335  	EndpointNames *[]string `json:"endpointNames,omitempty"`
   336  }
   337  
   338  // ErrorDetails error details.
   339  type ErrorDetails struct {
   340  	// Code - READ-ONLY; The error code.
   341  	Code *string `json:"code,omitempty"`
   342  	// HTTPStatusCode - READ-ONLY; The HTTP status code.
   343  	HTTPStatusCode *string `json:"httpStatusCode,omitempty"`
   344  	// Message - READ-ONLY; The error message.
   345  	Message *string `json:"message,omitempty"`
   346  	// Details - READ-ONLY; The error details.
   347  	Details *string `json:"details,omitempty"`
   348  }
   349  
   350  // MarshalJSON is the custom marshaler for ErrorDetails.
   351  func (ed ErrorDetails) MarshalJSON() ([]byte, error) {
   352  	objectMap := make(map[string]interface{})
   353  	return json.Marshal(objectMap)
   354  }
   355  
   356  // EventHubConsumerGroupInfo the properties of the EventHubConsumerGroupInfo object.
   357  type EventHubConsumerGroupInfo struct {
   358  	autorest.Response `json:"-"`
   359  	// Properties - The tags.
   360  	Properties map[string]*string `json:"properties"`
   361  	// ID - READ-ONLY; The Event Hub-compatible consumer group identifier.
   362  	ID *string `json:"id,omitempty"`
   363  	// Name - READ-ONLY; The Event Hub-compatible consumer group name.
   364  	Name *string `json:"name,omitempty"`
   365  	// Type - READ-ONLY; the resource type.
   366  	Type *string `json:"type,omitempty"`
   367  	// Etag - READ-ONLY; The etag.
   368  	Etag *string `json:"etag,omitempty"`
   369  }
   370  
   371  // MarshalJSON is the custom marshaler for EventHubConsumerGroupInfo.
   372  func (ehcgi EventHubConsumerGroupInfo) MarshalJSON() ([]byte, error) {
   373  	objectMap := make(map[string]interface{})
   374  	if ehcgi.Properties != nil {
   375  		objectMap["properties"] = ehcgi.Properties
   376  	}
   377  	return json.Marshal(objectMap)
   378  }
   379  
   380  // EventHubConsumerGroupsListResult the JSON-serialized array of Event Hub-compatible consumer group names
   381  // with a next link.
   382  type EventHubConsumerGroupsListResult struct {
   383  	autorest.Response `json:"-"`
   384  	// Value - List of consumer groups objects
   385  	Value *[]EventHubConsumerGroupInfo `json:"value,omitempty"`
   386  	// NextLink - READ-ONLY; The next link.
   387  	NextLink *string `json:"nextLink,omitempty"`
   388  }
   389  
   390  // MarshalJSON is the custom marshaler for EventHubConsumerGroupsListResult.
   391  func (ehcglr EventHubConsumerGroupsListResult) MarshalJSON() ([]byte, error) {
   392  	objectMap := make(map[string]interface{})
   393  	if ehcglr.Value != nil {
   394  		objectMap["value"] = ehcglr.Value
   395  	}
   396  	return json.Marshal(objectMap)
   397  }
   398  
   399  // EventHubConsumerGroupsListResultIterator provides access to a complete listing of
   400  // EventHubConsumerGroupInfo values.
   401  type EventHubConsumerGroupsListResultIterator struct {
   402  	i    int
   403  	page EventHubConsumerGroupsListResultPage
   404  }
   405  
   406  // NextWithContext advances to the next value.  If there was an error making
   407  // the request the iterator does not advance and the error is returned.
   408  func (iter *EventHubConsumerGroupsListResultIterator) NextWithContext(ctx context.Context) (err error) {
   409  	if tracing.IsEnabled() {
   410  		ctx = tracing.StartSpan(ctx, fqdn+"/EventHubConsumerGroupsListResultIterator.NextWithContext")
   411  		defer func() {
   412  			sc := -1
   413  			if iter.Response().Response.Response != nil {
   414  				sc = iter.Response().Response.Response.StatusCode
   415  			}
   416  			tracing.EndSpan(ctx, sc, err)
   417  		}()
   418  	}
   419  	iter.i++
   420  	if iter.i < len(iter.page.Values()) {
   421  		return nil
   422  	}
   423  	err = iter.page.NextWithContext(ctx)
   424  	if err != nil {
   425  		iter.i--
   426  		return err
   427  	}
   428  	iter.i = 0
   429  	return nil
   430  }
   431  
   432  // Next advances to the next value.  If there was an error making
   433  // the request the iterator does not advance and the error is returned.
   434  // Deprecated: Use NextWithContext() instead.
   435  func (iter *EventHubConsumerGroupsListResultIterator) Next() error {
   436  	return iter.NextWithContext(context.Background())
   437  }
   438  
   439  // NotDone returns true if the enumeration should be started or is not yet complete.
   440  func (iter EventHubConsumerGroupsListResultIterator) NotDone() bool {
   441  	return iter.page.NotDone() && iter.i < len(iter.page.Values())
   442  }
   443  
   444  // Response returns the raw server response from the last page request.
   445  func (iter EventHubConsumerGroupsListResultIterator) Response() EventHubConsumerGroupsListResult {
   446  	return iter.page.Response()
   447  }
   448  
   449  // Value returns the current value or a zero-initialized value if the
   450  // iterator has advanced beyond the end of the collection.
   451  func (iter EventHubConsumerGroupsListResultIterator) Value() EventHubConsumerGroupInfo {
   452  	if !iter.page.NotDone() {
   453  		return EventHubConsumerGroupInfo{}
   454  	}
   455  	return iter.page.Values()[iter.i]
   456  }
   457  
   458  // Creates a new instance of the EventHubConsumerGroupsListResultIterator type.
   459  func NewEventHubConsumerGroupsListResultIterator(page EventHubConsumerGroupsListResultPage) EventHubConsumerGroupsListResultIterator {
   460  	return EventHubConsumerGroupsListResultIterator{page: page}
   461  }
   462  
   463  // IsEmpty returns true if the ListResult contains no values.
   464  func (ehcglr EventHubConsumerGroupsListResult) IsEmpty() bool {
   465  	return ehcglr.Value == nil || len(*ehcglr.Value) == 0
   466  }
   467  
   468  // hasNextLink returns true if the NextLink is not empty.
   469  func (ehcglr EventHubConsumerGroupsListResult) hasNextLink() bool {
   470  	return ehcglr.NextLink != nil && len(*ehcglr.NextLink) != 0
   471  }
   472  
   473  // eventHubConsumerGroupsListResultPreparer prepares a request to retrieve the next set of results.
   474  // It returns nil if no more results exist.
   475  func (ehcglr EventHubConsumerGroupsListResult) eventHubConsumerGroupsListResultPreparer(ctx context.Context) (*http.Request, error) {
   476  	if !ehcglr.hasNextLink() {
   477  		return nil, nil
   478  	}
   479  	return autorest.Prepare((&http.Request{}).WithContext(ctx),
   480  		autorest.AsJSON(),
   481  		autorest.AsGet(),
   482  		autorest.WithBaseURL(to.String(ehcglr.NextLink)))
   483  }
   484  
   485  // EventHubConsumerGroupsListResultPage contains a page of EventHubConsumerGroupInfo values.
   486  type EventHubConsumerGroupsListResultPage struct {
   487  	fn     func(context.Context, EventHubConsumerGroupsListResult) (EventHubConsumerGroupsListResult, error)
   488  	ehcglr EventHubConsumerGroupsListResult
   489  }
   490  
   491  // NextWithContext advances to the next page of values.  If there was an error making
   492  // the request the page does not advance and the error is returned.
   493  func (page *EventHubConsumerGroupsListResultPage) NextWithContext(ctx context.Context) (err error) {
   494  	if tracing.IsEnabled() {
   495  		ctx = tracing.StartSpan(ctx, fqdn+"/EventHubConsumerGroupsListResultPage.NextWithContext")
   496  		defer func() {
   497  			sc := -1
   498  			if page.Response().Response.Response != nil {
   499  				sc = page.Response().Response.Response.StatusCode
   500  			}
   501  			tracing.EndSpan(ctx, sc, err)
   502  		}()
   503  	}
   504  	for {
   505  		next, err := page.fn(ctx, page.ehcglr)
   506  		if err != nil {
   507  			return err
   508  		}
   509  		page.ehcglr = next
   510  		if !next.hasNextLink() || !next.IsEmpty() {
   511  			break
   512  		}
   513  	}
   514  	return nil
   515  }
   516  
   517  // Next advances to the next page of values.  If there was an error making
   518  // the request the page does not advance and the error is returned.
   519  // Deprecated: Use NextWithContext() instead.
   520  func (page *EventHubConsumerGroupsListResultPage) Next() error {
   521  	return page.NextWithContext(context.Background())
   522  }
   523  
   524  // NotDone returns true if the page enumeration should be started or is not yet complete.
   525  func (page EventHubConsumerGroupsListResultPage) NotDone() bool {
   526  	return !page.ehcglr.IsEmpty()
   527  }
   528  
   529  // Response returns the raw server response from the last page request.
   530  func (page EventHubConsumerGroupsListResultPage) Response() EventHubConsumerGroupsListResult {
   531  	return page.ehcglr
   532  }
   533  
   534  // Values returns the slice of values for the current page or nil if there are no values.
   535  func (page EventHubConsumerGroupsListResultPage) Values() []EventHubConsumerGroupInfo {
   536  	if page.ehcglr.IsEmpty() {
   537  		return nil
   538  	}
   539  	return *page.ehcglr.Value
   540  }
   541  
   542  // Creates a new instance of the EventHubConsumerGroupsListResultPage type.
   543  func NewEventHubConsumerGroupsListResultPage(cur EventHubConsumerGroupsListResult, getNextPage func(context.Context, EventHubConsumerGroupsListResult) (EventHubConsumerGroupsListResult, error)) EventHubConsumerGroupsListResultPage {
   544  	return EventHubConsumerGroupsListResultPage{
   545  		fn:     getNextPage,
   546  		ehcglr: cur,
   547  	}
   548  }
   549  
   550  // EventHubProperties the properties of the provisioned Event Hub-compatible endpoint used by the IoT hub.
   551  type EventHubProperties struct {
   552  	// RetentionTimeInDays - The retention time for device-to-cloud messages in days. See: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#device-to-cloud-messages
   553  	RetentionTimeInDays *int64 `json:"retentionTimeInDays,omitempty"`
   554  	// PartitionCount - The number of partitions for receiving device-to-cloud messages in the Event Hub-compatible endpoint. See: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#device-to-cloud-messages.
   555  	PartitionCount *int32 `json:"partitionCount,omitempty"`
   556  	// PartitionIds - READ-ONLY; The partition ids in the Event Hub-compatible endpoint.
   557  	PartitionIds *[]string `json:"partitionIds,omitempty"`
   558  	// Path - READ-ONLY; The Event Hub-compatible name.
   559  	Path *string `json:"path,omitempty"`
   560  	// Endpoint - READ-ONLY; The Event Hub-compatible endpoint.
   561  	Endpoint *string `json:"endpoint,omitempty"`
   562  }
   563  
   564  // MarshalJSON is the custom marshaler for EventHubProperties.
   565  func (ehp EventHubProperties) MarshalJSON() ([]byte, error) {
   566  	objectMap := make(map[string]interface{})
   567  	if ehp.RetentionTimeInDays != nil {
   568  		objectMap["retentionTimeInDays"] = ehp.RetentionTimeInDays
   569  	}
   570  	if ehp.PartitionCount != nil {
   571  		objectMap["partitionCount"] = ehp.PartitionCount
   572  	}
   573  	return json.Marshal(objectMap)
   574  }
   575  
   576  // ExportDevicesRequest use to provide parameters when requesting an export of all devices in the IoT hub.
   577  type ExportDevicesRequest struct {
   578  	// ExportBlobContainerURI - The export blob container URI.
   579  	ExportBlobContainerURI *string `json:"exportBlobContainerUri,omitempty"`
   580  	// ExcludeKeys - The value indicating whether keys should be excluded during export.
   581  	ExcludeKeys *bool `json:"excludeKeys,omitempty"`
   582  	// ExportBlobName - The name of the blob that will be created in the provided output blob container. This blob will contain the exported device registry information for the IoT Hub.
   583  	ExportBlobName *string `json:"exportBlobName,omitempty"`
   584  	// AuthenticationType - Specifies authentication type being used for connecting to the storage account. Possible values include: 'KeyBased', 'IdentityBased'
   585  	AuthenticationType AuthenticationType `json:"authenticationType,omitempty"`
   586  }
   587  
   588  // FailoverInput use to provide failover region when requesting manual Failover for a hub.
   589  type FailoverInput struct {
   590  	// FailoverRegion - Region the hub will be failed over to
   591  	FailoverRegion *string `json:"failoverRegion,omitempty"`
   592  }
   593  
   594  // FallbackRouteProperties the properties of the fallback route. IoT Hub uses these properties when it
   595  // routes messages to the fallback endpoint.
   596  type FallbackRouteProperties struct {
   597  	// Name - The name of the route. The name can only include alphanumeric characters, periods, underscores, hyphens, has a maximum length of 64 characters, and must be unique.
   598  	Name *string `json:"name,omitempty"`
   599  	// Source - The source to which the routing rule is to be applied to. For example, DeviceMessages
   600  	Source *string `json:"source,omitempty"`
   601  	// Condition - The condition which is evaluated in order to apply the fallback route. If the condition is not provided it will evaluate to true by default. For grammar, See: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-query-language
   602  	Condition *string `json:"condition,omitempty"`
   603  	// EndpointNames - The list of endpoints to which the messages that satisfy the condition are routed to. Currently only 1 endpoint is allowed.
   604  	EndpointNames *[]string `json:"endpointNames,omitempty"`
   605  	// IsEnabled - Used to specify whether the fallback route is enabled.
   606  	IsEnabled *bool `json:"isEnabled,omitempty"`
   607  }
   608  
   609  // FeedbackProperties the properties of the feedback queue for cloud-to-device messages.
   610  type FeedbackProperties struct {
   611  	// LockDurationAsIso8601 - The lock duration for the feedback queue. See: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#cloud-to-device-messages.
   612  	LockDurationAsIso8601 *string `json:"lockDurationAsIso8601,omitempty"`
   613  	// TTLAsIso8601 - The period of time for which a message is available to consume before it is expired by the IoT hub. See: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#cloud-to-device-messages.
   614  	TTLAsIso8601 *string `json:"ttlAsIso8601,omitempty"`
   615  	// MaxDeliveryCount - The number of times the IoT hub attempts to deliver a message on the feedback queue. See: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#cloud-to-device-messages.
   616  	MaxDeliveryCount *int32 `json:"maxDeliveryCount,omitempty"`
   617  }
   618  
   619  // GroupIDInformation the group information for creating a private endpoint on an IotHub
   620  type GroupIDInformation struct {
   621  	autorest.Response `json:"-"`
   622  	// ID - READ-ONLY; The resource identifier.
   623  	ID *string `json:"id,omitempty"`
   624  	// Name - READ-ONLY; The resource name.
   625  	Name *string `json:"name,omitempty"`
   626  	// Type - READ-ONLY; The resource type.
   627  	Type       *string                       `json:"type,omitempty"`
   628  	Properties *GroupIDInformationProperties `json:"properties,omitempty"`
   629  }
   630  
   631  // MarshalJSON is the custom marshaler for GroupIDInformation.
   632  func (gii GroupIDInformation) MarshalJSON() ([]byte, error) {
   633  	objectMap := make(map[string]interface{})
   634  	if gii.Properties != nil {
   635  		objectMap["properties"] = gii.Properties
   636  	}
   637  	return json.Marshal(objectMap)
   638  }
   639  
   640  // GroupIDInformationProperties the properties for a group information object
   641  type GroupIDInformationProperties struct {
   642  	// GroupID - The group id
   643  	GroupID *string `json:"groupId,omitempty"`
   644  	// RequiredMembers - The required members for a specific group id
   645  	RequiredMembers *[]string `json:"requiredMembers,omitempty"`
   646  	// RequiredZoneNames - The required DNS zones for a specific group id
   647  	RequiredZoneNames *[]string `json:"requiredZoneNames,omitempty"`
   648  }
   649  
   650  // ImportDevicesRequest use to provide parameters when requesting an import of all devices in the hub.
   651  type ImportDevicesRequest struct {
   652  	// InputBlobContainerURI - The input blob container URI.
   653  	InputBlobContainerURI *string `json:"inputBlobContainerUri,omitempty"`
   654  	// OutputBlobContainerURI - The output blob container URI.
   655  	OutputBlobContainerURI *string `json:"outputBlobContainerUri,omitempty"`
   656  	// InputBlobName - The blob name to be used when importing from the provided input blob container.
   657  	InputBlobName *string `json:"inputBlobName,omitempty"`
   658  	// OutputBlobName - The blob name to use for storing the status of the import job.
   659  	OutputBlobName *string `json:"outputBlobName,omitempty"`
   660  	// AuthenticationType - Specifies authentication type being used for connecting to the storage account. Possible values include: 'KeyBased', 'IdentityBased'
   661  	AuthenticationType AuthenticationType `json:"authenticationType,omitempty"`
   662  }
   663  
   664  // IotHubCapacity ioT Hub capacity information.
   665  type IotHubCapacity struct {
   666  	// Minimum - READ-ONLY; The minimum number of units.
   667  	Minimum *int64 `json:"minimum,omitempty"`
   668  	// Maximum - READ-ONLY; The maximum number of units.
   669  	Maximum *int64 `json:"maximum,omitempty"`
   670  	// Default - READ-ONLY; The default number of units.
   671  	Default *int64 `json:"default,omitempty"`
   672  	// ScaleType - READ-ONLY; The type of the scaling enabled. Possible values include: 'IotHubScaleTypeAutomatic', 'IotHubScaleTypeManual', 'IotHubScaleTypeNone'
   673  	ScaleType IotHubScaleType `json:"scaleType,omitempty"`
   674  }
   675  
   676  // MarshalJSON is the custom marshaler for IotHubCapacity.
   677  func (ihc IotHubCapacity) MarshalJSON() ([]byte, error) {
   678  	objectMap := make(map[string]interface{})
   679  	return json.Marshal(objectMap)
   680  }
   681  
   682  // IotHubDescription the description of the IoT hub.
   683  type IotHubDescription struct {
   684  	autorest.Response `json:"-"`
   685  	// Etag - The Etag field is *not* required. If it is provided in the response body, it must also be provided as a header per the normal ETag convention.
   686  	Etag *string `json:"etag,omitempty"`
   687  	// Properties - IotHub properties
   688  	Properties *IotHubProperties `json:"properties,omitempty"`
   689  	// Sku - IotHub SKU info
   690  	Sku *IotHubSkuInfo `json:"sku,omitempty"`
   691  	// ID - READ-ONLY; The resource identifier.
   692  	ID *string `json:"id,omitempty"`
   693  	// Name - READ-ONLY; The resource name.
   694  	Name *string `json:"name,omitempty"`
   695  	// Type - READ-ONLY; The resource type.
   696  	Type *string `json:"type,omitempty"`
   697  	// Location - The resource location.
   698  	Location *string `json:"location,omitempty"`
   699  	// Tags - The resource tags.
   700  	Tags map[string]*string `json:"tags"`
   701  }
   702  
   703  // MarshalJSON is the custom marshaler for IotHubDescription.
   704  func (ihd IotHubDescription) MarshalJSON() ([]byte, error) {
   705  	objectMap := make(map[string]interface{})
   706  	if ihd.Etag != nil {
   707  		objectMap["etag"] = ihd.Etag
   708  	}
   709  	if ihd.Properties != nil {
   710  		objectMap["properties"] = ihd.Properties
   711  	}
   712  	if ihd.Sku != nil {
   713  		objectMap["sku"] = ihd.Sku
   714  	}
   715  	if ihd.Location != nil {
   716  		objectMap["location"] = ihd.Location
   717  	}
   718  	if ihd.Tags != nil {
   719  		objectMap["tags"] = ihd.Tags
   720  	}
   721  	return json.Marshal(objectMap)
   722  }
   723  
   724  // IotHubDescriptionListResult the JSON-serialized array of IotHubDescription objects with a next link.
   725  type IotHubDescriptionListResult struct {
   726  	autorest.Response `json:"-"`
   727  	// Value - The array of IotHubDescription objects.
   728  	Value *[]IotHubDescription `json:"value,omitempty"`
   729  	// NextLink - READ-ONLY; The next link.
   730  	NextLink *string `json:"nextLink,omitempty"`
   731  }
   732  
   733  // MarshalJSON is the custom marshaler for IotHubDescriptionListResult.
   734  func (ihdlr IotHubDescriptionListResult) MarshalJSON() ([]byte, error) {
   735  	objectMap := make(map[string]interface{})
   736  	if ihdlr.Value != nil {
   737  		objectMap["value"] = ihdlr.Value
   738  	}
   739  	return json.Marshal(objectMap)
   740  }
   741  
   742  // IotHubDescriptionListResultIterator provides access to a complete listing of IotHubDescription values.
   743  type IotHubDescriptionListResultIterator struct {
   744  	i    int
   745  	page IotHubDescriptionListResultPage
   746  }
   747  
   748  // NextWithContext advances to the next value.  If there was an error making
   749  // the request the iterator does not advance and the error is returned.
   750  func (iter *IotHubDescriptionListResultIterator) NextWithContext(ctx context.Context) (err error) {
   751  	if tracing.IsEnabled() {
   752  		ctx = tracing.StartSpan(ctx, fqdn+"/IotHubDescriptionListResultIterator.NextWithContext")
   753  		defer func() {
   754  			sc := -1
   755  			if iter.Response().Response.Response != nil {
   756  				sc = iter.Response().Response.Response.StatusCode
   757  			}
   758  			tracing.EndSpan(ctx, sc, err)
   759  		}()
   760  	}
   761  	iter.i++
   762  	if iter.i < len(iter.page.Values()) {
   763  		return nil
   764  	}
   765  	err = iter.page.NextWithContext(ctx)
   766  	if err != nil {
   767  		iter.i--
   768  		return err
   769  	}
   770  	iter.i = 0
   771  	return nil
   772  }
   773  
   774  // Next advances to the next value.  If there was an error making
   775  // the request the iterator does not advance and the error is returned.
   776  // Deprecated: Use NextWithContext() instead.
   777  func (iter *IotHubDescriptionListResultIterator) Next() error {
   778  	return iter.NextWithContext(context.Background())
   779  }
   780  
   781  // NotDone returns true if the enumeration should be started or is not yet complete.
   782  func (iter IotHubDescriptionListResultIterator) NotDone() bool {
   783  	return iter.page.NotDone() && iter.i < len(iter.page.Values())
   784  }
   785  
   786  // Response returns the raw server response from the last page request.
   787  func (iter IotHubDescriptionListResultIterator) Response() IotHubDescriptionListResult {
   788  	return iter.page.Response()
   789  }
   790  
   791  // Value returns the current value or a zero-initialized value if the
   792  // iterator has advanced beyond the end of the collection.
   793  func (iter IotHubDescriptionListResultIterator) Value() IotHubDescription {
   794  	if !iter.page.NotDone() {
   795  		return IotHubDescription{}
   796  	}
   797  	return iter.page.Values()[iter.i]
   798  }
   799  
   800  // Creates a new instance of the IotHubDescriptionListResultIterator type.
   801  func NewIotHubDescriptionListResultIterator(page IotHubDescriptionListResultPage) IotHubDescriptionListResultIterator {
   802  	return IotHubDescriptionListResultIterator{page: page}
   803  }
   804  
   805  // IsEmpty returns true if the ListResult contains no values.
   806  func (ihdlr IotHubDescriptionListResult) IsEmpty() bool {
   807  	return ihdlr.Value == nil || len(*ihdlr.Value) == 0
   808  }
   809  
   810  // hasNextLink returns true if the NextLink is not empty.
   811  func (ihdlr IotHubDescriptionListResult) hasNextLink() bool {
   812  	return ihdlr.NextLink != nil && len(*ihdlr.NextLink) != 0
   813  }
   814  
   815  // iotHubDescriptionListResultPreparer prepares a request to retrieve the next set of results.
   816  // It returns nil if no more results exist.
   817  func (ihdlr IotHubDescriptionListResult) iotHubDescriptionListResultPreparer(ctx context.Context) (*http.Request, error) {
   818  	if !ihdlr.hasNextLink() {
   819  		return nil, nil
   820  	}
   821  	return autorest.Prepare((&http.Request{}).WithContext(ctx),
   822  		autorest.AsJSON(),
   823  		autorest.AsGet(),
   824  		autorest.WithBaseURL(to.String(ihdlr.NextLink)))
   825  }
   826  
   827  // IotHubDescriptionListResultPage contains a page of IotHubDescription values.
   828  type IotHubDescriptionListResultPage struct {
   829  	fn    func(context.Context, IotHubDescriptionListResult) (IotHubDescriptionListResult, error)
   830  	ihdlr IotHubDescriptionListResult
   831  }
   832  
   833  // NextWithContext advances to the next page of values.  If there was an error making
   834  // the request the page does not advance and the error is returned.
   835  func (page *IotHubDescriptionListResultPage) NextWithContext(ctx context.Context) (err error) {
   836  	if tracing.IsEnabled() {
   837  		ctx = tracing.StartSpan(ctx, fqdn+"/IotHubDescriptionListResultPage.NextWithContext")
   838  		defer func() {
   839  			sc := -1
   840  			if page.Response().Response.Response != nil {
   841  				sc = page.Response().Response.Response.StatusCode
   842  			}
   843  			tracing.EndSpan(ctx, sc, err)
   844  		}()
   845  	}
   846  	for {
   847  		next, err := page.fn(ctx, page.ihdlr)
   848  		if err != nil {
   849  			return err
   850  		}
   851  		page.ihdlr = next
   852  		if !next.hasNextLink() || !next.IsEmpty() {
   853  			break
   854  		}
   855  	}
   856  	return nil
   857  }
   858  
   859  // Next advances to the next page of values.  If there was an error making
   860  // the request the page does not advance and the error is returned.
   861  // Deprecated: Use NextWithContext() instead.
   862  func (page *IotHubDescriptionListResultPage) Next() error {
   863  	return page.NextWithContext(context.Background())
   864  }
   865  
   866  // NotDone returns true if the page enumeration should be started or is not yet complete.
   867  func (page IotHubDescriptionListResultPage) NotDone() bool {
   868  	return !page.ihdlr.IsEmpty()
   869  }
   870  
   871  // Response returns the raw server response from the last page request.
   872  func (page IotHubDescriptionListResultPage) Response() IotHubDescriptionListResult {
   873  	return page.ihdlr
   874  }
   875  
   876  // Values returns the slice of values for the current page or nil if there are no values.
   877  func (page IotHubDescriptionListResultPage) Values() []IotHubDescription {
   878  	if page.ihdlr.IsEmpty() {
   879  		return nil
   880  	}
   881  	return *page.ihdlr.Value
   882  }
   883  
   884  // Creates a new instance of the IotHubDescriptionListResultPage type.
   885  func NewIotHubDescriptionListResultPage(cur IotHubDescriptionListResult, getNextPage func(context.Context, IotHubDescriptionListResult) (IotHubDescriptionListResult, error)) IotHubDescriptionListResultPage {
   886  	return IotHubDescriptionListResultPage{
   887  		fn:    getNextPage,
   888  		ihdlr: cur,
   889  	}
   890  }
   891  
   892  // IotHubLocationDescription public representation of one of the locations where a resource is provisioned.
   893  type IotHubLocationDescription struct {
   894  	// Location - The name of the Azure region
   895  	Location *string `json:"location,omitempty"`
   896  	// Role - The role of the region, can be either primary or secondary. The primary region is where the IoT hub is currently provisioned. The secondary region is the Azure disaster recovery (DR) paired region and also the region where the IoT hub can failover to. Possible values include: 'Primary', 'Secondary'
   897  	Role IotHubReplicaRoleType `json:"role,omitempty"`
   898  }
   899  
   900  // IotHubManualFailoverFuture an abstraction for monitoring and retrieving the results of a long-running
   901  // operation.
   902  type IotHubManualFailoverFuture struct {
   903  	azure.FutureAPI
   904  	// Result returns the result of the asynchronous operation.
   905  	// If the operation has not completed it will return an error.
   906  	Result func(IotHubClient) (autorest.Response, error)
   907  }
   908  
   909  // UnmarshalJSON is the custom unmarshaller for CreateFuture.
   910  func (future *IotHubManualFailoverFuture) UnmarshalJSON(body []byte) error {
   911  	var azFuture azure.Future
   912  	if err := json.Unmarshal(body, &azFuture); err != nil {
   913  		return err
   914  	}
   915  	future.FutureAPI = &azFuture
   916  	future.Result = future.result
   917  	return nil
   918  }
   919  
   920  // result is the default implementation for IotHubManualFailoverFuture.Result.
   921  func (future *IotHubManualFailoverFuture) result(client IotHubClient) (ar autorest.Response, err error) {
   922  	var done bool
   923  	done, err = future.DoneWithContext(context.Background(), client)
   924  	if err != nil {
   925  		err = autorest.NewErrorWithError(err, "devices.IotHubManualFailoverFuture", "Result", future.Response(), "Polling failure")
   926  		return
   927  	}
   928  	if !done {
   929  		ar.Response = future.Response()
   930  		err = azure.NewAsyncOpIncompleteError("devices.IotHubManualFailoverFuture")
   931  		return
   932  	}
   933  	ar.Response = future.Response()
   934  	return
   935  }
   936  
   937  // IotHubNameAvailabilityInfo the properties indicating whether a given IoT hub name is available.
   938  type IotHubNameAvailabilityInfo struct {
   939  	autorest.Response `json:"-"`
   940  	// NameAvailable - READ-ONLY; The value which indicates whether the provided name is available.
   941  	NameAvailable *bool `json:"nameAvailable,omitempty"`
   942  	// Reason - READ-ONLY; The reason for unavailability. Possible values include: 'Invalid', 'AlreadyExists'
   943  	Reason IotHubNameUnavailabilityReason `json:"reason,omitempty"`
   944  	// Message - The detailed reason message.
   945  	Message *string `json:"message,omitempty"`
   946  }
   947  
   948  // MarshalJSON is the custom marshaler for IotHubNameAvailabilityInfo.
   949  func (ihnai IotHubNameAvailabilityInfo) MarshalJSON() ([]byte, error) {
   950  	objectMap := make(map[string]interface{})
   951  	if ihnai.Message != nil {
   952  		objectMap["message"] = ihnai.Message
   953  	}
   954  	return json.Marshal(objectMap)
   955  }
   956  
   957  // IotHubProperties the properties of an IoT hub.
   958  type IotHubProperties struct {
   959  	// AuthorizationPolicies - The shared access policies you can use to secure a connection to the IoT hub.
   960  	AuthorizationPolicies *[]SharedAccessSignatureAuthorizationRule `json:"authorizationPolicies,omitempty"`
   961  	// PublicNetworkAccess - Whether requests from Public Network are allowed. Possible values include: 'Enabled', 'Disabled'
   962  	PublicNetworkAccess PublicNetworkAccess `json:"publicNetworkAccess,omitempty"`
   963  	// IPFilterRules - The IP filter rules.
   964  	IPFilterRules *[]IPFilterRule `json:"ipFilterRules,omitempty"`
   965  	// MinTLSVersion - Specifies the minimum TLS version to support for this hub. Can be set to "1.2" to have clients that use a TLS version below 1.2 to be rejected.
   966  	MinTLSVersion *string `json:"minTlsVersion,omitempty"`
   967  	// PrivateEndpointConnections - Private endpoint connections created on this IotHub
   968  	PrivateEndpointConnections *[]PrivateEndpointConnection `json:"privateEndpointConnections,omitempty"`
   969  	// ProvisioningState - READ-ONLY; The provisioning state.
   970  	ProvisioningState *string `json:"provisioningState,omitempty"`
   971  	// State - READ-ONLY; The hub state.
   972  	State *string `json:"state,omitempty"`
   973  	// HostName - READ-ONLY; The name of the host.
   974  	HostName *string `json:"hostName,omitempty"`
   975  	// EventHubEndpoints - The Event Hub-compatible endpoint properties. The only possible keys to this dictionary is events. This key has to be present in the dictionary while making create or update calls for the IoT hub.
   976  	EventHubEndpoints map[string]*EventHubProperties `json:"eventHubEndpoints"`
   977  	Routing           *RoutingProperties             `json:"routing,omitempty"`
   978  	// StorageEndpoints - The list of Azure Storage endpoints where you can upload files. Currently you can configure only one Azure Storage account and that MUST have its key as $default. Specifying more than one storage account causes an error to be thrown. Not specifying a value for this property when the enableFileUploadNotifications property is set to True, causes an error to be thrown.
   979  	StorageEndpoints map[string]*StorageEndpointProperties `json:"storageEndpoints"`
   980  	// MessagingEndpoints - The messaging endpoint properties for the file upload notification queue.
   981  	MessagingEndpoints map[string]*MessagingEndpointProperties `json:"messagingEndpoints"`
   982  	// EnableFileUploadNotifications - If True, file upload notifications are enabled.
   983  	EnableFileUploadNotifications *bool                    `json:"enableFileUploadNotifications,omitempty"`
   984  	CloudToDevice                 *CloudToDeviceProperties `json:"cloudToDevice,omitempty"`
   985  	// Comments - IoT hub comments.
   986  	Comments *string `json:"comments,omitempty"`
   987  	// Features - The capabilities and features enabled for the IoT hub. Possible values include: 'None', 'DeviceManagement'
   988  	Features Capabilities `json:"features,omitempty"`
   989  	// Locations - READ-ONLY; Primary and secondary location for iot hub
   990  	Locations *[]IotHubLocationDescription `json:"locations,omitempty"`
   991  }
   992  
   993  // MarshalJSON is the custom marshaler for IotHubProperties.
   994  func (ihp IotHubProperties) MarshalJSON() ([]byte, error) {
   995  	objectMap := make(map[string]interface{})
   996  	if ihp.AuthorizationPolicies != nil {
   997  		objectMap["authorizationPolicies"] = ihp.AuthorizationPolicies
   998  	}
   999  	if ihp.PublicNetworkAccess != "" {
  1000  		objectMap["publicNetworkAccess"] = ihp.PublicNetworkAccess
  1001  	}
  1002  	if ihp.IPFilterRules != nil {
  1003  		objectMap["ipFilterRules"] = ihp.IPFilterRules
  1004  	}
  1005  	if ihp.MinTLSVersion != nil {
  1006  		objectMap["minTlsVersion"] = ihp.MinTLSVersion
  1007  	}
  1008  	if ihp.PrivateEndpointConnections != nil {
  1009  		objectMap["privateEndpointConnections"] = ihp.PrivateEndpointConnections
  1010  	}
  1011  	if ihp.EventHubEndpoints != nil {
  1012  		objectMap["eventHubEndpoints"] = ihp.EventHubEndpoints
  1013  	}
  1014  	if ihp.Routing != nil {
  1015  		objectMap["routing"] = ihp.Routing
  1016  	}
  1017  	if ihp.StorageEndpoints != nil {
  1018  		objectMap["storageEndpoints"] = ihp.StorageEndpoints
  1019  	}
  1020  	if ihp.MessagingEndpoints != nil {
  1021  		objectMap["messagingEndpoints"] = ihp.MessagingEndpoints
  1022  	}
  1023  	if ihp.EnableFileUploadNotifications != nil {
  1024  		objectMap["enableFileUploadNotifications"] = ihp.EnableFileUploadNotifications
  1025  	}
  1026  	if ihp.CloudToDevice != nil {
  1027  		objectMap["cloudToDevice"] = ihp.CloudToDevice
  1028  	}
  1029  	if ihp.Comments != nil {
  1030  		objectMap["comments"] = ihp.Comments
  1031  	}
  1032  	if ihp.Features != "" {
  1033  		objectMap["features"] = ihp.Features
  1034  	}
  1035  	return json.Marshal(objectMap)
  1036  }
  1037  
  1038  // IotHubQuotaMetricInfo quota metrics properties.
  1039  type IotHubQuotaMetricInfo struct {
  1040  	// Name - READ-ONLY; The name of the quota metric.
  1041  	Name *string `json:"name,omitempty"`
  1042  	// CurrentValue - READ-ONLY; The current value for the quota metric.
  1043  	CurrentValue *int64 `json:"currentValue,omitempty"`
  1044  	// MaxValue - READ-ONLY; The maximum value of the quota metric.
  1045  	MaxValue *int64 `json:"maxValue,omitempty"`
  1046  }
  1047  
  1048  // MarshalJSON is the custom marshaler for IotHubQuotaMetricInfo.
  1049  func (ihqmi IotHubQuotaMetricInfo) MarshalJSON() ([]byte, error) {
  1050  	objectMap := make(map[string]interface{})
  1051  	return json.Marshal(objectMap)
  1052  }
  1053  
  1054  // IotHubQuotaMetricInfoListResult the JSON-serialized array of IotHubQuotaMetricInfo objects with a next
  1055  // link.
  1056  type IotHubQuotaMetricInfoListResult struct {
  1057  	autorest.Response `json:"-"`
  1058  	// Value - The array of quota metrics objects.
  1059  	Value *[]IotHubQuotaMetricInfo `json:"value,omitempty"`
  1060  	// NextLink - READ-ONLY; The next link.
  1061  	NextLink *string `json:"nextLink,omitempty"`
  1062  }
  1063  
  1064  // MarshalJSON is the custom marshaler for IotHubQuotaMetricInfoListResult.
  1065  func (ihqmilr IotHubQuotaMetricInfoListResult) MarshalJSON() ([]byte, error) {
  1066  	objectMap := make(map[string]interface{})
  1067  	if ihqmilr.Value != nil {
  1068  		objectMap["value"] = ihqmilr.Value
  1069  	}
  1070  	return json.Marshal(objectMap)
  1071  }
  1072  
  1073  // IotHubQuotaMetricInfoListResultIterator provides access to a complete listing of IotHubQuotaMetricInfo
  1074  // values.
  1075  type IotHubQuotaMetricInfoListResultIterator struct {
  1076  	i    int
  1077  	page IotHubQuotaMetricInfoListResultPage
  1078  }
  1079  
  1080  // NextWithContext advances to the next value.  If there was an error making
  1081  // the request the iterator does not advance and the error is returned.
  1082  func (iter *IotHubQuotaMetricInfoListResultIterator) NextWithContext(ctx context.Context) (err error) {
  1083  	if tracing.IsEnabled() {
  1084  		ctx = tracing.StartSpan(ctx, fqdn+"/IotHubQuotaMetricInfoListResultIterator.NextWithContext")
  1085  		defer func() {
  1086  			sc := -1
  1087  			if iter.Response().Response.Response != nil {
  1088  				sc = iter.Response().Response.Response.StatusCode
  1089  			}
  1090  			tracing.EndSpan(ctx, sc, err)
  1091  		}()
  1092  	}
  1093  	iter.i++
  1094  	if iter.i < len(iter.page.Values()) {
  1095  		return nil
  1096  	}
  1097  	err = iter.page.NextWithContext(ctx)
  1098  	if err != nil {
  1099  		iter.i--
  1100  		return err
  1101  	}
  1102  	iter.i = 0
  1103  	return nil
  1104  }
  1105  
  1106  // Next advances to the next value.  If there was an error making
  1107  // the request the iterator does not advance and the error is returned.
  1108  // Deprecated: Use NextWithContext() instead.
  1109  func (iter *IotHubQuotaMetricInfoListResultIterator) Next() error {
  1110  	return iter.NextWithContext(context.Background())
  1111  }
  1112  
  1113  // NotDone returns true if the enumeration should be started or is not yet complete.
  1114  func (iter IotHubQuotaMetricInfoListResultIterator) NotDone() bool {
  1115  	return iter.page.NotDone() && iter.i < len(iter.page.Values())
  1116  }
  1117  
  1118  // Response returns the raw server response from the last page request.
  1119  func (iter IotHubQuotaMetricInfoListResultIterator) Response() IotHubQuotaMetricInfoListResult {
  1120  	return iter.page.Response()
  1121  }
  1122  
  1123  // Value returns the current value or a zero-initialized value if the
  1124  // iterator has advanced beyond the end of the collection.
  1125  func (iter IotHubQuotaMetricInfoListResultIterator) Value() IotHubQuotaMetricInfo {
  1126  	if !iter.page.NotDone() {
  1127  		return IotHubQuotaMetricInfo{}
  1128  	}
  1129  	return iter.page.Values()[iter.i]
  1130  }
  1131  
  1132  // Creates a new instance of the IotHubQuotaMetricInfoListResultIterator type.
  1133  func NewIotHubQuotaMetricInfoListResultIterator(page IotHubQuotaMetricInfoListResultPage) IotHubQuotaMetricInfoListResultIterator {
  1134  	return IotHubQuotaMetricInfoListResultIterator{page: page}
  1135  }
  1136  
  1137  // IsEmpty returns true if the ListResult contains no values.
  1138  func (ihqmilr IotHubQuotaMetricInfoListResult) IsEmpty() bool {
  1139  	return ihqmilr.Value == nil || len(*ihqmilr.Value) == 0
  1140  }
  1141  
  1142  // hasNextLink returns true if the NextLink is not empty.
  1143  func (ihqmilr IotHubQuotaMetricInfoListResult) hasNextLink() bool {
  1144  	return ihqmilr.NextLink != nil && len(*ihqmilr.NextLink) != 0
  1145  }
  1146  
  1147  // iotHubQuotaMetricInfoListResultPreparer prepares a request to retrieve the next set of results.
  1148  // It returns nil if no more results exist.
  1149  func (ihqmilr IotHubQuotaMetricInfoListResult) iotHubQuotaMetricInfoListResultPreparer(ctx context.Context) (*http.Request, error) {
  1150  	if !ihqmilr.hasNextLink() {
  1151  		return nil, nil
  1152  	}
  1153  	return autorest.Prepare((&http.Request{}).WithContext(ctx),
  1154  		autorest.AsJSON(),
  1155  		autorest.AsGet(),
  1156  		autorest.WithBaseURL(to.String(ihqmilr.NextLink)))
  1157  }
  1158  
  1159  // IotHubQuotaMetricInfoListResultPage contains a page of IotHubQuotaMetricInfo values.
  1160  type IotHubQuotaMetricInfoListResultPage struct {
  1161  	fn      func(context.Context, IotHubQuotaMetricInfoListResult) (IotHubQuotaMetricInfoListResult, error)
  1162  	ihqmilr IotHubQuotaMetricInfoListResult
  1163  }
  1164  
  1165  // NextWithContext advances to the next page of values.  If there was an error making
  1166  // the request the page does not advance and the error is returned.
  1167  func (page *IotHubQuotaMetricInfoListResultPage) NextWithContext(ctx context.Context) (err error) {
  1168  	if tracing.IsEnabled() {
  1169  		ctx = tracing.StartSpan(ctx, fqdn+"/IotHubQuotaMetricInfoListResultPage.NextWithContext")
  1170  		defer func() {
  1171  			sc := -1
  1172  			if page.Response().Response.Response != nil {
  1173  				sc = page.Response().Response.Response.StatusCode
  1174  			}
  1175  			tracing.EndSpan(ctx, sc, err)
  1176  		}()
  1177  	}
  1178  	for {
  1179  		next, err := page.fn(ctx, page.ihqmilr)
  1180  		if err != nil {
  1181  			return err
  1182  		}
  1183  		page.ihqmilr = next
  1184  		if !next.hasNextLink() || !next.IsEmpty() {
  1185  			break
  1186  		}
  1187  	}
  1188  	return nil
  1189  }
  1190  
  1191  // Next advances to the next page of values.  If there was an error making
  1192  // the request the page does not advance and the error is returned.
  1193  // Deprecated: Use NextWithContext() instead.
  1194  func (page *IotHubQuotaMetricInfoListResultPage) Next() error {
  1195  	return page.NextWithContext(context.Background())
  1196  }
  1197  
  1198  // NotDone returns true if the page enumeration should be started or is not yet complete.
  1199  func (page IotHubQuotaMetricInfoListResultPage) NotDone() bool {
  1200  	return !page.ihqmilr.IsEmpty()
  1201  }
  1202  
  1203  // Response returns the raw server response from the last page request.
  1204  func (page IotHubQuotaMetricInfoListResultPage) Response() IotHubQuotaMetricInfoListResult {
  1205  	return page.ihqmilr
  1206  }
  1207  
  1208  // Values returns the slice of values for the current page or nil if there are no values.
  1209  func (page IotHubQuotaMetricInfoListResultPage) Values() []IotHubQuotaMetricInfo {
  1210  	if page.ihqmilr.IsEmpty() {
  1211  		return nil
  1212  	}
  1213  	return *page.ihqmilr.Value
  1214  }
  1215  
  1216  // Creates a new instance of the IotHubQuotaMetricInfoListResultPage type.
  1217  func NewIotHubQuotaMetricInfoListResultPage(cur IotHubQuotaMetricInfoListResult, getNextPage func(context.Context, IotHubQuotaMetricInfoListResult) (IotHubQuotaMetricInfoListResult, error)) IotHubQuotaMetricInfoListResultPage {
  1218  	return IotHubQuotaMetricInfoListResultPage{
  1219  		fn:      getNextPage,
  1220  		ihqmilr: cur,
  1221  	}
  1222  }
  1223  
  1224  // IotHubResourceCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
  1225  // long-running operation.
  1226  type IotHubResourceCreateOrUpdateFuture struct {
  1227  	azure.FutureAPI
  1228  	// Result returns the result of the asynchronous operation.
  1229  	// If the operation has not completed it will return an error.
  1230  	Result func(IotHubResourceClient) (IotHubDescription, error)
  1231  }
  1232  
  1233  // UnmarshalJSON is the custom unmarshaller for CreateFuture.
  1234  func (future *IotHubResourceCreateOrUpdateFuture) UnmarshalJSON(body []byte) error {
  1235  	var azFuture azure.Future
  1236  	if err := json.Unmarshal(body, &azFuture); err != nil {
  1237  		return err
  1238  	}
  1239  	future.FutureAPI = &azFuture
  1240  	future.Result = future.result
  1241  	return nil
  1242  }
  1243  
  1244  // result is the default implementation for IotHubResourceCreateOrUpdateFuture.Result.
  1245  func (future *IotHubResourceCreateOrUpdateFuture) result(client IotHubResourceClient) (ihd IotHubDescription, err error) {
  1246  	var done bool
  1247  	done, err = future.DoneWithContext(context.Background(), client)
  1248  	if err != nil {
  1249  		err = autorest.NewErrorWithError(err, "devices.IotHubResourceCreateOrUpdateFuture", "Result", future.Response(), "Polling failure")
  1250  		return
  1251  	}
  1252  	if !done {
  1253  		ihd.Response.Response = future.Response()
  1254  		err = azure.NewAsyncOpIncompleteError("devices.IotHubResourceCreateOrUpdateFuture")
  1255  		return
  1256  	}
  1257  	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
  1258  	if ihd.Response.Response, err = future.GetResult(sender); err == nil && ihd.Response.Response.StatusCode != http.StatusNoContent {
  1259  		ihd, err = client.CreateOrUpdateResponder(ihd.Response.Response)
  1260  		if err != nil {
  1261  			err = autorest.NewErrorWithError(err, "devices.IotHubResourceCreateOrUpdateFuture", "Result", ihd.Response.Response, "Failure responding to request")
  1262  		}
  1263  	}
  1264  	return
  1265  }
  1266  
  1267  // IotHubResourceDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
  1268  // operation.
  1269  type IotHubResourceDeleteFuture struct {
  1270  	azure.FutureAPI
  1271  	// Result returns the result of the asynchronous operation.
  1272  	// If the operation has not completed it will return an error.
  1273  	Result func(IotHubResourceClient) (SetObject, error)
  1274  }
  1275  
  1276  // UnmarshalJSON is the custom unmarshaller for CreateFuture.
  1277  func (future *IotHubResourceDeleteFuture) UnmarshalJSON(body []byte) error {
  1278  	var azFuture azure.Future
  1279  	if err := json.Unmarshal(body, &azFuture); err != nil {
  1280  		return err
  1281  	}
  1282  	future.FutureAPI = &azFuture
  1283  	future.Result = future.result
  1284  	return nil
  1285  }
  1286  
  1287  // result is the default implementation for IotHubResourceDeleteFuture.Result.
  1288  func (future *IotHubResourceDeleteFuture) result(client IotHubResourceClient) (so SetObject, err error) {
  1289  	var done bool
  1290  	done, err = future.DoneWithContext(context.Background(), client)
  1291  	if err != nil {
  1292  		err = autorest.NewErrorWithError(err, "devices.IotHubResourceDeleteFuture", "Result", future.Response(), "Polling failure")
  1293  		return
  1294  	}
  1295  	if !done {
  1296  		so.Response.Response = future.Response()
  1297  		err = azure.NewAsyncOpIncompleteError("devices.IotHubResourceDeleteFuture")
  1298  		return
  1299  	}
  1300  	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
  1301  	if so.Response.Response, err = future.GetResult(sender); err == nil && so.Response.Response.StatusCode != http.StatusNoContent {
  1302  		so, err = client.DeleteResponder(so.Response.Response)
  1303  		if err != nil {
  1304  			err = autorest.NewErrorWithError(err, "devices.IotHubResourceDeleteFuture", "Result", so.Response.Response, "Failure responding to request")
  1305  		}
  1306  	}
  1307  	return
  1308  }
  1309  
  1310  // IotHubResourceUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
  1311  // operation.
  1312  type IotHubResourceUpdateFuture struct {
  1313  	azure.FutureAPI
  1314  	// Result returns the result of the asynchronous operation.
  1315  	// If the operation has not completed it will return an error.
  1316  	Result func(IotHubResourceClient) (IotHubDescription, error)
  1317  }
  1318  
  1319  // UnmarshalJSON is the custom unmarshaller for CreateFuture.
  1320  func (future *IotHubResourceUpdateFuture) UnmarshalJSON(body []byte) error {
  1321  	var azFuture azure.Future
  1322  	if err := json.Unmarshal(body, &azFuture); err != nil {
  1323  		return err
  1324  	}
  1325  	future.FutureAPI = &azFuture
  1326  	future.Result = future.result
  1327  	return nil
  1328  }
  1329  
  1330  // result is the default implementation for IotHubResourceUpdateFuture.Result.
  1331  func (future *IotHubResourceUpdateFuture) result(client IotHubResourceClient) (ihd IotHubDescription, err error) {
  1332  	var done bool
  1333  	done, err = future.DoneWithContext(context.Background(), client)
  1334  	if err != nil {
  1335  		err = autorest.NewErrorWithError(err, "devices.IotHubResourceUpdateFuture", "Result", future.Response(), "Polling failure")
  1336  		return
  1337  	}
  1338  	if !done {
  1339  		ihd.Response.Response = future.Response()
  1340  		err = azure.NewAsyncOpIncompleteError("devices.IotHubResourceUpdateFuture")
  1341  		return
  1342  	}
  1343  	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
  1344  	if ihd.Response.Response, err = future.GetResult(sender); err == nil && ihd.Response.Response.StatusCode != http.StatusNoContent {
  1345  		ihd, err = client.UpdateResponder(ihd.Response.Response)
  1346  		if err != nil {
  1347  			err = autorest.NewErrorWithError(err, "devices.IotHubResourceUpdateFuture", "Result", ihd.Response.Response, "Failure responding to request")
  1348  		}
  1349  	}
  1350  	return
  1351  }
  1352  
  1353  // IotHubSkuDescription SKU properties.
  1354  type IotHubSkuDescription struct {
  1355  	// ResourceType - READ-ONLY; The type of the resource.
  1356  	ResourceType *string `json:"resourceType,omitempty"`
  1357  	// Sku - The type of the resource.
  1358  	Sku *IotHubSkuInfo `json:"sku,omitempty"`
  1359  	// Capacity - IotHub capacity
  1360  	Capacity *IotHubCapacity `json:"capacity,omitempty"`
  1361  }
  1362  
  1363  // MarshalJSON is the custom marshaler for IotHubSkuDescription.
  1364  func (ihsd IotHubSkuDescription) MarshalJSON() ([]byte, error) {
  1365  	objectMap := make(map[string]interface{})
  1366  	if ihsd.Sku != nil {
  1367  		objectMap["sku"] = ihsd.Sku
  1368  	}
  1369  	if ihsd.Capacity != nil {
  1370  		objectMap["capacity"] = ihsd.Capacity
  1371  	}
  1372  	return json.Marshal(objectMap)
  1373  }
  1374  
  1375  // IotHubSkuDescriptionListResult the JSON-serialized array of IotHubSkuDescription objects with a next
  1376  // link.
  1377  type IotHubSkuDescriptionListResult struct {
  1378  	autorest.Response `json:"-"`
  1379  	// Value - The array of IotHubSkuDescription.
  1380  	Value *[]IotHubSkuDescription `json:"value,omitempty"`
  1381  	// NextLink - READ-ONLY; The next link.
  1382  	NextLink *string `json:"nextLink,omitempty"`
  1383  }
  1384  
  1385  // MarshalJSON is the custom marshaler for IotHubSkuDescriptionListResult.
  1386  func (ihsdlr IotHubSkuDescriptionListResult) MarshalJSON() ([]byte, error) {
  1387  	objectMap := make(map[string]interface{})
  1388  	if ihsdlr.Value != nil {
  1389  		objectMap["value"] = ihsdlr.Value
  1390  	}
  1391  	return json.Marshal(objectMap)
  1392  }
  1393  
  1394  // IotHubSkuDescriptionListResultIterator provides access to a complete listing of IotHubSkuDescription
  1395  // values.
  1396  type IotHubSkuDescriptionListResultIterator struct {
  1397  	i    int
  1398  	page IotHubSkuDescriptionListResultPage
  1399  }
  1400  
  1401  // NextWithContext advances to the next value.  If there was an error making
  1402  // the request the iterator does not advance and the error is returned.
  1403  func (iter *IotHubSkuDescriptionListResultIterator) NextWithContext(ctx context.Context) (err error) {
  1404  	if tracing.IsEnabled() {
  1405  		ctx = tracing.StartSpan(ctx, fqdn+"/IotHubSkuDescriptionListResultIterator.NextWithContext")
  1406  		defer func() {
  1407  			sc := -1
  1408  			if iter.Response().Response.Response != nil {
  1409  				sc = iter.Response().Response.Response.StatusCode
  1410  			}
  1411  			tracing.EndSpan(ctx, sc, err)
  1412  		}()
  1413  	}
  1414  	iter.i++
  1415  	if iter.i < len(iter.page.Values()) {
  1416  		return nil
  1417  	}
  1418  	err = iter.page.NextWithContext(ctx)
  1419  	if err != nil {
  1420  		iter.i--
  1421  		return err
  1422  	}
  1423  	iter.i = 0
  1424  	return nil
  1425  }
  1426  
  1427  // Next advances to the next value.  If there was an error making
  1428  // the request the iterator does not advance and the error is returned.
  1429  // Deprecated: Use NextWithContext() instead.
  1430  func (iter *IotHubSkuDescriptionListResultIterator) Next() error {
  1431  	return iter.NextWithContext(context.Background())
  1432  }
  1433  
  1434  // NotDone returns true if the enumeration should be started or is not yet complete.
  1435  func (iter IotHubSkuDescriptionListResultIterator) NotDone() bool {
  1436  	return iter.page.NotDone() && iter.i < len(iter.page.Values())
  1437  }
  1438  
  1439  // Response returns the raw server response from the last page request.
  1440  func (iter IotHubSkuDescriptionListResultIterator) Response() IotHubSkuDescriptionListResult {
  1441  	return iter.page.Response()
  1442  }
  1443  
  1444  // Value returns the current value or a zero-initialized value if the
  1445  // iterator has advanced beyond the end of the collection.
  1446  func (iter IotHubSkuDescriptionListResultIterator) Value() IotHubSkuDescription {
  1447  	if !iter.page.NotDone() {
  1448  		return IotHubSkuDescription{}
  1449  	}
  1450  	return iter.page.Values()[iter.i]
  1451  }
  1452  
  1453  // Creates a new instance of the IotHubSkuDescriptionListResultIterator type.
  1454  func NewIotHubSkuDescriptionListResultIterator(page IotHubSkuDescriptionListResultPage) IotHubSkuDescriptionListResultIterator {
  1455  	return IotHubSkuDescriptionListResultIterator{page: page}
  1456  }
  1457  
  1458  // IsEmpty returns true if the ListResult contains no values.
  1459  func (ihsdlr IotHubSkuDescriptionListResult) IsEmpty() bool {
  1460  	return ihsdlr.Value == nil || len(*ihsdlr.Value) == 0
  1461  }
  1462  
  1463  // hasNextLink returns true if the NextLink is not empty.
  1464  func (ihsdlr IotHubSkuDescriptionListResult) hasNextLink() bool {
  1465  	return ihsdlr.NextLink != nil && len(*ihsdlr.NextLink) != 0
  1466  }
  1467  
  1468  // iotHubSkuDescriptionListResultPreparer prepares a request to retrieve the next set of results.
  1469  // It returns nil if no more results exist.
  1470  func (ihsdlr IotHubSkuDescriptionListResult) iotHubSkuDescriptionListResultPreparer(ctx context.Context) (*http.Request, error) {
  1471  	if !ihsdlr.hasNextLink() {
  1472  		return nil, nil
  1473  	}
  1474  	return autorest.Prepare((&http.Request{}).WithContext(ctx),
  1475  		autorest.AsJSON(),
  1476  		autorest.AsGet(),
  1477  		autorest.WithBaseURL(to.String(ihsdlr.NextLink)))
  1478  }
  1479  
  1480  // IotHubSkuDescriptionListResultPage contains a page of IotHubSkuDescription values.
  1481  type IotHubSkuDescriptionListResultPage struct {
  1482  	fn     func(context.Context, IotHubSkuDescriptionListResult) (IotHubSkuDescriptionListResult, error)
  1483  	ihsdlr IotHubSkuDescriptionListResult
  1484  }
  1485  
  1486  // NextWithContext advances to the next page of values.  If there was an error making
  1487  // the request the page does not advance and the error is returned.
  1488  func (page *IotHubSkuDescriptionListResultPage) NextWithContext(ctx context.Context) (err error) {
  1489  	if tracing.IsEnabled() {
  1490  		ctx = tracing.StartSpan(ctx, fqdn+"/IotHubSkuDescriptionListResultPage.NextWithContext")
  1491  		defer func() {
  1492  			sc := -1
  1493  			if page.Response().Response.Response != nil {
  1494  				sc = page.Response().Response.Response.StatusCode
  1495  			}
  1496  			tracing.EndSpan(ctx, sc, err)
  1497  		}()
  1498  	}
  1499  	for {
  1500  		next, err := page.fn(ctx, page.ihsdlr)
  1501  		if err != nil {
  1502  			return err
  1503  		}
  1504  		page.ihsdlr = next
  1505  		if !next.hasNextLink() || !next.IsEmpty() {
  1506  			break
  1507  		}
  1508  	}
  1509  	return nil
  1510  }
  1511  
  1512  // Next advances to the next page of values.  If there was an error making
  1513  // the request the page does not advance and the error is returned.
  1514  // Deprecated: Use NextWithContext() instead.
  1515  func (page *IotHubSkuDescriptionListResultPage) Next() error {
  1516  	return page.NextWithContext(context.Background())
  1517  }
  1518  
  1519  // NotDone returns true if the page enumeration should be started or is not yet complete.
  1520  func (page IotHubSkuDescriptionListResultPage) NotDone() bool {
  1521  	return !page.ihsdlr.IsEmpty()
  1522  }
  1523  
  1524  // Response returns the raw server response from the last page request.
  1525  func (page IotHubSkuDescriptionListResultPage) Response() IotHubSkuDescriptionListResult {
  1526  	return page.ihsdlr
  1527  }
  1528  
  1529  // Values returns the slice of values for the current page or nil if there are no values.
  1530  func (page IotHubSkuDescriptionListResultPage) Values() []IotHubSkuDescription {
  1531  	if page.ihsdlr.IsEmpty() {
  1532  		return nil
  1533  	}
  1534  	return *page.ihsdlr.Value
  1535  }
  1536  
  1537  // Creates a new instance of the IotHubSkuDescriptionListResultPage type.
  1538  func NewIotHubSkuDescriptionListResultPage(cur IotHubSkuDescriptionListResult, getNextPage func(context.Context, IotHubSkuDescriptionListResult) (IotHubSkuDescriptionListResult, error)) IotHubSkuDescriptionListResultPage {
  1539  	return IotHubSkuDescriptionListResultPage{
  1540  		fn:     getNextPage,
  1541  		ihsdlr: cur,
  1542  	}
  1543  }
  1544  
  1545  // IotHubSkuInfo information about the SKU of the IoT hub.
  1546  type IotHubSkuInfo struct {
  1547  	// Name - The name of the SKU. Possible values include: 'F1', 'S1', 'S2', 'S3', 'B1', 'B2', 'B3'
  1548  	Name IotHubSku `json:"name,omitempty"`
  1549  	// Tier - READ-ONLY; The billing tier for the IoT hub. Possible values include: 'Free', 'Standard', 'Basic'
  1550  	Tier IotHubSkuTier `json:"tier,omitempty"`
  1551  	// Capacity - The number of provisioned IoT Hub units. See: https://docs.microsoft.com/azure/azure-subscription-service-limits#iot-hub-limits.
  1552  	Capacity *int64 `json:"capacity,omitempty"`
  1553  }
  1554  
  1555  // MarshalJSON is the custom marshaler for IotHubSkuInfo.
  1556  func (ihsi IotHubSkuInfo) MarshalJSON() ([]byte, error) {
  1557  	objectMap := make(map[string]interface{})
  1558  	if ihsi.Name != "" {
  1559  		objectMap["name"] = ihsi.Name
  1560  	}
  1561  	if ihsi.Capacity != nil {
  1562  		objectMap["capacity"] = ihsi.Capacity
  1563  	}
  1564  	return json.Marshal(objectMap)
  1565  }
  1566  
  1567  // IPFilterRule the IP filter rules for the IoT hub.
  1568  type IPFilterRule struct {
  1569  	// FilterName - The name of the IP filter rule.
  1570  	FilterName *string `json:"filterName,omitempty"`
  1571  	// Action - The desired action for requests captured by this rule. Possible values include: 'Accept', 'Reject'
  1572  	Action IPFilterActionType `json:"action,omitempty"`
  1573  	// IPMask - A string that contains the IP address range in CIDR notation for the rule.
  1574  	IPMask *string `json:"ipMask,omitempty"`
  1575  }
  1576  
  1577  // JobResponse the properties of the Job Response object.
  1578  type JobResponse struct {
  1579  	autorest.Response `json:"-"`
  1580  	// JobID - READ-ONLY; The job identifier.
  1581  	JobID *string `json:"jobId,omitempty"`
  1582  	// StartTimeUtc - READ-ONLY; The start time of the job.
  1583  	StartTimeUtc *date.TimeRFC1123 `json:"startTimeUtc,omitempty"`
  1584  	// EndTimeUtc - READ-ONLY; The time the job stopped processing.
  1585  	EndTimeUtc *date.TimeRFC1123 `json:"endTimeUtc,omitempty"`
  1586  	// Type - READ-ONLY; The type of the job. Possible values include: 'JobTypeUnknown', 'JobTypeExport', 'JobTypeImport', 'JobTypeBackup', 'JobTypeReadDeviceProperties', 'JobTypeWriteDeviceProperties', 'JobTypeUpdateDeviceConfiguration', 'JobTypeRebootDevice', 'JobTypeFactoryResetDevice', 'JobTypeFirmwareUpdate'
  1587  	Type JobType `json:"type,omitempty"`
  1588  	// Status - READ-ONLY; The status of the job. Possible values include: 'JobStatusUnknown', 'JobStatusEnqueued', 'JobStatusRunning', 'JobStatusCompleted', 'JobStatusFailed', 'JobStatusCancelled'
  1589  	Status JobStatus `json:"status,omitempty"`
  1590  	// FailureReason - READ-ONLY; If status == failed, this string containing the reason for the failure.
  1591  	FailureReason *string `json:"failureReason,omitempty"`
  1592  	// StatusMessage - READ-ONLY; The status message for the job.
  1593  	StatusMessage *string `json:"statusMessage,omitempty"`
  1594  	// ParentJobID - READ-ONLY; The job identifier of the parent job, if any.
  1595  	ParentJobID *string `json:"parentJobId,omitempty"`
  1596  }
  1597  
  1598  // MarshalJSON is the custom marshaler for JobResponse.
  1599  func (jr JobResponse) MarshalJSON() ([]byte, error) {
  1600  	objectMap := make(map[string]interface{})
  1601  	return json.Marshal(objectMap)
  1602  }
  1603  
  1604  // JobResponseListResult the JSON-serialized array of JobResponse objects with a next link.
  1605  type JobResponseListResult struct {
  1606  	autorest.Response `json:"-"`
  1607  	// Value - The array of JobResponse objects.
  1608  	Value *[]JobResponse `json:"value,omitempty"`
  1609  	// NextLink - READ-ONLY; The next link.
  1610  	NextLink *string `json:"nextLink,omitempty"`
  1611  }
  1612  
  1613  // MarshalJSON is the custom marshaler for JobResponseListResult.
  1614  func (jrlr JobResponseListResult) MarshalJSON() ([]byte, error) {
  1615  	objectMap := make(map[string]interface{})
  1616  	if jrlr.Value != nil {
  1617  		objectMap["value"] = jrlr.Value
  1618  	}
  1619  	return json.Marshal(objectMap)
  1620  }
  1621  
  1622  // JobResponseListResultIterator provides access to a complete listing of JobResponse values.
  1623  type JobResponseListResultIterator struct {
  1624  	i    int
  1625  	page JobResponseListResultPage
  1626  }
  1627  
  1628  // NextWithContext advances to the next value.  If there was an error making
  1629  // the request the iterator does not advance and the error is returned.
  1630  func (iter *JobResponseListResultIterator) NextWithContext(ctx context.Context) (err error) {
  1631  	if tracing.IsEnabled() {
  1632  		ctx = tracing.StartSpan(ctx, fqdn+"/JobResponseListResultIterator.NextWithContext")
  1633  		defer func() {
  1634  			sc := -1
  1635  			if iter.Response().Response.Response != nil {
  1636  				sc = iter.Response().Response.Response.StatusCode
  1637  			}
  1638  			tracing.EndSpan(ctx, sc, err)
  1639  		}()
  1640  	}
  1641  	iter.i++
  1642  	if iter.i < len(iter.page.Values()) {
  1643  		return nil
  1644  	}
  1645  	err = iter.page.NextWithContext(ctx)
  1646  	if err != nil {
  1647  		iter.i--
  1648  		return err
  1649  	}
  1650  	iter.i = 0
  1651  	return nil
  1652  }
  1653  
  1654  // Next advances to the next value.  If there was an error making
  1655  // the request the iterator does not advance and the error is returned.
  1656  // Deprecated: Use NextWithContext() instead.
  1657  func (iter *JobResponseListResultIterator) Next() error {
  1658  	return iter.NextWithContext(context.Background())
  1659  }
  1660  
  1661  // NotDone returns true if the enumeration should be started or is not yet complete.
  1662  func (iter JobResponseListResultIterator) NotDone() bool {
  1663  	return iter.page.NotDone() && iter.i < len(iter.page.Values())
  1664  }
  1665  
  1666  // Response returns the raw server response from the last page request.
  1667  func (iter JobResponseListResultIterator) Response() JobResponseListResult {
  1668  	return iter.page.Response()
  1669  }
  1670  
  1671  // Value returns the current value or a zero-initialized value if the
  1672  // iterator has advanced beyond the end of the collection.
  1673  func (iter JobResponseListResultIterator) Value() JobResponse {
  1674  	if !iter.page.NotDone() {
  1675  		return JobResponse{}
  1676  	}
  1677  	return iter.page.Values()[iter.i]
  1678  }
  1679  
  1680  // Creates a new instance of the JobResponseListResultIterator type.
  1681  func NewJobResponseListResultIterator(page JobResponseListResultPage) JobResponseListResultIterator {
  1682  	return JobResponseListResultIterator{page: page}
  1683  }
  1684  
  1685  // IsEmpty returns true if the ListResult contains no values.
  1686  func (jrlr JobResponseListResult) IsEmpty() bool {
  1687  	return jrlr.Value == nil || len(*jrlr.Value) == 0
  1688  }
  1689  
  1690  // hasNextLink returns true if the NextLink is not empty.
  1691  func (jrlr JobResponseListResult) hasNextLink() bool {
  1692  	return jrlr.NextLink != nil && len(*jrlr.NextLink) != 0
  1693  }
  1694  
  1695  // jobResponseListResultPreparer prepares a request to retrieve the next set of results.
  1696  // It returns nil if no more results exist.
  1697  func (jrlr JobResponseListResult) jobResponseListResultPreparer(ctx context.Context) (*http.Request, error) {
  1698  	if !jrlr.hasNextLink() {
  1699  		return nil, nil
  1700  	}
  1701  	return autorest.Prepare((&http.Request{}).WithContext(ctx),
  1702  		autorest.AsJSON(),
  1703  		autorest.AsGet(),
  1704  		autorest.WithBaseURL(to.String(jrlr.NextLink)))
  1705  }
  1706  
  1707  // JobResponseListResultPage contains a page of JobResponse values.
  1708  type JobResponseListResultPage struct {
  1709  	fn   func(context.Context, JobResponseListResult) (JobResponseListResult, error)
  1710  	jrlr JobResponseListResult
  1711  }
  1712  
  1713  // NextWithContext advances to the next page of values.  If there was an error making
  1714  // the request the page does not advance and the error is returned.
  1715  func (page *JobResponseListResultPage) NextWithContext(ctx context.Context) (err error) {
  1716  	if tracing.IsEnabled() {
  1717  		ctx = tracing.StartSpan(ctx, fqdn+"/JobResponseListResultPage.NextWithContext")
  1718  		defer func() {
  1719  			sc := -1
  1720  			if page.Response().Response.Response != nil {
  1721  				sc = page.Response().Response.Response.StatusCode
  1722  			}
  1723  			tracing.EndSpan(ctx, sc, err)
  1724  		}()
  1725  	}
  1726  	for {
  1727  		next, err := page.fn(ctx, page.jrlr)
  1728  		if err != nil {
  1729  			return err
  1730  		}
  1731  		page.jrlr = next
  1732  		if !next.hasNextLink() || !next.IsEmpty() {
  1733  			break
  1734  		}
  1735  	}
  1736  	return nil
  1737  }
  1738  
  1739  // Next advances to the next page of values.  If there was an error making
  1740  // the request the page does not advance and the error is returned.
  1741  // Deprecated: Use NextWithContext() instead.
  1742  func (page *JobResponseListResultPage) Next() error {
  1743  	return page.NextWithContext(context.Background())
  1744  }
  1745  
  1746  // NotDone returns true if the page enumeration should be started or is not yet complete.
  1747  func (page JobResponseListResultPage) NotDone() bool {
  1748  	return !page.jrlr.IsEmpty()
  1749  }
  1750  
  1751  // Response returns the raw server response from the last page request.
  1752  func (page JobResponseListResultPage) Response() JobResponseListResult {
  1753  	return page.jrlr
  1754  }
  1755  
  1756  // Values returns the slice of values for the current page or nil if there are no values.
  1757  func (page JobResponseListResultPage) Values() []JobResponse {
  1758  	if page.jrlr.IsEmpty() {
  1759  		return nil
  1760  	}
  1761  	return *page.jrlr.Value
  1762  }
  1763  
  1764  // Creates a new instance of the JobResponseListResultPage type.
  1765  func NewJobResponseListResultPage(cur JobResponseListResult, getNextPage func(context.Context, JobResponseListResult) (JobResponseListResult, error)) JobResponseListResultPage {
  1766  	return JobResponseListResultPage{
  1767  		fn:   getNextPage,
  1768  		jrlr: cur,
  1769  	}
  1770  }
  1771  
  1772  // ListPrivateEndpointConnection ...
  1773  type ListPrivateEndpointConnection struct {
  1774  	autorest.Response `json:"-"`
  1775  	Value             *[]PrivateEndpointConnection `json:"value,omitempty"`
  1776  }
  1777  
  1778  // MatchedRoute routes that matched
  1779  type MatchedRoute struct {
  1780  	// Properties - Properties of routes that matched
  1781  	Properties *RouteProperties `json:"properties,omitempty"`
  1782  }
  1783  
  1784  // MessagingEndpointProperties the properties of the messaging endpoints used by this IoT hub.
  1785  type MessagingEndpointProperties struct {
  1786  	// LockDurationAsIso8601 - The lock duration. See: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-file-upload.
  1787  	LockDurationAsIso8601 *string `json:"lockDurationAsIso8601,omitempty"`
  1788  	// TTLAsIso8601 - The period of time for which a message is available to consume before it is expired by the IoT hub. See: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-file-upload.
  1789  	TTLAsIso8601 *string `json:"ttlAsIso8601,omitempty"`
  1790  	// MaxDeliveryCount - The number of times the IoT hub attempts to deliver a message. See: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-file-upload.
  1791  	MaxDeliveryCount *int32 `json:"maxDeliveryCount,omitempty"`
  1792  }
  1793  
  1794  // Name name of Iot Hub type
  1795  type Name struct {
  1796  	// Value - IotHub type
  1797  	Value *string `json:"value,omitempty"`
  1798  	// LocalizedValue - Localized value of name
  1799  	LocalizedValue *string `json:"localizedValue,omitempty"`
  1800  }
  1801  
  1802  // Operation ioT Hub REST API operation
  1803  type Operation struct {
  1804  	// Name - READ-ONLY; Operation name: {provider}/{resource}/{read | write | action | delete}
  1805  	Name *string `json:"name,omitempty"`
  1806  	// Display - The object that represents the operation.
  1807  	Display *OperationDisplay `json:"display,omitempty"`
  1808  }
  1809  
  1810  // MarshalJSON is the custom marshaler for Operation.
  1811  func (o Operation) MarshalJSON() ([]byte, error) {
  1812  	objectMap := make(map[string]interface{})
  1813  	if o.Display != nil {
  1814  		objectMap["display"] = o.Display
  1815  	}
  1816  	return json.Marshal(objectMap)
  1817  }
  1818  
  1819  // OperationDisplay the object that represents the operation.
  1820  type OperationDisplay struct {
  1821  	// Provider - READ-ONLY; Service provider: Microsoft Devices
  1822  	Provider *string `json:"provider,omitempty"`
  1823  	// Resource - READ-ONLY; Resource Type: IotHubs
  1824  	Resource *string `json:"resource,omitempty"`
  1825  	// Operation - READ-ONLY; Name of the operation
  1826  	Operation *string `json:"operation,omitempty"`
  1827  	// Description - READ-ONLY; Description of the operation
  1828  	Description *string `json:"description,omitempty"`
  1829  }
  1830  
  1831  // MarshalJSON is the custom marshaler for OperationDisplay.
  1832  func (o OperationDisplay) MarshalJSON() ([]byte, error) {
  1833  	objectMap := make(map[string]interface{})
  1834  	return json.Marshal(objectMap)
  1835  }
  1836  
  1837  // OperationInputs input values.
  1838  type OperationInputs struct {
  1839  	// Name - The name of the IoT hub to check.
  1840  	Name *string `json:"name,omitempty"`
  1841  }
  1842  
  1843  // OperationListResult result of the request to list IoT Hub operations. It contains a list of operations
  1844  // and a URL link to get the next set of results.
  1845  type OperationListResult struct {
  1846  	autorest.Response `json:"-"`
  1847  	// Value - READ-ONLY; List of IoT Hub operations supported by the Microsoft.Devices resource provider.
  1848  	Value *[]Operation `json:"value,omitempty"`
  1849  	// NextLink - READ-ONLY; URL to get the next set of operation list results if there are any.
  1850  	NextLink *string `json:"nextLink,omitempty"`
  1851  }
  1852  
  1853  // MarshalJSON is the custom marshaler for OperationListResult.
  1854  func (olr OperationListResult) MarshalJSON() ([]byte, error) {
  1855  	objectMap := make(map[string]interface{})
  1856  	return json.Marshal(objectMap)
  1857  }
  1858  
  1859  // OperationListResultIterator provides access to a complete listing of Operation values.
  1860  type OperationListResultIterator struct {
  1861  	i    int
  1862  	page OperationListResultPage
  1863  }
  1864  
  1865  // NextWithContext advances to the next value.  If there was an error making
  1866  // the request the iterator does not advance and the error is returned.
  1867  func (iter *OperationListResultIterator) NextWithContext(ctx context.Context) (err error) {
  1868  	if tracing.IsEnabled() {
  1869  		ctx = tracing.StartSpan(ctx, fqdn+"/OperationListResultIterator.NextWithContext")
  1870  		defer func() {
  1871  			sc := -1
  1872  			if iter.Response().Response.Response != nil {
  1873  				sc = iter.Response().Response.Response.StatusCode
  1874  			}
  1875  			tracing.EndSpan(ctx, sc, err)
  1876  		}()
  1877  	}
  1878  	iter.i++
  1879  	if iter.i < len(iter.page.Values()) {
  1880  		return nil
  1881  	}
  1882  	err = iter.page.NextWithContext(ctx)
  1883  	if err != nil {
  1884  		iter.i--
  1885  		return err
  1886  	}
  1887  	iter.i = 0
  1888  	return nil
  1889  }
  1890  
  1891  // Next advances to the next value.  If there was an error making
  1892  // the request the iterator does not advance and the error is returned.
  1893  // Deprecated: Use NextWithContext() instead.
  1894  func (iter *OperationListResultIterator) Next() error {
  1895  	return iter.NextWithContext(context.Background())
  1896  }
  1897  
  1898  // NotDone returns true if the enumeration should be started or is not yet complete.
  1899  func (iter OperationListResultIterator) NotDone() bool {
  1900  	return iter.page.NotDone() && iter.i < len(iter.page.Values())
  1901  }
  1902  
  1903  // Response returns the raw server response from the last page request.
  1904  func (iter OperationListResultIterator) Response() OperationListResult {
  1905  	return iter.page.Response()
  1906  }
  1907  
  1908  // Value returns the current value or a zero-initialized value if the
  1909  // iterator has advanced beyond the end of the collection.
  1910  func (iter OperationListResultIterator) Value() Operation {
  1911  	if !iter.page.NotDone() {
  1912  		return Operation{}
  1913  	}
  1914  	return iter.page.Values()[iter.i]
  1915  }
  1916  
  1917  // Creates a new instance of the OperationListResultIterator type.
  1918  func NewOperationListResultIterator(page OperationListResultPage) OperationListResultIterator {
  1919  	return OperationListResultIterator{page: page}
  1920  }
  1921  
  1922  // IsEmpty returns true if the ListResult contains no values.
  1923  func (olr OperationListResult) IsEmpty() bool {
  1924  	return olr.Value == nil || len(*olr.Value) == 0
  1925  }
  1926  
  1927  // hasNextLink returns true if the NextLink is not empty.
  1928  func (olr OperationListResult) hasNextLink() bool {
  1929  	return olr.NextLink != nil && len(*olr.NextLink) != 0
  1930  }
  1931  
  1932  // operationListResultPreparer prepares a request to retrieve the next set of results.
  1933  // It returns nil if no more results exist.
  1934  func (olr OperationListResult) operationListResultPreparer(ctx context.Context) (*http.Request, error) {
  1935  	if !olr.hasNextLink() {
  1936  		return nil, nil
  1937  	}
  1938  	return autorest.Prepare((&http.Request{}).WithContext(ctx),
  1939  		autorest.AsJSON(),
  1940  		autorest.AsGet(),
  1941  		autorest.WithBaseURL(to.String(olr.NextLink)))
  1942  }
  1943  
  1944  // OperationListResultPage contains a page of Operation values.
  1945  type OperationListResultPage struct {
  1946  	fn  func(context.Context, OperationListResult) (OperationListResult, error)
  1947  	olr OperationListResult
  1948  }
  1949  
  1950  // NextWithContext advances to the next page of values.  If there was an error making
  1951  // the request the page does not advance and the error is returned.
  1952  func (page *OperationListResultPage) NextWithContext(ctx context.Context) (err error) {
  1953  	if tracing.IsEnabled() {
  1954  		ctx = tracing.StartSpan(ctx, fqdn+"/OperationListResultPage.NextWithContext")
  1955  		defer func() {
  1956  			sc := -1
  1957  			if page.Response().Response.Response != nil {
  1958  				sc = page.Response().Response.Response.StatusCode
  1959  			}
  1960  			tracing.EndSpan(ctx, sc, err)
  1961  		}()
  1962  	}
  1963  	for {
  1964  		next, err := page.fn(ctx, page.olr)
  1965  		if err != nil {
  1966  			return err
  1967  		}
  1968  		page.olr = next
  1969  		if !next.hasNextLink() || !next.IsEmpty() {
  1970  			break
  1971  		}
  1972  	}
  1973  	return nil
  1974  }
  1975  
  1976  // Next advances to the next page of values.  If there was an error making
  1977  // the request the page does not advance and the error is returned.
  1978  // Deprecated: Use NextWithContext() instead.
  1979  func (page *OperationListResultPage) Next() error {
  1980  	return page.NextWithContext(context.Background())
  1981  }
  1982  
  1983  // NotDone returns true if the page enumeration should be started or is not yet complete.
  1984  func (page OperationListResultPage) NotDone() bool {
  1985  	return !page.olr.IsEmpty()
  1986  }
  1987  
  1988  // Response returns the raw server response from the last page request.
  1989  func (page OperationListResultPage) Response() OperationListResult {
  1990  	return page.olr
  1991  }
  1992  
  1993  // Values returns the slice of values for the current page or nil if there are no values.
  1994  func (page OperationListResultPage) Values() []Operation {
  1995  	if page.olr.IsEmpty() {
  1996  		return nil
  1997  	}
  1998  	return *page.olr.Value
  1999  }
  2000  
  2001  // Creates a new instance of the OperationListResultPage type.
  2002  func NewOperationListResultPage(cur OperationListResult, getNextPage func(context.Context, OperationListResult) (OperationListResult, error)) OperationListResultPage {
  2003  	return OperationListResultPage{
  2004  		fn:  getNextPage,
  2005  		olr: cur,
  2006  	}
  2007  }
  2008  
  2009  // PrivateEndpoint the private endpoint property of a private endpoint connection
  2010  type PrivateEndpoint struct {
  2011  	// ID - READ-ONLY; The resource identifier.
  2012  	ID *string `json:"id,omitempty"`
  2013  }
  2014  
  2015  // MarshalJSON is the custom marshaler for PrivateEndpoint.
  2016  func (peVar PrivateEndpoint) MarshalJSON() ([]byte, error) {
  2017  	objectMap := make(map[string]interface{})
  2018  	return json.Marshal(objectMap)
  2019  }
  2020  
  2021  // PrivateEndpointConnection the private endpoint connection of an IotHub
  2022  type PrivateEndpointConnection struct {
  2023  	autorest.Response `json:"-"`
  2024  	// ID - READ-ONLY; The resource identifier.
  2025  	ID *string `json:"id,omitempty"`
  2026  	// Name - READ-ONLY; The resource name.
  2027  	Name *string `json:"name,omitempty"`
  2028  	// Type - READ-ONLY; The resource type.
  2029  	Type       *string                              `json:"type,omitempty"`
  2030  	Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"`
  2031  }
  2032  
  2033  // MarshalJSON is the custom marshaler for PrivateEndpointConnection.
  2034  func (pec PrivateEndpointConnection) MarshalJSON() ([]byte, error) {
  2035  	objectMap := make(map[string]interface{})
  2036  	if pec.Properties != nil {
  2037  		objectMap["properties"] = pec.Properties
  2038  	}
  2039  	return json.Marshal(objectMap)
  2040  }
  2041  
  2042  // PrivateEndpointConnectionProperties the properties of a private endpoint connection
  2043  type PrivateEndpointConnectionProperties struct {
  2044  	PrivateEndpoint                   *PrivateEndpoint                   `json:"privateEndpoint,omitempty"`
  2045  	PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
  2046  }
  2047  
  2048  // PrivateEndpointConnectionsDeleteFuture an abstraction for monitoring and retrieving the results of a
  2049  // long-running operation.
  2050  type PrivateEndpointConnectionsDeleteFuture struct {
  2051  	azure.FutureAPI
  2052  	// Result returns the result of the asynchronous operation.
  2053  	// If the operation has not completed it will return an error.
  2054  	Result func(PrivateEndpointConnectionsClient) (PrivateEndpointConnection, error)
  2055  }
  2056  
  2057  // UnmarshalJSON is the custom unmarshaller for CreateFuture.
  2058  func (future *PrivateEndpointConnectionsDeleteFuture) UnmarshalJSON(body []byte) error {
  2059  	var azFuture azure.Future
  2060  	if err := json.Unmarshal(body, &azFuture); err != nil {
  2061  		return err
  2062  	}
  2063  	future.FutureAPI = &azFuture
  2064  	future.Result = future.result
  2065  	return nil
  2066  }
  2067  
  2068  // result is the default implementation for PrivateEndpointConnectionsDeleteFuture.Result.
  2069  func (future *PrivateEndpointConnectionsDeleteFuture) result(client PrivateEndpointConnectionsClient) (pec PrivateEndpointConnection, err error) {
  2070  	var done bool
  2071  	done, err = future.DoneWithContext(context.Background(), client)
  2072  	if err != nil {
  2073  		err = autorest.NewErrorWithError(err, "devices.PrivateEndpointConnectionsDeleteFuture", "Result", future.Response(), "Polling failure")
  2074  		return
  2075  	}
  2076  	if !done {
  2077  		pec.Response.Response = future.Response()
  2078  		err = azure.NewAsyncOpIncompleteError("devices.PrivateEndpointConnectionsDeleteFuture")
  2079  		return
  2080  	}
  2081  	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
  2082  	if pec.Response.Response, err = future.GetResult(sender); err == nil && pec.Response.Response.StatusCode != http.StatusNoContent {
  2083  		pec, err = client.DeleteResponder(pec.Response.Response)
  2084  		if err != nil {
  2085  			err = autorest.NewErrorWithError(err, "devices.PrivateEndpointConnectionsDeleteFuture", "Result", pec.Response.Response, "Failure responding to request")
  2086  		}
  2087  	}
  2088  	return
  2089  }
  2090  
  2091  // PrivateEndpointConnectionsUpdateFuture an abstraction for monitoring and retrieving the results of a
  2092  // long-running operation.
  2093  type PrivateEndpointConnectionsUpdateFuture struct {
  2094  	azure.FutureAPI
  2095  	// Result returns the result of the asynchronous operation.
  2096  	// If the operation has not completed it will return an error.
  2097  	Result func(PrivateEndpointConnectionsClient) (PrivateEndpointConnection, error)
  2098  }
  2099  
  2100  // UnmarshalJSON is the custom unmarshaller for CreateFuture.
  2101  func (future *PrivateEndpointConnectionsUpdateFuture) UnmarshalJSON(body []byte) error {
  2102  	var azFuture azure.Future
  2103  	if err := json.Unmarshal(body, &azFuture); err != nil {
  2104  		return err
  2105  	}
  2106  	future.FutureAPI = &azFuture
  2107  	future.Result = future.result
  2108  	return nil
  2109  }
  2110  
  2111  // result is the default implementation for PrivateEndpointConnectionsUpdateFuture.Result.
  2112  func (future *PrivateEndpointConnectionsUpdateFuture) result(client PrivateEndpointConnectionsClient) (pec PrivateEndpointConnection, err error) {
  2113  	var done bool
  2114  	done, err = future.DoneWithContext(context.Background(), client)
  2115  	if err != nil {
  2116  		err = autorest.NewErrorWithError(err, "devices.PrivateEndpointConnectionsUpdateFuture", "Result", future.Response(), "Polling failure")
  2117  		return
  2118  	}
  2119  	if !done {
  2120  		pec.Response.Response = future.Response()
  2121  		err = azure.NewAsyncOpIncompleteError("devices.PrivateEndpointConnectionsUpdateFuture")
  2122  		return
  2123  	}
  2124  	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
  2125  	if pec.Response.Response, err = future.GetResult(sender); err == nil && pec.Response.Response.StatusCode != http.StatusNoContent {
  2126  		pec, err = client.UpdateResponder(pec.Response.Response)
  2127  		if err != nil {
  2128  			err = autorest.NewErrorWithError(err, "devices.PrivateEndpointConnectionsUpdateFuture", "Result", pec.Response.Response, "Failure responding to request")
  2129  		}
  2130  	}
  2131  	return
  2132  }
  2133  
  2134  // PrivateLinkResources the available private link resources for an IotHub
  2135  type PrivateLinkResources struct {
  2136  	autorest.Response `json:"-"`
  2137  	// Value - The list of available private link resources for an IotHub
  2138  	Value *[]GroupIDInformation `json:"value,omitempty"`
  2139  }
  2140  
  2141  // PrivateLinkServiceConnectionState the current state of a private endpoint connection
  2142  type PrivateLinkServiceConnectionState struct {
  2143  	// Status - The status of a private endpoint connection. Possible values include: 'Pending', 'Approved', 'Rejected', 'Disconnected'
  2144  	Status PrivateLinkServiceConnectionStatus `json:"status,omitempty"`
  2145  	// Description - The description for the current state of a private endpoint connection
  2146  	Description *string `json:"description,omitempty"`
  2147  	// ActionsRequired - Actions required for a private endpoint connection
  2148  	ActionsRequired *string `json:"actionsRequired,omitempty"`
  2149  }
  2150  
  2151  // RegistryStatistics identity registry statistics.
  2152  type RegistryStatistics struct {
  2153  	autorest.Response `json:"-"`
  2154  	// TotalDeviceCount - READ-ONLY; The total count of devices in the identity registry.
  2155  	TotalDeviceCount *int64 `json:"totalDeviceCount,omitempty"`
  2156  	// EnabledDeviceCount - READ-ONLY; The count of enabled devices in the identity registry.
  2157  	EnabledDeviceCount *int64 `json:"enabledDeviceCount,omitempty"`
  2158  	// DisabledDeviceCount - READ-ONLY; The count of disabled devices in the identity registry.
  2159  	DisabledDeviceCount *int64 `json:"disabledDeviceCount,omitempty"`
  2160  }
  2161  
  2162  // MarshalJSON is the custom marshaler for RegistryStatistics.
  2163  func (rs RegistryStatistics) MarshalJSON() ([]byte, error) {
  2164  	objectMap := make(map[string]interface{})
  2165  	return json.Marshal(objectMap)
  2166  }
  2167  
  2168  // Resource the common properties of an Azure resource.
  2169  type Resource struct {
  2170  	// ID - READ-ONLY; The resource identifier.
  2171  	ID *string `json:"id,omitempty"`
  2172  	// Name - READ-ONLY; The resource name.
  2173  	Name *string `json:"name,omitempty"`
  2174  	// Type - READ-ONLY; The resource type.
  2175  	Type *string `json:"type,omitempty"`
  2176  	// Location - The resource location.
  2177  	Location *string `json:"location,omitempty"`
  2178  	// Tags - The resource tags.
  2179  	Tags map[string]*string `json:"tags"`
  2180  }
  2181  
  2182  // MarshalJSON is the custom marshaler for Resource.
  2183  func (r Resource) MarshalJSON() ([]byte, error) {
  2184  	objectMap := make(map[string]interface{})
  2185  	if r.Location != nil {
  2186  		objectMap["location"] = r.Location
  2187  	}
  2188  	if r.Tags != nil {
  2189  		objectMap["tags"] = r.Tags
  2190  	}
  2191  	return json.Marshal(objectMap)
  2192  }
  2193  
  2194  // RouteCompilationError compilation error when evaluating route
  2195  type RouteCompilationError struct {
  2196  	// Message - Route error message
  2197  	Message *string `json:"message,omitempty"`
  2198  	// Severity - Severity of the route error. Possible values include: 'Error', 'Warning'
  2199  	Severity RouteErrorSeverity `json:"severity,omitempty"`
  2200  	// Location - Location where the route error happened
  2201  	Location *RouteErrorRange `json:"location,omitempty"`
  2202  }
  2203  
  2204  // RouteErrorPosition position where the route error happened
  2205  type RouteErrorPosition struct {
  2206  	// Line - Line where the route error happened
  2207  	Line *int32 `json:"line,omitempty"`
  2208  	// Column - Column where the route error happened
  2209  	Column *int32 `json:"column,omitempty"`
  2210  }
  2211  
  2212  // RouteErrorRange range of route errors
  2213  type RouteErrorRange struct {
  2214  	// Start - Start where the route error happened
  2215  	Start *RouteErrorPosition `json:"start,omitempty"`
  2216  	// End - End where the route error happened
  2217  	End *RouteErrorPosition `json:"end,omitempty"`
  2218  }
  2219  
  2220  // RouteProperties the properties of a routing rule that your IoT hub uses to route messages to endpoints.
  2221  type RouteProperties struct {
  2222  	// Name - The name of the route. The name can only include alphanumeric characters, periods, underscores, hyphens, has a maximum length of 64 characters, and must be unique.
  2223  	Name *string `json:"name,omitempty"`
  2224  	// Source - The source that the routing rule is to be applied to, such as DeviceMessages. Possible values include: 'RoutingSourceInvalid', 'RoutingSourceDeviceMessages', 'RoutingSourceTwinChangeEvents', 'RoutingSourceDeviceLifecycleEvents', 'RoutingSourceDeviceJobLifecycleEvents'
  2225  	Source RoutingSource `json:"source,omitempty"`
  2226  	// Condition - The condition that is evaluated to apply the routing rule. If no condition is provided, it evaluates to true by default. For grammar, see: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-query-language
  2227  	Condition *string `json:"condition,omitempty"`
  2228  	// EndpointNames - The list of endpoints to which messages that satisfy the condition are routed. Currently only one endpoint is allowed.
  2229  	EndpointNames *[]string `json:"endpointNames,omitempty"`
  2230  	// IsEnabled - Used to specify whether a route is enabled.
  2231  	IsEnabled *bool `json:"isEnabled,omitempty"`
  2232  }
  2233  
  2234  // RoutingEndpoints the properties related to the custom endpoints to which your IoT hub routes messages
  2235  // based on the routing rules. A maximum of 10 custom endpoints are allowed across all endpoint types for
  2236  // paid hubs and only 1 custom endpoint is allowed across all endpoint types for free hubs.
  2237  type RoutingEndpoints struct {
  2238  	// ServiceBusQueues - The list of Service Bus queue endpoints that IoT hub routes the messages to, based on the routing rules.
  2239  	ServiceBusQueues *[]RoutingServiceBusQueueEndpointProperties `json:"serviceBusQueues,omitempty"`
  2240  	// ServiceBusTopics - The list of Service Bus topic endpoints that the IoT hub routes the messages to, based on the routing rules.
  2241  	ServiceBusTopics *[]RoutingServiceBusTopicEndpointProperties `json:"serviceBusTopics,omitempty"`
  2242  	// EventHubs - The list of Event Hubs endpoints that IoT hub routes messages to, based on the routing rules. This list does not include the built-in Event Hubs endpoint.
  2243  	EventHubs *[]RoutingEventHubProperties `json:"eventHubs,omitempty"`
  2244  	// StorageContainers - The list of storage container endpoints that IoT hub routes messages to, based on the routing rules.
  2245  	StorageContainers *[]RoutingStorageContainerProperties `json:"storageContainers,omitempty"`
  2246  }
  2247  
  2248  // RoutingEventHubProperties the properties related to an event hub endpoint.
  2249  type RoutingEventHubProperties struct {
  2250  	// ID - Id of the event hub endpoint
  2251  	ID *string `json:"id,omitempty"`
  2252  	// ConnectionString - The connection string of the event hub endpoint.
  2253  	ConnectionString *string `json:"connectionString,omitempty"`
  2254  	// EndpointURI - The url of the event hub endpoint. It must include the protocol sb://
  2255  	EndpointURI *string `json:"endpointUri,omitempty"`
  2256  	// EntityPath - Event hub name on the event hub namespace
  2257  	EntityPath *string `json:"entityPath,omitempty"`
  2258  	// AuthenticationType - Method used to authenticate against the event hub endpoint. Possible values include: 'KeyBased', 'IdentityBased'
  2259  	AuthenticationType AuthenticationType `json:"authenticationType,omitempty"`
  2260  	// Name - The name that identifies this endpoint. The name can only include alphanumeric characters, periods, underscores, hyphens and has a maximum length of 64 characters. The following names are reserved:  events, fileNotifications, $default. Endpoint names must be unique across endpoint types.
  2261  	Name *string `json:"name,omitempty"`
  2262  	// SubscriptionID - The subscription identifier of the event hub endpoint.
  2263  	SubscriptionID *string `json:"subscriptionId,omitempty"`
  2264  	// ResourceGroup - The name of the resource group of the event hub endpoint.
  2265  	ResourceGroup *string `json:"resourceGroup,omitempty"`
  2266  }
  2267  
  2268  // RoutingMessage routing message
  2269  type RoutingMessage struct {
  2270  	// Body - Body of routing message
  2271  	Body *string `json:"body,omitempty"`
  2272  	// AppProperties - App properties
  2273  	AppProperties map[string]*string `json:"appProperties"`
  2274  	// SystemProperties - System properties
  2275  	SystemProperties map[string]*string `json:"systemProperties"`
  2276  }
  2277  
  2278  // MarshalJSON is the custom marshaler for RoutingMessage.
  2279  func (rm RoutingMessage) MarshalJSON() ([]byte, error) {
  2280  	objectMap := make(map[string]interface{})
  2281  	if rm.Body != nil {
  2282  		objectMap["body"] = rm.Body
  2283  	}
  2284  	if rm.AppProperties != nil {
  2285  		objectMap["appProperties"] = rm.AppProperties
  2286  	}
  2287  	if rm.SystemProperties != nil {
  2288  		objectMap["systemProperties"] = rm.SystemProperties
  2289  	}
  2290  	return json.Marshal(objectMap)
  2291  }
  2292  
  2293  // RoutingProperties the routing related properties of the IoT hub. See:
  2294  // https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging
  2295  type RoutingProperties struct {
  2296  	Endpoints *RoutingEndpoints `json:"endpoints,omitempty"`
  2297  	// Routes - The list of user-provided routing rules that the IoT hub uses to route messages to built-in and custom endpoints. A maximum of 100 routing rules are allowed for paid hubs and a maximum of 5 routing rules are allowed for free hubs.
  2298  	Routes *[]RouteProperties `json:"routes,omitempty"`
  2299  	// FallbackRoute - The properties of the route that is used as a fall-back route when none of the conditions specified in the 'routes' section are met. This is an optional parameter. When this property is not set, the messages which do not meet any of the conditions specified in the 'routes' section get routed to the built-in eventhub endpoint.
  2300  	FallbackRoute *FallbackRouteProperties `json:"fallbackRoute,omitempty"`
  2301  	// Enrichments - The list of user-provided enrichments that the IoT hub applies to messages to be delivered to built-in and custom endpoints. See: https://aka.ms/telemetryoneventgrid
  2302  	Enrichments *[]EnrichmentProperties `json:"enrichments,omitempty"`
  2303  }
  2304  
  2305  // RoutingServiceBusQueueEndpointProperties the properties related to service bus queue endpoint types.
  2306  type RoutingServiceBusQueueEndpointProperties struct {
  2307  	// ID - Id of the service bus queue endpoint
  2308  	ID *string `json:"id,omitempty"`
  2309  	// ConnectionString - The connection string of the service bus queue endpoint.
  2310  	ConnectionString *string `json:"connectionString,omitempty"`
  2311  	// EndpointURI - The url of the service bus queue endpoint. It must include the protocol sb://
  2312  	EndpointURI *string `json:"endpointUri,omitempty"`
  2313  	// EntityPath - Queue name on the service bus namespace
  2314  	EntityPath *string `json:"entityPath,omitempty"`
  2315  	// AuthenticationType - Method used to authenticate against the service bus queue endpoint. Possible values include: 'KeyBased', 'IdentityBased'
  2316  	AuthenticationType AuthenticationType `json:"authenticationType,omitempty"`
  2317  	// Name - The name that identifies this endpoint. The name can only include alphanumeric characters, periods, underscores, hyphens and has a maximum length of 64 characters. The following names are reserved:  events, fileNotifications, $default. Endpoint names must be unique across endpoint types. The name need not be the same as the actual queue name.
  2318  	Name *string `json:"name,omitempty"`
  2319  	// SubscriptionID - The subscription identifier of the service bus queue endpoint.
  2320  	SubscriptionID *string `json:"subscriptionId,omitempty"`
  2321  	// ResourceGroup - The name of the resource group of the service bus queue endpoint.
  2322  	ResourceGroup *string `json:"resourceGroup,omitempty"`
  2323  }
  2324  
  2325  // RoutingServiceBusTopicEndpointProperties the properties related to service bus topic endpoint types.
  2326  type RoutingServiceBusTopicEndpointProperties struct {
  2327  	// ID - Id of the service bus topic endpoint
  2328  	ID *string `json:"id,omitempty"`
  2329  	// ConnectionString - The connection string of the service bus topic endpoint.
  2330  	ConnectionString *string `json:"connectionString,omitempty"`
  2331  	// EndpointURI - The url of the service bus topic endpoint. It must include the protocol sb://
  2332  	EndpointURI *string `json:"endpointUri,omitempty"`
  2333  	// EntityPath - Queue name on the service bus topic
  2334  	EntityPath *string `json:"entityPath,omitempty"`
  2335  	// AuthenticationType - Method used to authenticate against the service bus topic endpoint. Possible values include: 'KeyBased', 'IdentityBased'
  2336  	AuthenticationType AuthenticationType `json:"authenticationType,omitempty"`
  2337  	// Name - The name that identifies this endpoint. The name can only include alphanumeric characters, periods, underscores, hyphens and has a maximum length of 64 characters. The following names are reserved:  events, fileNotifications, $default. Endpoint names must be unique across endpoint types.  The name need not be the same as the actual topic name.
  2338  	Name *string `json:"name,omitempty"`
  2339  	// SubscriptionID - The subscription identifier of the service bus topic endpoint.
  2340  	SubscriptionID *string `json:"subscriptionId,omitempty"`
  2341  	// ResourceGroup - The name of the resource group of the service bus topic endpoint.
  2342  	ResourceGroup *string `json:"resourceGroup,omitempty"`
  2343  }
  2344  
  2345  // RoutingStorageContainerProperties the properties related to a storage container endpoint.
  2346  type RoutingStorageContainerProperties struct {
  2347  	// ID - Id of the storage container endpoint
  2348  	ID *string `json:"id,omitempty"`
  2349  	// ConnectionString - The connection string of the storage account.
  2350  	ConnectionString *string `json:"connectionString,omitempty"`
  2351  	// EndpointURI - The url of the storage endpoint. It must include the protocol https://
  2352  	EndpointURI *string `json:"endpointUri,omitempty"`
  2353  	// AuthenticationType - Method used to authenticate against the storage endpoint. Possible values include: 'KeyBased', 'IdentityBased'
  2354  	AuthenticationType AuthenticationType `json:"authenticationType,omitempty"`
  2355  	// Name - The name that identifies this endpoint. The name can only include alphanumeric characters, periods, underscores, hyphens and has a maximum length of 64 characters. The following names are reserved:  events, fileNotifications, $default. Endpoint names must be unique across endpoint types.
  2356  	Name *string `json:"name,omitempty"`
  2357  	// SubscriptionID - The subscription identifier of the storage account.
  2358  	SubscriptionID *string `json:"subscriptionId,omitempty"`
  2359  	// ResourceGroup - The name of the resource group of the storage account.
  2360  	ResourceGroup *string `json:"resourceGroup,omitempty"`
  2361  	// ContainerName - The name of storage container in the storage account.
  2362  	ContainerName *string `json:"containerName,omitempty"`
  2363  	// FileNameFormat - File name format for the blob. Default format is {iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}. All parameters are mandatory but can be reordered.
  2364  	FileNameFormat *string `json:"fileNameFormat,omitempty"`
  2365  	// BatchFrequencyInSeconds - Time interval at which blobs are written to storage. Value should be between 60 and 720 seconds. Default value is 300 seconds.
  2366  	BatchFrequencyInSeconds *int32 `json:"batchFrequencyInSeconds,omitempty"`
  2367  	// MaxChunkSizeInBytes - Maximum number of bytes for each blob written to storage. Value should be between 10485760(10MB) and 524288000(500MB). Default value is 314572800(300MB).
  2368  	MaxChunkSizeInBytes *int32 `json:"maxChunkSizeInBytes,omitempty"`
  2369  	// Encoding - Encoding that is used to serialize messages to blobs. Supported values are 'avro', 'avrodeflate', and 'JSON'. Default value is 'avro'. Possible values include: 'Avro', 'AvroDeflate', 'JSON'
  2370  	Encoding Encoding `json:"encoding,omitempty"`
  2371  }
  2372  
  2373  // RoutingTwin twin reference input parameter. This is an optional parameter
  2374  type RoutingTwin struct {
  2375  	// Tags - Twin Tags
  2376  	Tags       interface{}            `json:"tags,omitempty"`
  2377  	Properties *RoutingTwinProperties `json:"properties,omitempty"`
  2378  }
  2379  
  2380  // RoutingTwinProperties ...
  2381  type RoutingTwinProperties struct {
  2382  	// Desired - Twin desired properties
  2383  	Desired interface{} `json:"desired,omitempty"`
  2384  	// Reported - Twin desired properties
  2385  	Reported interface{} `json:"reported,omitempty"`
  2386  }
  2387  
  2388  // SetObject ...
  2389  type SetObject struct {
  2390  	autorest.Response `json:"-"`
  2391  	Value             interface{} `json:"value,omitempty"`
  2392  }
  2393  
  2394  // SharedAccessSignatureAuthorizationRule the properties of an IoT hub shared access policy.
  2395  type SharedAccessSignatureAuthorizationRule struct {
  2396  	autorest.Response `json:"-"`
  2397  	// KeyName - The name of the shared access policy.
  2398  	KeyName *string `json:"keyName,omitempty"`
  2399  	// PrimaryKey - The primary key.
  2400  	PrimaryKey *string `json:"primaryKey,omitempty"`
  2401  	// SecondaryKey - The secondary key.
  2402  	SecondaryKey *string `json:"secondaryKey,omitempty"`
  2403  	// Rights - The permissions assigned to the shared access policy. Possible values include: 'RegistryRead', 'RegistryWrite', 'ServiceConnect', 'DeviceConnect', 'RegistryReadRegistryWrite', 'RegistryReadServiceConnect', 'RegistryReadDeviceConnect', 'RegistryWriteServiceConnect', 'RegistryWriteDeviceConnect', 'ServiceConnectDeviceConnect', 'RegistryReadRegistryWriteServiceConnect', 'RegistryReadRegistryWriteDeviceConnect', 'RegistryReadServiceConnectDeviceConnect', 'RegistryWriteServiceConnectDeviceConnect', 'RegistryReadRegistryWriteServiceConnectDeviceConnect'
  2404  	Rights AccessRights `json:"rights,omitempty"`
  2405  }
  2406  
  2407  // SharedAccessSignatureAuthorizationRuleListResult the list of shared access policies with a next link.
  2408  type SharedAccessSignatureAuthorizationRuleListResult struct {
  2409  	autorest.Response `json:"-"`
  2410  	// Value - The list of shared access policies.
  2411  	Value *[]SharedAccessSignatureAuthorizationRule `json:"value,omitempty"`
  2412  	// NextLink - READ-ONLY; The next link.
  2413  	NextLink *string `json:"nextLink,omitempty"`
  2414  }
  2415  
  2416  // MarshalJSON is the custom marshaler for SharedAccessSignatureAuthorizationRuleListResult.
  2417  func (sasarlr SharedAccessSignatureAuthorizationRuleListResult) MarshalJSON() ([]byte, error) {
  2418  	objectMap := make(map[string]interface{})
  2419  	if sasarlr.Value != nil {
  2420  		objectMap["value"] = sasarlr.Value
  2421  	}
  2422  	return json.Marshal(objectMap)
  2423  }
  2424  
  2425  // SharedAccessSignatureAuthorizationRuleListResultIterator provides access to a complete listing of
  2426  // SharedAccessSignatureAuthorizationRule values.
  2427  type SharedAccessSignatureAuthorizationRuleListResultIterator struct {
  2428  	i    int
  2429  	page SharedAccessSignatureAuthorizationRuleListResultPage
  2430  }
  2431  
  2432  // NextWithContext advances to the next value.  If there was an error making
  2433  // the request the iterator does not advance and the error is returned.
  2434  func (iter *SharedAccessSignatureAuthorizationRuleListResultIterator) NextWithContext(ctx context.Context) (err error) {
  2435  	if tracing.IsEnabled() {
  2436  		ctx = tracing.StartSpan(ctx, fqdn+"/SharedAccessSignatureAuthorizationRuleListResultIterator.NextWithContext")
  2437  		defer func() {
  2438  			sc := -1
  2439  			if iter.Response().Response.Response != nil {
  2440  				sc = iter.Response().Response.Response.StatusCode
  2441  			}
  2442  			tracing.EndSpan(ctx, sc, err)
  2443  		}()
  2444  	}
  2445  	iter.i++
  2446  	if iter.i < len(iter.page.Values()) {
  2447  		return nil
  2448  	}
  2449  	err = iter.page.NextWithContext(ctx)
  2450  	if err != nil {
  2451  		iter.i--
  2452  		return err
  2453  	}
  2454  	iter.i = 0
  2455  	return nil
  2456  }
  2457  
  2458  // Next advances to the next value.  If there was an error making
  2459  // the request the iterator does not advance and the error is returned.
  2460  // Deprecated: Use NextWithContext() instead.
  2461  func (iter *SharedAccessSignatureAuthorizationRuleListResultIterator) Next() error {
  2462  	return iter.NextWithContext(context.Background())
  2463  }
  2464  
  2465  // NotDone returns true if the enumeration should be started or is not yet complete.
  2466  func (iter SharedAccessSignatureAuthorizationRuleListResultIterator) NotDone() bool {
  2467  	return iter.page.NotDone() && iter.i < len(iter.page.Values())
  2468  }
  2469  
  2470  // Response returns the raw server response from the last page request.
  2471  func (iter SharedAccessSignatureAuthorizationRuleListResultIterator) Response() SharedAccessSignatureAuthorizationRuleListResult {
  2472  	return iter.page.Response()
  2473  }
  2474  
  2475  // Value returns the current value or a zero-initialized value if the
  2476  // iterator has advanced beyond the end of the collection.
  2477  func (iter SharedAccessSignatureAuthorizationRuleListResultIterator) Value() SharedAccessSignatureAuthorizationRule {
  2478  	if !iter.page.NotDone() {
  2479  		return SharedAccessSignatureAuthorizationRule{}
  2480  	}
  2481  	return iter.page.Values()[iter.i]
  2482  }
  2483  
  2484  // Creates a new instance of the SharedAccessSignatureAuthorizationRuleListResultIterator type.
  2485  func NewSharedAccessSignatureAuthorizationRuleListResultIterator(page SharedAccessSignatureAuthorizationRuleListResultPage) SharedAccessSignatureAuthorizationRuleListResultIterator {
  2486  	return SharedAccessSignatureAuthorizationRuleListResultIterator{page: page}
  2487  }
  2488  
  2489  // IsEmpty returns true if the ListResult contains no values.
  2490  func (sasarlr SharedAccessSignatureAuthorizationRuleListResult) IsEmpty() bool {
  2491  	return sasarlr.Value == nil || len(*sasarlr.Value) == 0
  2492  }
  2493  
  2494  // hasNextLink returns true if the NextLink is not empty.
  2495  func (sasarlr SharedAccessSignatureAuthorizationRuleListResult) hasNextLink() bool {
  2496  	return sasarlr.NextLink != nil && len(*sasarlr.NextLink) != 0
  2497  }
  2498  
  2499  // sharedAccessSignatureAuthorizationRuleListResultPreparer prepares a request to retrieve the next set of results.
  2500  // It returns nil if no more results exist.
  2501  func (sasarlr SharedAccessSignatureAuthorizationRuleListResult) sharedAccessSignatureAuthorizationRuleListResultPreparer(ctx context.Context) (*http.Request, error) {
  2502  	if !sasarlr.hasNextLink() {
  2503  		return nil, nil
  2504  	}
  2505  	return autorest.Prepare((&http.Request{}).WithContext(ctx),
  2506  		autorest.AsJSON(),
  2507  		autorest.AsGet(),
  2508  		autorest.WithBaseURL(to.String(sasarlr.NextLink)))
  2509  }
  2510  
  2511  // SharedAccessSignatureAuthorizationRuleListResultPage contains a page of
  2512  // SharedAccessSignatureAuthorizationRule values.
  2513  type SharedAccessSignatureAuthorizationRuleListResultPage struct {
  2514  	fn      func(context.Context, SharedAccessSignatureAuthorizationRuleListResult) (SharedAccessSignatureAuthorizationRuleListResult, error)
  2515  	sasarlr SharedAccessSignatureAuthorizationRuleListResult
  2516  }
  2517  
  2518  // NextWithContext advances to the next page of values.  If there was an error making
  2519  // the request the page does not advance and the error is returned.
  2520  func (page *SharedAccessSignatureAuthorizationRuleListResultPage) NextWithContext(ctx context.Context) (err error) {
  2521  	if tracing.IsEnabled() {
  2522  		ctx = tracing.StartSpan(ctx, fqdn+"/SharedAccessSignatureAuthorizationRuleListResultPage.NextWithContext")
  2523  		defer func() {
  2524  			sc := -1
  2525  			if page.Response().Response.Response != nil {
  2526  				sc = page.Response().Response.Response.StatusCode
  2527  			}
  2528  			tracing.EndSpan(ctx, sc, err)
  2529  		}()
  2530  	}
  2531  	for {
  2532  		next, err := page.fn(ctx, page.sasarlr)
  2533  		if err != nil {
  2534  			return err
  2535  		}
  2536  		page.sasarlr = next
  2537  		if !next.hasNextLink() || !next.IsEmpty() {
  2538  			break
  2539  		}
  2540  	}
  2541  	return nil
  2542  }
  2543  
  2544  // Next advances to the next page of values.  If there was an error making
  2545  // the request the page does not advance and the error is returned.
  2546  // Deprecated: Use NextWithContext() instead.
  2547  func (page *SharedAccessSignatureAuthorizationRuleListResultPage) Next() error {
  2548  	return page.NextWithContext(context.Background())
  2549  }
  2550  
  2551  // NotDone returns true if the page enumeration should be started or is not yet complete.
  2552  func (page SharedAccessSignatureAuthorizationRuleListResultPage) NotDone() bool {
  2553  	return !page.sasarlr.IsEmpty()
  2554  }
  2555  
  2556  // Response returns the raw server response from the last page request.
  2557  func (page SharedAccessSignatureAuthorizationRuleListResultPage) Response() SharedAccessSignatureAuthorizationRuleListResult {
  2558  	return page.sasarlr
  2559  }
  2560  
  2561  // Values returns the slice of values for the current page or nil if there are no values.
  2562  func (page SharedAccessSignatureAuthorizationRuleListResultPage) Values() []SharedAccessSignatureAuthorizationRule {
  2563  	if page.sasarlr.IsEmpty() {
  2564  		return nil
  2565  	}
  2566  	return *page.sasarlr.Value
  2567  }
  2568  
  2569  // Creates a new instance of the SharedAccessSignatureAuthorizationRuleListResultPage type.
  2570  func NewSharedAccessSignatureAuthorizationRuleListResultPage(cur SharedAccessSignatureAuthorizationRuleListResult, getNextPage func(context.Context, SharedAccessSignatureAuthorizationRuleListResult) (SharedAccessSignatureAuthorizationRuleListResult, error)) SharedAccessSignatureAuthorizationRuleListResultPage {
  2571  	return SharedAccessSignatureAuthorizationRuleListResultPage{
  2572  		fn:      getNextPage,
  2573  		sasarlr: cur,
  2574  	}
  2575  }
  2576  
  2577  // StorageEndpointProperties the properties of the Azure Storage endpoint for file upload.
  2578  type StorageEndpointProperties struct {
  2579  	// SasTTLAsIso8601 - The period of time for which the SAS URI generated by IoT Hub for file upload is valid. See: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-file-upload#file-upload-notification-configuration-options.
  2580  	SasTTLAsIso8601 *string `json:"sasTtlAsIso8601,omitempty"`
  2581  	// ConnectionString - The connection string for the Azure Storage account to which files are uploaded.
  2582  	ConnectionString *string `json:"connectionString,omitempty"`
  2583  	// ContainerName - The name of the root container where you upload files. The container need not exist but should be creatable using the connectionString specified.
  2584  	ContainerName *string `json:"containerName,omitempty"`
  2585  	// AuthenticationType - Specifies authentication type being used for connecting to the storage account. Possible values include: 'KeyBased', 'IdentityBased'
  2586  	AuthenticationType AuthenticationType `json:"authenticationType,omitempty"`
  2587  }
  2588  
  2589  // TagsResource a container holding only the Tags for a resource, allowing the user to update the tags on
  2590  // an IoT Hub instance.
  2591  type TagsResource struct {
  2592  	// Tags - Resource tags
  2593  	Tags map[string]*string `json:"tags"`
  2594  }
  2595  
  2596  // MarshalJSON is the custom marshaler for TagsResource.
  2597  func (tr TagsResource) MarshalJSON() ([]byte, error) {
  2598  	objectMap := make(map[string]interface{})
  2599  	if tr.Tags != nil {
  2600  		objectMap["tags"] = tr.Tags
  2601  	}
  2602  	return json.Marshal(objectMap)
  2603  }
  2604  
  2605  // TestAllRoutesInput input for testing all routes
  2606  type TestAllRoutesInput struct {
  2607  	// RoutingSource - Routing source. Possible values include: 'RoutingSourceInvalid', 'RoutingSourceDeviceMessages', 'RoutingSourceTwinChangeEvents', 'RoutingSourceDeviceLifecycleEvents', 'RoutingSourceDeviceJobLifecycleEvents'
  2608  	RoutingSource RoutingSource `json:"routingSource,omitempty"`
  2609  	// Message - Routing message
  2610  	Message *RoutingMessage `json:"message,omitempty"`
  2611  	// Twin - Routing Twin Reference
  2612  	Twin *RoutingTwin `json:"twin,omitempty"`
  2613  }
  2614  
  2615  // TestAllRoutesResult result of testing all routes
  2616  type TestAllRoutesResult struct {
  2617  	autorest.Response `json:"-"`
  2618  	// Routes - JSON-serialized array of matched routes
  2619  	Routes *[]MatchedRoute `json:"routes,omitempty"`
  2620  }
  2621  
  2622  // TestRouteInput input for testing route
  2623  type TestRouteInput struct {
  2624  	// Message - Routing message
  2625  	Message *RoutingMessage `json:"message,omitempty"`
  2626  	// Route - Route properties
  2627  	Route *RouteProperties `json:"route,omitempty"`
  2628  	// Twin - Routing Twin Reference
  2629  	Twin *RoutingTwin `json:"twin,omitempty"`
  2630  }
  2631  
  2632  // TestRouteResult result of testing one route
  2633  type TestRouteResult struct {
  2634  	autorest.Response `json:"-"`
  2635  	// Result - Result of testing route. Possible values include: 'Undefined', 'False', 'True'
  2636  	Result TestResultStatus `json:"result,omitempty"`
  2637  	// Details - Detailed result of testing route
  2638  	Details *TestRouteResultDetails `json:"details,omitempty"`
  2639  }
  2640  
  2641  // TestRouteResultDetails detailed result of testing a route
  2642  type TestRouteResultDetails struct {
  2643  	// CompilationErrors - JSON-serialized list of route compilation errors
  2644  	CompilationErrors *[]RouteCompilationError `json:"compilationErrors,omitempty"`
  2645  }
  2646  
  2647  // UserSubscriptionQuota user subscription quota response
  2648  type UserSubscriptionQuota struct {
  2649  	// ID - IotHub type id
  2650  	ID *string `json:"id,omitempty"`
  2651  	// Type - Response type
  2652  	Type *string `json:"type,omitempty"`
  2653  	// Unit - Unit of IotHub type
  2654  	Unit *string `json:"unit,omitempty"`
  2655  	// CurrentValue - Current number of IotHub type
  2656  	CurrentValue *int32 `json:"currentValue,omitempty"`
  2657  	// Limit - Numerical limit on IotHub type
  2658  	Limit *int32 `json:"limit,omitempty"`
  2659  	// Name - IotHub type
  2660  	Name *Name `json:"name,omitempty"`
  2661  }
  2662  
  2663  // UserSubscriptionQuotaListResult json-serialized array of User subscription quota response
  2664  type UserSubscriptionQuotaListResult struct {
  2665  	autorest.Response `json:"-"`
  2666  	Value             *[]UserSubscriptionQuota `json:"value,omitempty"`
  2667  	// NextLink - READ-ONLY
  2668  	NextLink *string `json:"nextLink,omitempty"`
  2669  }
  2670  
  2671  // MarshalJSON is the custom marshaler for UserSubscriptionQuotaListResult.
  2672  func (usqlr UserSubscriptionQuotaListResult) MarshalJSON() ([]byte, error) {
  2673  	objectMap := make(map[string]interface{})
  2674  	if usqlr.Value != nil {
  2675  		objectMap["value"] = usqlr.Value
  2676  	}
  2677  	return json.Marshal(objectMap)
  2678  }
  2679  

View as plain text