1// +build go1.13
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// Code generated by Microsoft (R) AutoRest Code Generator.
6// Changes may cause incorrect behavior and will be lost if the code is regenerated.
7
8package armapimanagement
9
10import (
11	"encoding/json"
12	"github.com/Azure/azure-sdk-for-go/sdk/azcore"
13	"reflect"
14	"time"
15)
16
17// APIBeginCreateOrUpdateOptions contains the optional parameters for the API.BeginCreateOrUpdate method.
18type APIBeginCreateOrUpdateOptions struct {
19	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
20	IfMatch *string
21}
22
23// APICollection - Paged Api list representation.
24type APICollection struct {
25	// Total record count number across all pages.
26	Count *int64 `json:"count,omitempty"`
27
28	// READ-ONLY; Next page link if any.
29	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
30
31	// READ-ONLY; Page values.
32	Value []*APIContract `json:"value,omitempty" azure:"ro"`
33}
34
35// MarshalJSON implements the json.Marshaller interface for type APICollection.
36func (a APICollection) MarshalJSON() ([]byte, error) {
37	objectMap := make(map[string]interface{})
38	populate(objectMap, "count", a.Count)
39	populate(objectMap, "nextLink", a.NextLink)
40	populate(objectMap, "value", a.Value)
41	return json.Marshal(objectMap)
42}
43
44// APIContract - Api details.
45type APIContract struct {
46	Resource
47	// Api entity contract properties.
48	Properties *APIContractProperties `json:"properties,omitempty"`
49}
50
51// MarshalJSON implements the json.Marshaller interface for type APIContract.
52func (a APIContract) MarshalJSON() ([]byte, error) {
53	objectMap := a.Resource.marshalInternal()
54	populate(objectMap, "properties", a.Properties)
55	return json.Marshal(objectMap)
56}
57
58// APIContractProperties - Api Entity Properties
59type APIContractProperties struct {
60	APIEntityBaseContract
61	// REQUIRED; Relative URL uniquely identifying this API and all of its resource paths within the API Management service instance. It is appended to the
62	// API endpoint base URL specified during the service instance
63	// creation to form a public URL for this API.
64	Path *string `json:"path,omitempty"`
65
66	// Version set details
67	APIVersionSet *APIVersionSetContractDetails `json:"apiVersionSet,omitempty"`
68
69	// API name. Must be 1 to 300 characters long.
70	DisplayName *string `json:"displayName,omitempty"`
71
72	// Describes on which protocols the operations in this API can be invoked.
73	Protocols []*Protocol `json:"protocols,omitempty"`
74
75	// Absolute URL of the backend service implementing this API. Cannot be more than 2000 characters long.
76	ServiceURL *string `json:"serviceUrl,omitempty"`
77
78	// API identifier of the source API.
79	SourceAPIID *string `json:"sourceApiId,omitempty"`
80}
81
82// MarshalJSON implements the json.Marshaller interface for type APIContractProperties.
83func (a APIContractProperties) MarshalJSON() ([]byte, error) {
84	objectMap := a.marshalInternal()
85	return json.Marshal(objectMap)
86}
87
88func (a APIContractProperties) marshalInternal() map[string]interface{} {
89	objectMap := a.APIEntityBaseContract.marshalInternal()
90	populate(objectMap, "apiVersionSet", a.APIVersionSet)
91	populate(objectMap, "displayName", a.DisplayName)
92	populate(objectMap, "path", a.Path)
93	populate(objectMap, "protocols", a.Protocols)
94	populate(objectMap, "serviceUrl", a.ServiceURL)
95	populate(objectMap, "sourceApiId", a.SourceAPIID)
96	return objectMap
97}
98
99// APIContractUpdateProperties - API update contract properties.
100type APIContractUpdateProperties struct {
101	APIEntityBaseContract
102	// API name.
103	DisplayName *string `json:"displayName,omitempty"`
104
105	// Relative URL uniquely identifying this API and all of its resource paths within the API Management service instance. It is appended to the API endpoint
106	// base URL specified during the service instance
107	// creation to form a public URL for this API.
108	Path *string `json:"path,omitempty"`
109
110	// Describes on which protocols the operations in this API can be invoked.
111	Protocols []*Protocol `json:"protocols,omitempty"`
112
113	// Absolute URL of the backend service implementing this API.
114	ServiceURL *string `json:"serviceUrl,omitempty"`
115}
116
117// MarshalJSON implements the json.Marshaller interface for type APIContractUpdateProperties.
118func (a APIContractUpdateProperties) MarshalJSON() ([]byte, error) {
119	objectMap := a.APIEntityBaseContract.marshalInternal()
120	populate(objectMap, "displayName", a.DisplayName)
121	populate(objectMap, "path", a.Path)
122	populate(objectMap, "protocols", a.Protocols)
123	populate(objectMap, "serviceUrl", a.ServiceURL)
124	return json.Marshal(objectMap)
125}
126
127// APICreateOrUpdateParameter - API Create or Update Parameters.
128type APICreateOrUpdateParameter struct {
129	// Api entity create of update properties.
130	Properties *APICreateOrUpdateProperties `json:"properties,omitempty"`
131}
132
133// APICreateOrUpdateProperties - Api Create or Update Properties.
134type APICreateOrUpdateProperties struct {
135	APIContractProperties
136	// Format of the Content in which the API is getting imported.
137	Format *ContentFormat `json:"format,omitempty"`
138
139	// Type of Api to create.
140	// * http creates a SOAP to REST API
141	// * soap creates a SOAP pass-through API .
142	SoapAPIType *SoapAPIType `json:"apiType,omitempty"`
143
144	// Content value when Importing an API.
145	Value *string `json:"value,omitempty"`
146
147	// Criteria to limit import of WSDL to a subset of the document.
148	WsdlSelector *APICreateOrUpdatePropertiesWsdlSelector `json:"wsdlSelector,omitempty"`
149}
150
151// MarshalJSON implements the json.Marshaller interface for type APICreateOrUpdateProperties.
152func (a APICreateOrUpdateProperties) MarshalJSON() ([]byte, error) {
153	objectMap := a.APIContractProperties.marshalInternal()
154	populate(objectMap, "format", a.Format)
155	populate(objectMap, "apiType", a.SoapAPIType)
156	populate(objectMap, "value", a.Value)
157	populate(objectMap, "wsdlSelector", a.WsdlSelector)
158	return json.Marshal(objectMap)
159}
160
161// APICreateOrUpdatePropertiesWsdlSelector - Criteria to limit import of WSDL to a subset of the document.
162type APICreateOrUpdatePropertiesWsdlSelector struct {
163	// Name of endpoint(port) to import from WSDL
164	WsdlEndpointName *string `json:"wsdlEndpointName,omitempty"`
165
166	// Name of service to import from WSDL
167	WsdlServiceName *string `json:"wsdlServiceName,omitempty"`
168}
169
170// APIDeleteOptions contains the optional parameters for the API.Delete method.
171type APIDeleteOptions struct {
172	// Delete all revisions of the Api.
173	DeleteRevisions *bool
174}
175
176// APIDiagnosticCreateOrUpdateOptions contains the optional parameters for the APIDiagnostic.CreateOrUpdate method.
177type APIDiagnosticCreateOrUpdateOptions struct {
178	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
179	IfMatch *string
180}
181
182// APIDiagnosticDeleteOptions contains the optional parameters for the APIDiagnostic.Delete method.
183type APIDiagnosticDeleteOptions struct {
184	// placeholder for future optional parameters
185}
186
187// APIDiagnosticGetEntityTagOptions contains the optional parameters for the APIDiagnostic.GetEntityTag method.
188type APIDiagnosticGetEntityTagOptions struct {
189	// placeholder for future optional parameters
190}
191
192// APIDiagnosticGetOptions contains the optional parameters for the APIDiagnostic.Get method.
193type APIDiagnosticGetOptions struct {
194	// placeholder for future optional parameters
195}
196
197// APIDiagnosticListByServiceOptions contains the optional parameters for the APIDiagnostic.ListByService method.
198type APIDiagnosticListByServiceOptions struct {
199	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
200	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>
201	Filter *string
202	// Number of records to skip.
203	Skip *int32
204	// Number of records to return.
205	Top *int32
206}
207
208// APIDiagnosticUpdateOptions contains the optional parameters for the APIDiagnostic.Update method.
209type APIDiagnosticUpdateOptions struct {
210	// placeholder for future optional parameters
211}
212
213// APIEntityBaseContract - API base contract details.
214type APIEntityBaseContract struct {
215	// Describes the Revision of the Api. If no value is provided, default revision 1 is created
216	APIRevision *string `json:"apiRevision,omitempty"`
217
218	// Description of the Api Revision.
219	APIRevisionDescription *string `json:"apiRevisionDescription,omitempty"`
220
221	// Type of API.
222	APIType *APIType `json:"type,omitempty"`
223
224	// Indicates the Version identifier of the API if the API is versioned
225	APIVersion *string `json:"apiVersion,omitempty"`
226
227	// Description of the Api Version.
228	APIVersionDescription *string `json:"apiVersionDescription,omitempty"`
229
230	// A resource identifier for the related ApiVersionSet.
231	APIVersionSetID *string `json:"apiVersionSetId,omitempty"`
232
233	// Collection of authentication settings included into this API.
234	AuthenticationSettings *AuthenticationSettingsContract `json:"authenticationSettings,omitempty"`
235
236	// Description of the API. May include HTML formatting tags.
237	Description *string `json:"description,omitempty"`
238
239	// Indicates if API revision is current api revision.
240	IsCurrent *bool `json:"isCurrent,omitempty"`
241
242	// Protocols over which API is made available.
243	SubscriptionKeyParameterNames *SubscriptionKeyParameterNamesContract `json:"subscriptionKeyParameterNames,omitempty"`
244
245	// Specifies whether an API or Product subscription is required for accessing the API.
246	SubscriptionRequired *bool `json:"subscriptionRequired,omitempty"`
247
248	// READ-ONLY; Indicates if API revision is accessible via the gateway.
249	IsOnline *bool `json:"isOnline,omitempty" azure:"ro"`
250}
251
252// MarshalJSON implements the json.Marshaller interface for type APIEntityBaseContract.
253func (a APIEntityBaseContract) MarshalJSON() ([]byte, error) {
254	objectMap := a.marshalInternal()
255	return json.Marshal(objectMap)
256}
257
258func (a APIEntityBaseContract) marshalInternal() map[string]interface{} {
259	objectMap := make(map[string]interface{})
260	populate(objectMap, "apiRevision", a.APIRevision)
261	populate(objectMap, "apiRevisionDescription", a.APIRevisionDescription)
262	populate(objectMap, "type", a.APIType)
263	populate(objectMap, "apiVersion", a.APIVersion)
264	populate(objectMap, "apiVersionDescription", a.APIVersionDescription)
265	populate(objectMap, "apiVersionSetId", a.APIVersionSetID)
266	populate(objectMap, "authenticationSettings", a.AuthenticationSettings)
267	populate(objectMap, "description", a.Description)
268	populate(objectMap, "isCurrent", a.IsCurrent)
269	populate(objectMap, "isOnline", a.IsOnline)
270	populate(objectMap, "subscriptionKeyParameterNames", a.SubscriptionKeyParameterNames)
271	populate(objectMap, "subscriptionRequired", a.SubscriptionRequired)
272	return objectMap
273}
274
275// APIExportGetOptions contains the optional parameters for the APIExport.Get method.
276type APIExportGetOptions struct {
277	// placeholder for future optional parameters
278}
279
280// APIExportResult - API Export result.
281type APIExportResult struct {
282	// Format in which the Api Details are exported to the Storage Blob with Sas Key valid for 5 minutes.
283	ExportResultFormat *ExportResultFormat `json:"format,omitempty"`
284
285	// ResourceId of the API which was exported.
286	ID *string `json:"id,omitempty"`
287
288	// The object defining the schema of the exported Api Detail
289	Value *APIExportResultValue `json:"value,omitempty"`
290}
291
292// APIExportResultValue - The object defining the schema of the exported Api Detail
293type APIExportResultValue struct {
294	// Link to the Storage Blob containing the result of the export operation. The Blob Uri is only valid for 5 minutes.
295	Link *string `json:"link,omitempty"`
296}
297
298// APIGetEntityTagOptions contains the optional parameters for the API.GetEntityTag method.
299type APIGetEntityTagOptions struct {
300	// placeholder for future optional parameters
301}
302
303// APIGetOptions contains the optional parameters for the API.Get method.
304type APIGetOptions struct {
305	// placeholder for future optional parameters
306}
307
308// APIIssueAttachmentCreateOrUpdateOptions contains the optional parameters for the APIIssueAttachment.CreateOrUpdate method.
309type APIIssueAttachmentCreateOrUpdateOptions struct {
310	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
311	IfMatch *string
312}
313
314// APIIssueAttachmentDeleteOptions contains the optional parameters for the APIIssueAttachment.Delete method.
315type APIIssueAttachmentDeleteOptions struct {
316	// placeholder for future optional parameters
317}
318
319// APIIssueAttachmentGetEntityTagOptions contains the optional parameters for the APIIssueAttachment.GetEntityTag method.
320type APIIssueAttachmentGetEntityTagOptions struct {
321	// placeholder for future optional parameters
322}
323
324// APIIssueAttachmentGetOptions contains the optional parameters for the APIIssueAttachment.Get method.
325type APIIssueAttachmentGetOptions struct {
326	// placeholder for future optional parameters
327}
328
329// APIIssueAttachmentListByServiceOptions contains the optional parameters for the APIIssueAttachment.ListByService method.
330type APIIssueAttachmentListByServiceOptions struct {
331	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
332	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| userId | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
333	// endswith |</br>
334	Filter *string
335	// Number of records to skip.
336	Skip *int32
337	// Number of records to return.
338	Top *int32
339}
340
341// APIIssueCommentCreateOrUpdateOptions contains the optional parameters for the APIIssueComment.CreateOrUpdate method.
342type APIIssueCommentCreateOrUpdateOptions struct {
343	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
344	IfMatch *string
345}
346
347// APIIssueCommentDeleteOptions contains the optional parameters for the APIIssueComment.Delete method.
348type APIIssueCommentDeleteOptions struct {
349	// placeholder for future optional parameters
350}
351
352// APIIssueCommentGetEntityTagOptions contains the optional parameters for the APIIssueComment.GetEntityTag method.
353type APIIssueCommentGetEntityTagOptions struct {
354	// placeholder for future optional parameters
355}
356
357// APIIssueCommentGetOptions contains the optional parameters for the APIIssueComment.Get method.
358type APIIssueCommentGetOptions struct {
359	// placeholder for future optional parameters
360}
361
362// APIIssueCommentListByServiceOptions contains the optional parameters for the APIIssueComment.ListByService method.
363type APIIssueCommentListByServiceOptions struct {
364	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
365	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| userId | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
366	// endswith |</br>
367	Filter *string
368	// Number of records to skip.
369	Skip *int32
370	// Number of records to return.
371	Top *int32
372}
373
374// APIIssueCreateOrUpdateOptions contains the optional parameters for the APIIssue.CreateOrUpdate method.
375type APIIssueCreateOrUpdateOptions struct {
376	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
377	IfMatch *string
378}
379
380// APIIssueDeleteOptions contains the optional parameters for the APIIssue.Delete method.
381type APIIssueDeleteOptions struct {
382	// placeholder for future optional parameters
383}
384
385// APIIssueGetEntityTagOptions contains the optional parameters for the APIIssue.GetEntityTag method.
386type APIIssueGetEntityTagOptions struct {
387	// placeholder for future optional parameters
388}
389
390// APIIssueGetOptions contains the optional parameters for the APIIssue.Get method.
391type APIIssueGetOptions struct {
392	// Expand the comment attachments.
393	ExpandCommentsAttachments *bool
394}
395
396// APIIssueListByServiceOptions contains the optional parameters for the APIIssue.ListByService method.
397type APIIssueListByServiceOptions struct {
398	// Expand the comment attachments.
399	ExpandCommentsAttachments *bool
400	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
401	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| userId | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
402	// endswith |</br>| state | filter | eq | |</br>
403	Filter *string
404	// Number of records to skip.
405	Skip *int32
406	// Number of records to return.
407	Top *int32
408}
409
410// APIIssueUpdateOptions contains the optional parameters for the APIIssue.Update method.
411type APIIssueUpdateOptions struct {
412	// placeholder for future optional parameters
413}
414
415// APIListByServiceOptions contains the optional parameters for the API.ListByService method.
416type APIListByServiceOptions struct {
417	// Include full ApiVersionSet resource in response
418	ExpandAPIVersionSet *bool
419	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
420	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| displayName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
421	// endswith |</br>| description | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| serviceUrl | filter | ge, le, eq,
422	// ne, gt, lt | substringof, contains, startswith, endswith |</br>| path | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith
423	// |</br>| isCurrent | filter | eq, ne | |</br>
424	Filter *string
425	// Number of records to skip.
426	Skip *int32
427	// Include tags in the response.
428	Tags *string
429	// Number of records to return.
430	Top *int32
431}
432
433// APIListByTagsOptions contains the optional parameters for the API.ListByTags method.
434type APIListByTagsOptions struct {
435	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
436	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| displayName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
437	// endswith |</br>| apiRevision | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| path | filter | ge, le, eq, ne,
438	// gt, lt | substringof, contains, startswith, endswith |</br>| description | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith
439	// |</br>| serviceUrl | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| isCurrent | filter | eq | |</br>
440	Filter *string
441	// Include not tagged APIs.
442	IncludeNotTaggedApis *bool
443	// Number of records to skip.
444	Skip *int32
445	// Number of records to return.
446	Top *int32
447}
448
449// APIManagementOperationsListOptions contains the optional parameters for the APIManagementOperations.List method.
450type APIManagementOperationsListOptions struct {
451	// placeholder for future optional parameters
452}
453
454// APIManagementSKU - Describes an available ApiManagement SKU.
455type APIManagementSKU struct {
456	// READ-ONLY; The api versions that support this SKU.
457	APIVersions []*string `json:"apiVersions,omitempty" azure:"ro"`
458
459	// READ-ONLY; A name value pair to describe the capability.
460	Capabilities []*APIManagementSKUCapabilities `json:"capabilities,omitempty" azure:"ro"`
461
462	// READ-ONLY; Specifies the number of virtual machines in the scale set.
463	Capacity *APIManagementSKUCapacity `json:"capacity,omitempty" azure:"ro"`
464
465	// READ-ONLY; Metadata for retrieving price info.
466	Costs []*APIManagementSKUCosts `json:"costs,omitempty" azure:"ro"`
467
468	// READ-ONLY; The Family of this particular SKU.
469	Family *string `json:"family,omitempty" azure:"ro"`
470
471	// READ-ONLY; The Kind of resources that are supported in this SKU.
472	Kind *string `json:"kind,omitempty" azure:"ro"`
473
474	// READ-ONLY; A list of locations and availability zones in those locations where the SKU is available.
475	LocationInfo []*APIManagementSKULocationInfo `json:"locationInfo,omitempty" azure:"ro"`
476
477	// READ-ONLY; The set of locations that the SKU is available.
478	Locations []*string `json:"locations,omitempty" azure:"ro"`
479
480	// READ-ONLY; The name of SKU.
481	Name *string `json:"name,omitempty" azure:"ro"`
482
483	// READ-ONLY; The type of resource the SKU applies to.
484	ResourceType *string `json:"resourceType,omitempty" azure:"ro"`
485
486	// READ-ONLY; The restrictions because of which SKU cannot be used. This is empty if there are no restrictions.
487	Restrictions []*APIManagementSKURestrictions `json:"restrictions,omitempty" azure:"ro"`
488
489	// READ-ONLY; The Size of the SKU.
490	Size *string `json:"size,omitempty" azure:"ro"`
491
492	// READ-ONLY; Specifies the tier of virtual machines in a scale set.
493	// Possible Values:
494	// Standard
495	// Basic
496	Tier *string `json:"tier,omitempty" azure:"ro"`
497}
498
499// MarshalJSON implements the json.Marshaller interface for type APIManagementSKU.
500func (a APIManagementSKU) MarshalJSON() ([]byte, error) {
501	objectMap := make(map[string]interface{})
502	populate(objectMap, "apiVersions", a.APIVersions)
503	populate(objectMap, "capabilities", a.Capabilities)
504	populate(objectMap, "capacity", a.Capacity)
505	populate(objectMap, "costs", a.Costs)
506	populate(objectMap, "family", a.Family)
507	populate(objectMap, "kind", a.Kind)
508	populate(objectMap, "locationInfo", a.LocationInfo)
509	populate(objectMap, "locations", a.Locations)
510	populate(objectMap, "name", a.Name)
511	populate(objectMap, "resourceType", a.ResourceType)
512	populate(objectMap, "restrictions", a.Restrictions)
513	populate(objectMap, "size", a.Size)
514	populate(objectMap, "tier", a.Tier)
515	return json.Marshal(objectMap)
516}
517
518// APIManagementSKUCapabilities - Describes The SKU capabilities object.
519type APIManagementSKUCapabilities struct {
520	// READ-ONLY; An invariant to describe the feature.
521	Name *string `json:"name,omitempty" azure:"ro"`
522
523	// READ-ONLY; An invariant if the feature is measured by quantity.
524	Value *string `json:"value,omitempty" azure:"ro"`
525}
526
527// APIManagementSKUCapacity - Describes scaling information of a SKU.
528type APIManagementSKUCapacity struct {
529	// READ-ONLY; The default capacity.
530	Default *int32 `json:"default,omitempty" azure:"ro"`
531
532	// READ-ONLY; The maximum capacity that can be set.
533	Maximum *int32 `json:"maximum,omitempty" azure:"ro"`
534
535	// READ-ONLY; The minimum capacity.
536	Minimum *int32 `json:"minimum,omitempty" azure:"ro"`
537
538	// READ-ONLY; The scale type applicable to the sku.
539	ScaleType *APIManagementSKUCapacityScaleType `json:"scaleType,omitempty" azure:"ro"`
540}
541
542// APIManagementSKUCosts - Describes metadata for retrieving price info.
543type APIManagementSKUCosts struct {
544	// READ-ONLY; An invariant to show the extended unit.
545	ExtendedUnit *string `json:"extendedUnit,omitempty" azure:"ro"`
546
547	// READ-ONLY; Used for querying price from commerce.
548	MeterID *string `json:"meterID,omitempty" azure:"ro"`
549
550	// READ-ONLY; The multiplier is needed to extend the base metered cost.
551	Quantity *int64 `json:"quantity,omitempty" azure:"ro"`
552}
553
554type APIManagementSKULocationInfo struct {
555	// READ-ONLY; Location of the SKU
556	Location *string `json:"location,omitempty" azure:"ro"`
557
558	// READ-ONLY; Details of capabilities available to a SKU in specific zones.
559	ZoneDetails []*APIManagementSKUZoneDetails `json:"zoneDetails,omitempty" azure:"ro"`
560
561	// READ-ONLY; List of availability zones where the SKU is supported.
562	Zones []*string `json:"zones,omitempty" azure:"ro"`
563}
564
565// MarshalJSON implements the json.Marshaller interface for type APIManagementSKULocationInfo.
566func (a APIManagementSKULocationInfo) MarshalJSON() ([]byte, error) {
567	objectMap := make(map[string]interface{})
568	populate(objectMap, "location", a.Location)
569	populate(objectMap, "zoneDetails", a.ZoneDetails)
570	populate(objectMap, "zones", a.Zones)
571	return json.Marshal(objectMap)
572}
573
574type APIManagementSKURestrictionInfo struct {
575	// READ-ONLY; Locations where the SKU is restricted
576	Locations []*string `json:"locations,omitempty" azure:"ro"`
577
578	// READ-ONLY; List of availability zones where the SKU is restricted.
579	Zones []*string `json:"zones,omitempty" azure:"ro"`
580}
581
582// MarshalJSON implements the json.Marshaller interface for type APIManagementSKURestrictionInfo.
583func (a APIManagementSKURestrictionInfo) MarshalJSON() ([]byte, error) {
584	objectMap := make(map[string]interface{})
585	populate(objectMap, "locations", a.Locations)
586	populate(objectMap, "zones", a.Zones)
587	return json.Marshal(objectMap)
588}
589
590// APIManagementSKURestrictions - Describes scaling information of a SKU.
591type APIManagementSKURestrictions struct {
592	// READ-ONLY; The reason for restriction.
593	ReasonCode *APIManagementSKURestrictionsReasonCode `json:"reasonCode,omitempty" azure:"ro"`
594
595	// READ-ONLY; The information about the restriction where the SKU cannot be used.
596	RestrictionInfo *APIManagementSKURestrictionInfo `json:"restrictionInfo,omitempty" azure:"ro"`
597
598	// READ-ONLY; The type of restrictions.
599	Type *APIManagementSKURestrictionsType `json:"type,omitempty" azure:"ro"`
600
601	// READ-ONLY; The value of restrictions. If the restriction type is set to location. This would be different locations where the SKU is restricted.
602	Values []*string `json:"values,omitempty" azure:"ro"`
603}
604
605// MarshalJSON implements the json.Marshaller interface for type APIManagementSKURestrictions.
606func (a APIManagementSKURestrictions) MarshalJSON() ([]byte, error) {
607	objectMap := make(map[string]interface{})
608	populate(objectMap, "reasonCode", a.ReasonCode)
609	populate(objectMap, "restrictionInfo", a.RestrictionInfo)
610	populate(objectMap, "type", a.Type)
611	populate(objectMap, "values", a.Values)
612	return json.Marshal(objectMap)
613}
614
615// APIManagementSKUZoneDetails - Describes The zonal capabilities of a SKU.
616type APIManagementSKUZoneDetails struct {
617	// READ-ONLY; A list of capabilities that are available for the SKU in the specified list of zones.
618	Capabilities []*APIManagementSKUCapabilities `json:"capabilities,omitempty" azure:"ro"`
619
620	// READ-ONLY; The set of zones that the SKU is available in with the specified capabilities.
621	Name []*string `json:"name,omitempty" azure:"ro"`
622}
623
624// MarshalJSON implements the json.Marshaller interface for type APIManagementSKUZoneDetails.
625func (a APIManagementSKUZoneDetails) MarshalJSON() ([]byte, error) {
626	objectMap := make(map[string]interface{})
627	populate(objectMap, "capabilities", a.Capabilities)
628	populate(objectMap, "name", a.Name)
629	return json.Marshal(objectMap)
630}
631
632// APIManagementSKUsListOptions contains the optional parameters for the APIManagementSKUs.List method.
633type APIManagementSKUsListOptions struct {
634	// placeholder for future optional parameters
635}
636
637// APIManagementSKUsResult - The List Resource Skus operation response.
638type APIManagementSKUsResult struct {
639	// REQUIRED; The list of skus available for the subscription.
640	Value []*APIManagementSKU `json:"value,omitempty"`
641
642	// READ-ONLY; The URI to fetch the next page of Resource Skus. Call ListNext() with this URI to fetch the next page of Resource Skus
643	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
644}
645
646// MarshalJSON implements the json.Marshaller interface for type APIManagementSKUsResult.
647func (a APIManagementSKUsResult) MarshalJSON() ([]byte, error) {
648	objectMap := make(map[string]interface{})
649	populate(objectMap, "nextLink", a.NextLink)
650	populate(objectMap, "value", a.Value)
651	return json.Marshal(objectMap)
652}
653
654// APIManagementServiceApplyNetworkConfigurationParameters - Parameter supplied to the Apply Network configuration operation.
655type APIManagementServiceApplyNetworkConfigurationParameters struct {
656	// Location of the Api Management service to update for a multi-region service. For a service deployed in a single region, this parameter is not required.
657	Location *string `json:"location,omitempty"`
658}
659
660// APIManagementServiceBackupRestoreParameters - Parameters supplied to the Backup/Restore of an API Management service operation.
661type APIManagementServiceBackupRestoreParameters struct {
662	// REQUIRED; Azure Cloud Storage account (used to place/retrieve the backup) access key.
663	AccessKey *string `json:"accessKey,omitempty"`
664
665	// REQUIRED; The name of the backup file to create.
666	BackupName *string `json:"backupName,omitempty"`
667
668	// REQUIRED; Azure Cloud Storage blob container name used to place/retrieve the backup.
669	ContainerName *string `json:"containerName,omitempty"`
670
671	// REQUIRED; Azure Cloud Storage account (used to place/retrieve the backup) name.
672	StorageAccount *string `json:"storageAccount,omitempty"`
673}
674
675// APIManagementServiceBaseProperties - Base Properties of an API Management service resource description.
676type APIManagementServiceBaseProperties struct {
677	// Control Plane Apis version constraint for the API Management service.
678	APIVersionConstraint *APIVersionConstraint `json:"apiVersionConstraint,omitempty"`
679
680	// Additional datacenter locations of the API Management service.
681	AdditionalLocations []*AdditionalLocation `json:"additionalLocations,omitempty"`
682
683	// List of Certificates that need to be installed in the API Management service. Max supported certificates that can be installed is 10.
684	Certificates []*CertificateConfiguration `json:"certificates,omitempty"`
685
686	// Custom properties of the API Management service.
687	// Setting Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168 will disable the cipher TLSRSAWITH3DESEDECBCSHA for all TLS(1.0, 1.1
688	// and 1.2).
689	// Setting Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11 can be used to disable just TLS 1.1.
690	// Setting Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10 can be used to disable TLS 1.0 on an API Management service.
691	// Setting Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11 can be used to disable just TLS 1.1 for communications with backends.
692	// Setting Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10 can be used to disable TLS 1.0 for communications with backends.
693	// Setting Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2 can be used to enable HTTP2 protocol on an API Management service.
694	// Not specifying any of these properties on PATCH operation will reset omitted properties' values to their defaults. For all the settings except Http2
695	// the default value is True if the service was
696	// created on or before April 1st 2018 and False otherwise. Http2 setting's default value is False.
697	// You can disable any of next ciphers by using settings Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.[cipher_name]: TLSECDHEECDSAWITHAES256CBCSHA,
698	// TLSECDHEECDSAWITHAES128CBCSHA, TLS
699	// ECDHERSAWITHAES256CBCSHA, TLSECDHERSAWITHAES128CBCSHA, TLSRSAWITHAES128GCMSHA256, TLSRSAWITHAES256CBCSHA256, TLSRSAWITHAES128CBCSHA256, TLSRSAWITHAES256CBCSHA,
700	// TLSRSAWITHAES128CBCSHA. For example,
701	// Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256:false. The default value is true for them. Note: next ciphers
702	// can't be disabled since they are required by
703	// Azure CloudService internal components: TLSECDHEECDSAWITHAES256GCMSHA384,TLSECDHEECDSAWITHAES128GCMSHA256,TLSECDHERSAWITHAES256GCMSHA384,TLSECDHERSAWITHAES128GCMSHA256,TLSECDHEECDSAWITHAES256CBC
704	// SHA384,TLSECDHEECDSAWITHAES128CBCSHA256,TLSECDHERSAWITHAES256CBCSHA384,TLSECDHERSAWITHAES128CBCSHA256,TLSRSAWITHAES256GCMSHA384
705	CustomProperties map[string]*string `json:"customProperties,omitempty"`
706
707	// Property only valid for an Api Management service deployed in multiple locations. This can be used to disable the gateway in master region.
708	DisableGateway *bool `json:"disableGateway,omitempty"`
709
710	// Property only meant to be used for Consumption SKU Service. This enforces a client certificate to be presented on each request to the gateway. This also
711	// enables the ability to authenticate the
712	// certificate in the policy on the gateway.
713	EnableClientCertificate *bool `json:"enableClientCertificate,omitempty"`
714
715	// Custom hostname configuration of the API Management service.
716	HostnameConfigurations []*HostnameConfiguration `json:"hostnameConfigurations,omitempty"`
717
718	// Email address from which the notification will be sent.
719	NotificationSenderEmail *string `json:"notificationSenderEmail,omitempty"`
720
721	// Undelete Api Management Service if it was previously soft-deleted. If this flag is specified and set to True all other properties will be ignored.
722	Restore *bool `json:"restore,omitempty"`
723
724	// Virtual network configuration of the API Management service.
725	VirtualNetworkConfiguration *VirtualNetworkConfiguration `json:"virtualNetworkConfiguration,omitempty"`
726
727	// The type of VPN in which API Management service needs to be configured in. None (Default Value) means the API Management service is not part of any Virtual
728	// Network, External means the API Management
729	// deployment is set up inside a Virtual Network having an Internet Facing Endpoint, and Internal means that API Management deployment is setup inside a
730	// Virtual Network having an Intranet Facing Endpoint
731	// only.
732	VirtualNetworkType *VirtualNetworkType `json:"virtualNetworkType,omitempty"`
733
734	// READ-ONLY; Creation UTC date of the API Management service.The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601
735	// standard.
736	CreatedAtUTC *time.Time `json:"createdAtUtc,omitempty" azure:"ro"`
737
738	// READ-ONLY; DEveloper Portal endpoint URL of the API Management service.
739	DeveloperPortalURL *string `json:"developerPortalUrl,omitempty" azure:"ro"`
740
741	// READ-ONLY; Gateway URL of the API Management service in the Default Region.
742	GatewayRegionalURL *string `json:"gatewayRegionalUrl,omitempty" azure:"ro"`
743
744	// READ-ONLY; Gateway URL of the API Management service.
745	GatewayURL *string `json:"gatewayUrl,omitempty" azure:"ro"`
746
747	// READ-ONLY; Management API endpoint URL of the API Management service.
748	ManagementAPIURL *string `json:"managementApiUrl,omitempty" azure:"ro"`
749
750	// READ-ONLY; Publisher portal endpoint Url of the API Management service.
751	PortalURL *string `json:"portalUrl,omitempty" azure:"ro"`
752
753	// READ-ONLY; Private Static Load Balanced IP addresses of the API Management service in Primary region which is deployed in an Internal Virtual Network.
754	// Available only for Basic, Standard, Premium and Isolated
755	// SKU.
756	PrivateIPAddresses []*string `json:"privateIPAddresses,omitempty" azure:"ro"`
757
758	// READ-ONLY; The current provisioning state of the API Management service which can be one of the following: Created/Activating/Succeeded/Updating/Failed/Stopped/Terminating/TerminationFailed/Deleted.
759	ProvisioningState *string `json:"provisioningState,omitempty" azure:"ro"`
760
761	// READ-ONLY; Public Static Load Balanced IP addresses of the API Management service in Primary region. Available only for Basic, Standard, Premium and
762	// Isolated SKU.
763	PublicIPAddresses []*string `json:"publicIPAddresses,omitempty" azure:"ro"`
764
765	// READ-ONLY; SCM endpoint URL of the API Management service.
766	ScmURL *string `json:"scmUrl,omitempty" azure:"ro"`
767
768	// READ-ONLY; The provisioning state of the API Management service, which is targeted by the long running operation started on the service.
769	TargetProvisioningState *string `json:"targetProvisioningState,omitempty" azure:"ro"`
770}
771
772// MarshalJSON implements the json.Marshaller interface for type APIManagementServiceBaseProperties.
773func (a APIManagementServiceBaseProperties) MarshalJSON() ([]byte, error) {
774	objectMap := a.marshalInternal()
775	return json.Marshal(objectMap)
776}
777
778// UnmarshalJSON implements the json.Unmarshaller interface for type APIManagementServiceBaseProperties.
779func (a *APIManagementServiceBaseProperties) UnmarshalJSON(data []byte) error {
780	var rawMsg map[string]json.RawMessage
781	if err := json.Unmarshal(data, &rawMsg); err != nil {
782		return err
783	}
784	return a.unmarshalInternal(rawMsg)
785}
786
787func (a APIManagementServiceBaseProperties) marshalInternal() map[string]interface{} {
788	objectMap := make(map[string]interface{})
789	populate(objectMap, "apiVersionConstraint", a.APIVersionConstraint)
790	populate(objectMap, "additionalLocations", a.AdditionalLocations)
791	populate(objectMap, "certificates", a.Certificates)
792	populate(objectMap, "createdAtUtc", (*timeRFC3339)(a.CreatedAtUTC))
793	populate(objectMap, "customProperties", a.CustomProperties)
794	populate(objectMap, "developerPortalUrl", a.DeveloperPortalURL)
795	populate(objectMap, "disableGateway", a.DisableGateway)
796	populate(objectMap, "enableClientCertificate", a.EnableClientCertificate)
797	populate(objectMap, "gatewayRegionalUrl", a.GatewayRegionalURL)
798	populate(objectMap, "gatewayUrl", a.GatewayURL)
799	populate(objectMap, "hostnameConfigurations", a.HostnameConfigurations)
800	populate(objectMap, "managementApiUrl", a.ManagementAPIURL)
801	populate(objectMap, "notificationSenderEmail", a.NotificationSenderEmail)
802	populate(objectMap, "portalUrl", a.PortalURL)
803	populate(objectMap, "privateIPAddresses", a.PrivateIPAddresses)
804	populate(objectMap, "provisioningState", a.ProvisioningState)
805	populate(objectMap, "publicIPAddresses", a.PublicIPAddresses)
806	populate(objectMap, "restore", a.Restore)
807	populate(objectMap, "scmUrl", a.ScmURL)
808	populate(objectMap, "targetProvisioningState", a.TargetProvisioningState)
809	populate(objectMap, "virtualNetworkConfiguration", a.VirtualNetworkConfiguration)
810	populate(objectMap, "virtualNetworkType", a.VirtualNetworkType)
811	return objectMap
812}
813
814func (a *APIManagementServiceBaseProperties) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
815	for key, val := range rawMsg {
816		var err error
817		switch key {
818		case "apiVersionConstraint":
819			err = unpopulate(val, &a.APIVersionConstraint)
820			delete(rawMsg, key)
821		case "additionalLocations":
822			err = unpopulate(val, &a.AdditionalLocations)
823			delete(rawMsg, key)
824		case "certificates":
825			err = unpopulate(val, &a.Certificates)
826			delete(rawMsg, key)
827		case "createdAtUtc":
828			var aux timeRFC3339
829			err = unpopulate(val, &aux)
830			a.CreatedAtUTC = (*time.Time)(&aux)
831			delete(rawMsg, key)
832		case "customProperties":
833			err = unpopulate(val, &a.CustomProperties)
834			delete(rawMsg, key)
835		case "developerPortalUrl":
836			err = unpopulate(val, &a.DeveloperPortalURL)
837			delete(rawMsg, key)
838		case "disableGateway":
839			err = unpopulate(val, &a.DisableGateway)
840			delete(rawMsg, key)
841		case "enableClientCertificate":
842			err = unpopulate(val, &a.EnableClientCertificate)
843			delete(rawMsg, key)
844		case "gatewayRegionalUrl":
845			err = unpopulate(val, &a.GatewayRegionalURL)
846			delete(rawMsg, key)
847		case "gatewayUrl":
848			err = unpopulate(val, &a.GatewayURL)
849			delete(rawMsg, key)
850		case "hostnameConfigurations":
851			err = unpopulate(val, &a.HostnameConfigurations)
852			delete(rawMsg, key)
853		case "managementApiUrl":
854			err = unpopulate(val, &a.ManagementAPIURL)
855			delete(rawMsg, key)
856		case "notificationSenderEmail":
857			err = unpopulate(val, &a.NotificationSenderEmail)
858			delete(rawMsg, key)
859		case "portalUrl":
860			err = unpopulate(val, &a.PortalURL)
861			delete(rawMsg, key)
862		case "privateIPAddresses":
863			err = unpopulate(val, &a.PrivateIPAddresses)
864			delete(rawMsg, key)
865		case "provisioningState":
866			err = unpopulate(val, &a.ProvisioningState)
867			delete(rawMsg, key)
868		case "publicIPAddresses":
869			err = unpopulate(val, &a.PublicIPAddresses)
870			delete(rawMsg, key)
871		case "restore":
872			err = unpopulate(val, &a.Restore)
873			delete(rawMsg, key)
874		case "scmUrl":
875			err = unpopulate(val, &a.ScmURL)
876			delete(rawMsg, key)
877		case "targetProvisioningState":
878			err = unpopulate(val, &a.TargetProvisioningState)
879			delete(rawMsg, key)
880		case "virtualNetworkConfiguration":
881			err = unpopulate(val, &a.VirtualNetworkConfiguration)
882			delete(rawMsg, key)
883		case "virtualNetworkType":
884			err = unpopulate(val, &a.VirtualNetworkType)
885			delete(rawMsg, key)
886		}
887		if err != nil {
888			return err
889		}
890	}
891	return nil
892}
893
894// APIManagementServiceBeginApplyNetworkConfigurationUpdatesOptions contains the optional parameters for the APIManagementService.BeginApplyNetworkConfigurationUpdates
895// method.
896type APIManagementServiceBeginApplyNetworkConfigurationUpdatesOptions struct {
897	// Parameters supplied to the Apply Network Configuration operation. If the parameters are empty, all the regions in which the Api Management service is
898	// deployed will be updated sequentially without incurring downtime in the region.
899	Parameters *APIManagementServiceApplyNetworkConfigurationParameters
900}
901
902// APIManagementServiceBeginBackupOptions contains the optional parameters for the APIManagementService.BeginBackup method.
903type APIManagementServiceBeginBackupOptions struct {
904	// placeholder for future optional parameters
905}
906
907// APIManagementServiceBeginCreateOrUpdateOptions contains the optional parameters for the APIManagementService.BeginCreateOrUpdate method.
908type APIManagementServiceBeginCreateOrUpdateOptions struct {
909	// placeholder for future optional parameters
910}
911
912// APIManagementServiceBeginDeleteOptions contains the optional parameters for the APIManagementService.BeginDelete method.
913type APIManagementServiceBeginDeleteOptions struct {
914	// placeholder for future optional parameters
915}
916
917// APIManagementServiceBeginRestoreOptions contains the optional parameters for the APIManagementService.BeginRestore method.
918type APIManagementServiceBeginRestoreOptions struct {
919	// placeholder for future optional parameters
920}
921
922// APIManagementServiceBeginUpdateOptions contains the optional parameters for the APIManagementService.BeginUpdate method.
923type APIManagementServiceBeginUpdateOptions struct {
924	// placeholder for future optional parameters
925}
926
927// APIManagementServiceCheckNameAvailabilityOptions contains the optional parameters for the APIManagementService.CheckNameAvailability method.
928type APIManagementServiceCheckNameAvailabilityOptions struct {
929	// placeholder for future optional parameters
930}
931
932// APIManagementServiceCheckNameAvailabilityParameters - Parameters supplied to the CheckNameAvailability operation.
933type APIManagementServiceCheckNameAvailabilityParameters struct {
934	// REQUIRED; The name to check for availability.
935	Name *string `json:"name,omitempty"`
936}
937
938// APIManagementServiceGetDomainOwnershipIdentifierOptions contains the optional parameters for the APIManagementService.GetDomainOwnershipIdentifier method.
939type APIManagementServiceGetDomainOwnershipIdentifierOptions struct {
940	// placeholder for future optional parameters
941}
942
943// APIManagementServiceGetDomainOwnershipIdentifierResult - Response of the GetDomainOwnershipIdentifier operation.
944type APIManagementServiceGetDomainOwnershipIdentifierResult struct {
945	// READ-ONLY; The domain ownership identifier value.
946	DomainOwnershipIdentifier *string `json:"domainOwnershipIdentifier,omitempty" azure:"ro"`
947}
948
949// APIManagementServiceGetOptions contains the optional parameters for the APIManagementService.Get method.
950type APIManagementServiceGetOptions struct {
951	// placeholder for future optional parameters
952}
953
954// APIManagementServiceGetSsoTokenOptions contains the optional parameters for the APIManagementService.GetSsoToken method.
955type APIManagementServiceGetSsoTokenOptions struct {
956	// placeholder for future optional parameters
957}
958
959// APIManagementServiceGetSsoTokenResult - The response of the GetSsoToken operation.
960type APIManagementServiceGetSsoTokenResult struct {
961	// Redirect URL to the Publisher Portal containing the SSO token.
962	RedirectURI *string `json:"redirectUri,omitempty"`
963}
964
965// APIManagementServiceIdentity - Identity properties of the Api Management service resource.
966type APIManagementServiceIdentity struct {
967	// REQUIRED; The type of identity used for the resource. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set
968	// of user assigned identities. The type 'None' will remove any
969	// identities from the service.
970	Type *ApimIdentityType `json:"type,omitempty"`
971
972	// The list of user identities associated with the resource. The user identity dictionary key references will be ARM resource ids in the form:
973	// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/ providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
974	UserAssignedIdentities map[string]*UserIdentityProperties `json:"userAssignedIdentities,omitempty"`
975
976	// READ-ONLY; The principal id of the identity.
977	PrincipalID *string `json:"principalId,omitempty" azure:"ro"`
978
979	// READ-ONLY; The client tenant id of the identity.
980	TenantID *string `json:"tenantId,omitempty" azure:"ro"`
981}
982
983// MarshalJSON implements the json.Marshaller interface for type APIManagementServiceIdentity.
984func (a APIManagementServiceIdentity) MarshalJSON() ([]byte, error) {
985	objectMap := make(map[string]interface{})
986	populate(objectMap, "principalId", a.PrincipalID)
987	populate(objectMap, "tenantId", a.TenantID)
988	populate(objectMap, "type", a.Type)
989	populate(objectMap, "userAssignedIdentities", a.UserAssignedIdentities)
990	return json.Marshal(objectMap)
991}
992
993// APIManagementServiceListByResourceGroupOptions contains the optional parameters for the APIManagementService.ListByResourceGroup method.
994type APIManagementServiceListByResourceGroupOptions struct {
995	// placeholder for future optional parameters
996}
997
998// APIManagementServiceListOptions contains the optional parameters for the APIManagementService.List method.
999type APIManagementServiceListOptions struct {
1000	// placeholder for future optional parameters
1001}
1002
1003// APIManagementServiceListResult - The response of the List API Management services operation.
1004type APIManagementServiceListResult struct {
1005	// REQUIRED; Result of the List API Management services operation.
1006	Value []*APIManagementServiceResource `json:"value,omitempty"`
1007
1008	// Link to the next set of results. Not empty if Value contains incomplete list of API Management services.
1009	NextLink *string `json:"nextLink,omitempty"`
1010}
1011
1012// MarshalJSON implements the json.Marshaller interface for type APIManagementServiceListResult.
1013func (a APIManagementServiceListResult) MarshalJSON() ([]byte, error) {
1014	objectMap := make(map[string]interface{})
1015	populate(objectMap, "nextLink", a.NextLink)
1016	populate(objectMap, "value", a.Value)
1017	return json.Marshal(objectMap)
1018}
1019
1020// APIManagementServiceNameAvailabilityResult - Response of the CheckNameAvailability operation.
1021type APIManagementServiceNameAvailabilityResult struct {
1022	// Invalid indicates the name provided does not match the resource provider’s naming requirements (incorrect length, unsupported characters, etc.) AlreadyExists
1023	// indicates that the name is already in use
1024	// and is therefore unavailable.
1025	Reason *NameAvailabilityReason `json:"reason,omitempty"`
1026
1027	// READ-ONLY; If reason == invalid, provide the user with the reason why the given name is invalid, and provide the resource naming requirements so that
1028	// the user can select a valid name. If reason == AlreadyExists,
1029	// explain that is already in use, and direct them to select a different name.
1030	Message *string `json:"message,omitempty" azure:"ro"`
1031
1032	// READ-ONLY; True if the name is available and can be used to create a new API Management service; otherwise false.
1033	NameAvailable *bool `json:"nameAvailable,omitempty" azure:"ro"`
1034}
1035
1036// APIManagementServiceProperties - Properties of an API Management service resource description.
1037type APIManagementServiceProperties struct {
1038	APIManagementServiceBaseProperties
1039	// REQUIRED; Publisher email.
1040	PublisherEmail *string `json:"publisherEmail,omitempty"`
1041
1042	// REQUIRED; Publisher name.
1043	PublisherName *string `json:"publisherName,omitempty"`
1044}
1045
1046// MarshalJSON implements the json.Marshaller interface for type APIManagementServiceProperties.
1047func (a APIManagementServiceProperties) MarshalJSON() ([]byte, error) {
1048	objectMap := a.APIManagementServiceBaseProperties.marshalInternal()
1049	populate(objectMap, "publisherEmail", a.PublisherEmail)
1050	populate(objectMap, "publisherName", a.PublisherName)
1051	return json.Marshal(objectMap)
1052}
1053
1054// UnmarshalJSON implements the json.Unmarshaller interface for type APIManagementServiceProperties.
1055func (a *APIManagementServiceProperties) UnmarshalJSON(data []byte) error {
1056	var rawMsg map[string]json.RawMessage
1057	if err := json.Unmarshal(data, &rawMsg); err != nil {
1058		return err
1059	}
1060	for key, val := range rawMsg {
1061		var err error
1062		switch key {
1063		case "publisherEmail":
1064			err = unpopulate(val, &a.PublisherEmail)
1065			delete(rawMsg, key)
1066		case "publisherName":
1067			err = unpopulate(val, &a.PublisherName)
1068			delete(rawMsg, key)
1069		}
1070		if err != nil {
1071			return err
1072		}
1073	}
1074	return a.APIManagementServiceBaseProperties.unmarshalInternal(rawMsg)
1075}
1076
1077// APIManagementServiceResource - A single API Management service resource in List or Get response.
1078type APIManagementServiceResource struct {
1079	ApimResource
1080	// REQUIRED; Resource location.
1081	Location *string `json:"location,omitempty"`
1082
1083	// REQUIRED; Properties of the API Management service.
1084	Properties *APIManagementServiceProperties `json:"properties,omitempty"`
1085
1086	// REQUIRED; SKU properties of the API Management service.
1087	SKU *APIManagementServiceSKUProperties `json:"sku,omitempty"`
1088
1089	// Managed service identity of the Api Management service.
1090	Identity *APIManagementServiceIdentity `json:"identity,omitempty"`
1091
1092	// A list of availability zones denoting where the resource needs to come from.
1093	Zones []*string `json:"zones,omitempty"`
1094
1095	// READ-ONLY; ETag of the resource.
1096	Etag *string `json:"etag,omitempty" azure:"ro"`
1097}
1098
1099// MarshalJSON implements the json.Marshaller interface for type APIManagementServiceResource.
1100func (a APIManagementServiceResource) MarshalJSON() ([]byte, error) {
1101	objectMap := a.ApimResource.marshalInternal()
1102	populate(objectMap, "etag", a.Etag)
1103	populate(objectMap, "identity", a.Identity)
1104	populate(objectMap, "location", a.Location)
1105	populate(objectMap, "properties", a.Properties)
1106	populate(objectMap, "sku", a.SKU)
1107	populate(objectMap, "zones", a.Zones)
1108	return json.Marshal(objectMap)
1109}
1110
1111// APIManagementServiceSKUProperties - API Management service resource SKU properties.
1112type APIManagementServiceSKUProperties struct {
1113	// REQUIRED; Capacity of the SKU (number of deployed units of the SKU). For Consumption SKU capacity must be specified as 0.
1114	Capacity *int32 `json:"capacity,omitempty"`
1115
1116	// REQUIRED; Name of the Sku.
1117	Name *SKUType `json:"name,omitempty"`
1118}
1119
1120// APIManagementServiceSKUsListAvailableServiceSKUsOptions contains the optional parameters for the APIManagementServiceSKUs.ListAvailableServiceSKUs method.
1121type APIManagementServiceSKUsListAvailableServiceSKUsOptions struct {
1122	// placeholder for future optional parameters
1123}
1124
1125// APIManagementServiceUpdateParameters - Parameter supplied to Update Api Management Service.
1126type APIManagementServiceUpdateParameters struct {
1127	ApimResource
1128	// Managed service identity of the Api Management service.
1129	Identity *APIManagementServiceIdentity `json:"identity,omitempty"`
1130
1131	// Properties of the API Management service.
1132	Properties *APIManagementServiceUpdateProperties `json:"properties,omitempty"`
1133
1134	// SKU properties of the API Management service.
1135	SKU *APIManagementServiceSKUProperties `json:"sku,omitempty"`
1136
1137	// READ-ONLY; ETag of the resource.
1138	Etag *string `json:"etag,omitempty" azure:"ro"`
1139}
1140
1141// MarshalJSON implements the json.Marshaller interface for type APIManagementServiceUpdateParameters.
1142func (a APIManagementServiceUpdateParameters) MarshalJSON() ([]byte, error) {
1143	objectMap := a.ApimResource.marshalInternal()
1144	populate(objectMap, "etag", a.Etag)
1145	populate(objectMap, "identity", a.Identity)
1146	populate(objectMap, "properties", a.Properties)
1147	populate(objectMap, "sku", a.SKU)
1148	return json.Marshal(objectMap)
1149}
1150
1151// APIManagementServiceUpdateProperties - Properties of an API Management service resource description.
1152type APIManagementServiceUpdateProperties struct {
1153	APIManagementServiceBaseProperties
1154	// Publisher email.
1155	PublisherEmail *string `json:"publisherEmail,omitempty"`
1156
1157	// Publisher name.
1158	PublisherName *string `json:"publisherName,omitempty"`
1159}
1160
1161// MarshalJSON implements the json.Marshaller interface for type APIManagementServiceUpdateProperties.
1162func (a APIManagementServiceUpdateProperties) MarshalJSON() ([]byte, error) {
1163	objectMap := a.APIManagementServiceBaseProperties.marshalInternal()
1164	populate(objectMap, "publisherEmail", a.PublisherEmail)
1165	populate(objectMap, "publisherName", a.PublisherName)
1166	return json.Marshal(objectMap)
1167}
1168
1169// UnmarshalJSON implements the json.Unmarshaller interface for type APIManagementServiceUpdateProperties.
1170func (a *APIManagementServiceUpdateProperties) UnmarshalJSON(data []byte) error {
1171	var rawMsg map[string]json.RawMessage
1172	if err := json.Unmarshal(data, &rawMsg); err != nil {
1173		return err
1174	}
1175	for key, val := range rawMsg {
1176		var err error
1177		switch key {
1178		case "publisherEmail":
1179			err = unpopulate(val, &a.PublisherEmail)
1180			delete(rawMsg, key)
1181		case "publisherName":
1182			err = unpopulate(val, &a.PublisherName)
1183			delete(rawMsg, key)
1184		}
1185		if err != nil {
1186			return err
1187		}
1188	}
1189	return a.APIManagementServiceBaseProperties.unmarshalInternal(rawMsg)
1190}
1191
1192// APIOperationCreateOrUpdateOptions contains the optional parameters for the APIOperation.CreateOrUpdate method.
1193type APIOperationCreateOrUpdateOptions struct {
1194	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
1195	IfMatch *string
1196}
1197
1198// APIOperationDeleteOptions contains the optional parameters for the APIOperation.Delete method.
1199type APIOperationDeleteOptions struct {
1200	// placeholder for future optional parameters
1201}
1202
1203// APIOperationGetEntityTagOptions contains the optional parameters for the APIOperation.GetEntityTag method.
1204type APIOperationGetEntityTagOptions struct {
1205	// placeholder for future optional parameters
1206}
1207
1208// APIOperationGetOptions contains the optional parameters for the APIOperation.Get method.
1209type APIOperationGetOptions struct {
1210	// placeholder for future optional parameters
1211}
1212
1213// APIOperationListByAPIOptions contains the optional parameters for the APIOperation.ListByAPI method.
1214type APIOperationListByAPIOptions struct {
1215	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
1216	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| displayName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
1217	// endswith |</br>| method | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| description | filter | ge, le, eq, ne,
1218	// gt, lt | substringof, contains, startswith, endswith |</br>| urlTemplate | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith
1219	// |</br>
1220	Filter *string
1221	// Number of records to skip.
1222	Skip *int32
1223	// Include tags in the response.
1224	Tags *string
1225	// Number of records to return.
1226	Top *int32
1227}
1228
1229// APIOperationPolicyCreateOrUpdateOptions contains the optional parameters for the APIOperationPolicy.CreateOrUpdate method.
1230type APIOperationPolicyCreateOrUpdateOptions struct {
1231	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
1232	IfMatch *string
1233}
1234
1235// APIOperationPolicyDeleteOptions contains the optional parameters for the APIOperationPolicy.Delete method.
1236type APIOperationPolicyDeleteOptions struct {
1237	// placeholder for future optional parameters
1238}
1239
1240// APIOperationPolicyGetEntityTagOptions contains the optional parameters for the APIOperationPolicy.GetEntityTag method.
1241type APIOperationPolicyGetEntityTagOptions struct {
1242	// placeholder for future optional parameters
1243}
1244
1245// APIOperationPolicyGetOptions contains the optional parameters for the APIOperationPolicy.Get method.
1246type APIOperationPolicyGetOptions struct {
1247	// Policy Export Format.
1248	Format *PolicyExportFormat
1249}
1250
1251// APIOperationPolicyListByOperationOptions contains the optional parameters for the APIOperationPolicy.ListByOperation method.
1252type APIOperationPolicyListByOperationOptions struct {
1253	// placeholder for future optional parameters
1254}
1255
1256// APIOperationUpdateOptions contains the optional parameters for the APIOperation.Update method.
1257type APIOperationUpdateOptions struct {
1258	// placeholder for future optional parameters
1259}
1260
1261// APIPolicyCreateOrUpdateOptions contains the optional parameters for the APIPolicy.CreateOrUpdate method.
1262type APIPolicyCreateOrUpdateOptions struct {
1263	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
1264	IfMatch *string
1265}
1266
1267// APIPolicyDeleteOptions contains the optional parameters for the APIPolicy.Delete method.
1268type APIPolicyDeleteOptions struct {
1269	// placeholder for future optional parameters
1270}
1271
1272// APIPolicyGetEntityTagOptions contains the optional parameters for the APIPolicy.GetEntityTag method.
1273type APIPolicyGetEntityTagOptions struct {
1274	// placeholder for future optional parameters
1275}
1276
1277// APIPolicyGetOptions contains the optional parameters for the APIPolicy.Get method.
1278type APIPolicyGetOptions struct {
1279	// Policy Export Format.
1280	Format *PolicyExportFormat
1281}
1282
1283// APIPolicyListByAPIOptions contains the optional parameters for the APIPolicy.ListByAPI method.
1284type APIPolicyListByAPIOptions struct {
1285	// placeholder for future optional parameters
1286}
1287
1288// APIProductListByApisOptions contains the optional parameters for the APIProduct.ListByApis method.
1289type APIProductListByApisOptions struct {
1290	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| displayName | filter
1291	// | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>
1292	Filter *string
1293	// Number of records to skip.
1294	Skip *int32
1295	// Number of records to return.
1296	Top *int32
1297}
1298
1299// APIReleaseCollection - Paged ApiRelease list representation.
1300type APIReleaseCollection struct {
1301	// Total record count number across all pages.
1302	Count *int64 `json:"count,omitempty"`
1303
1304	// READ-ONLY; Next page link if any.
1305	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
1306
1307	// READ-ONLY; Page values.
1308	Value []*APIReleaseContract `json:"value,omitempty" azure:"ro"`
1309}
1310
1311// MarshalJSON implements the json.Marshaller interface for type APIReleaseCollection.
1312func (a APIReleaseCollection) MarshalJSON() ([]byte, error) {
1313	objectMap := make(map[string]interface{})
1314	populate(objectMap, "count", a.Count)
1315	populate(objectMap, "nextLink", a.NextLink)
1316	populate(objectMap, "value", a.Value)
1317	return json.Marshal(objectMap)
1318}
1319
1320// APIReleaseContract - ApiRelease details.
1321type APIReleaseContract struct {
1322	Resource
1323	// ApiRelease entity contract properties.
1324	Properties *APIReleaseContractProperties `json:"properties,omitempty"`
1325}
1326
1327// MarshalJSON implements the json.Marshaller interface for type APIReleaseContract.
1328func (a APIReleaseContract) MarshalJSON() ([]byte, error) {
1329	objectMap := a.Resource.marshalInternal()
1330	populate(objectMap, "properties", a.Properties)
1331	return json.Marshal(objectMap)
1332}
1333
1334// APIReleaseContractProperties - API Release details
1335type APIReleaseContractProperties struct {
1336	// Identifier of the API the release belongs to.
1337	APIID *string `json:"apiId,omitempty"`
1338
1339	// Release Notes
1340	Notes *string `json:"notes,omitempty"`
1341
1342	// READ-ONLY; The time the API was released. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
1343	CreatedDateTime *time.Time `json:"createdDateTime,omitempty" azure:"ro"`
1344
1345	// READ-ONLY; The time the API release was updated.
1346	UpdatedDateTime *time.Time `json:"updatedDateTime,omitempty" azure:"ro"`
1347}
1348
1349// MarshalJSON implements the json.Marshaller interface for type APIReleaseContractProperties.
1350func (a APIReleaseContractProperties) MarshalJSON() ([]byte, error) {
1351	objectMap := make(map[string]interface{})
1352	populate(objectMap, "apiId", a.APIID)
1353	populate(objectMap, "createdDateTime", (*timeRFC3339)(a.CreatedDateTime))
1354	populate(objectMap, "notes", a.Notes)
1355	populate(objectMap, "updatedDateTime", (*timeRFC3339)(a.UpdatedDateTime))
1356	return json.Marshal(objectMap)
1357}
1358
1359// UnmarshalJSON implements the json.Unmarshaller interface for type APIReleaseContractProperties.
1360func (a *APIReleaseContractProperties) UnmarshalJSON(data []byte) error {
1361	var rawMsg map[string]json.RawMessage
1362	if err := json.Unmarshal(data, &rawMsg); err != nil {
1363		return err
1364	}
1365	for key, val := range rawMsg {
1366		var err error
1367		switch key {
1368		case "apiId":
1369			err = unpopulate(val, &a.APIID)
1370			delete(rawMsg, key)
1371		case "createdDateTime":
1372			var aux timeRFC3339
1373			err = unpopulate(val, &aux)
1374			a.CreatedDateTime = (*time.Time)(&aux)
1375			delete(rawMsg, key)
1376		case "notes":
1377			err = unpopulate(val, &a.Notes)
1378			delete(rawMsg, key)
1379		case "updatedDateTime":
1380			var aux timeRFC3339
1381			err = unpopulate(val, &aux)
1382			a.UpdatedDateTime = (*time.Time)(&aux)
1383			delete(rawMsg, key)
1384		}
1385		if err != nil {
1386			return err
1387		}
1388	}
1389	return nil
1390}
1391
1392// APIReleaseCreateOrUpdateOptions contains the optional parameters for the APIRelease.CreateOrUpdate method.
1393type APIReleaseCreateOrUpdateOptions struct {
1394	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
1395	IfMatch *string
1396}
1397
1398// APIReleaseDeleteOptions contains the optional parameters for the APIRelease.Delete method.
1399type APIReleaseDeleteOptions struct {
1400	// placeholder for future optional parameters
1401}
1402
1403// APIReleaseGetEntityTagOptions contains the optional parameters for the APIRelease.GetEntityTag method.
1404type APIReleaseGetEntityTagOptions struct {
1405	// placeholder for future optional parameters
1406}
1407
1408// APIReleaseGetOptions contains the optional parameters for the APIRelease.Get method.
1409type APIReleaseGetOptions struct {
1410	// placeholder for future optional parameters
1411}
1412
1413// APIReleaseListByServiceOptions contains the optional parameters for the APIRelease.ListByService method.
1414type APIReleaseListByServiceOptions struct {
1415	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| notes | filter | ge,
1416	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>
1417	Filter *string
1418	// Number of records to skip.
1419	Skip *int32
1420	// Number of records to return.
1421	Top *int32
1422}
1423
1424// APIReleaseUpdateOptions contains the optional parameters for the APIRelease.Update method.
1425type APIReleaseUpdateOptions struct {
1426	// placeholder for future optional parameters
1427}
1428
1429// APIRevisionCollection - Paged Api Revision list representation.
1430type APIRevisionCollection struct {
1431	// Total record count number across all pages.
1432	Count *int64 `json:"count,omitempty"`
1433
1434	// READ-ONLY; Next page link if any.
1435	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
1436
1437	// READ-ONLY; Page values.
1438	Value []*APIRevisionContract `json:"value,omitempty" azure:"ro"`
1439}
1440
1441// MarshalJSON implements the json.Marshaller interface for type APIRevisionCollection.
1442func (a APIRevisionCollection) MarshalJSON() ([]byte, error) {
1443	objectMap := make(map[string]interface{})
1444	populate(objectMap, "count", a.Count)
1445	populate(objectMap, "nextLink", a.NextLink)
1446	populate(objectMap, "value", a.Value)
1447	return json.Marshal(objectMap)
1448}
1449
1450// APIRevisionContract - Summary of revision metadata.
1451type APIRevisionContract struct {
1452	// READ-ONLY; Identifier of the API Revision.
1453	APIID *string `json:"apiId,omitempty" azure:"ro"`
1454
1455	// READ-ONLY; Revision number of API.
1456	APIRevision *string `json:"apiRevision,omitempty" azure:"ro"`
1457
1458	// READ-ONLY; The time the API Revision was created. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
1459	CreatedDateTime *time.Time `json:"createdDateTime,omitempty" azure:"ro"`
1460
1461	// READ-ONLY; Description of the API Revision.
1462	Description *string `json:"description,omitempty" azure:"ro"`
1463
1464	// READ-ONLY; Indicates if API revision is accessible via the gateway.
1465	IsCurrent *bool `json:"isCurrent,omitempty" azure:"ro"`
1466
1467	// READ-ONLY; Indicates if API revision is the current api revision.
1468	IsOnline *bool `json:"isOnline,omitempty" azure:"ro"`
1469
1470	// READ-ONLY; Gateway URL for accessing the non-current API Revision.
1471	PrivateURL *string `json:"privateUrl,omitempty" azure:"ro"`
1472
1473	// READ-ONLY; The time the API Revision were updated. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
1474	UpdatedDateTime *time.Time `json:"updatedDateTime,omitempty" azure:"ro"`
1475}
1476
1477// MarshalJSON implements the json.Marshaller interface for type APIRevisionContract.
1478func (a APIRevisionContract) MarshalJSON() ([]byte, error) {
1479	objectMap := make(map[string]interface{})
1480	populate(objectMap, "apiId", a.APIID)
1481	populate(objectMap, "apiRevision", a.APIRevision)
1482	populate(objectMap, "createdDateTime", (*timeRFC3339)(a.CreatedDateTime))
1483	populate(objectMap, "description", a.Description)
1484	populate(objectMap, "isCurrent", a.IsCurrent)
1485	populate(objectMap, "isOnline", a.IsOnline)
1486	populate(objectMap, "privateUrl", a.PrivateURL)
1487	populate(objectMap, "updatedDateTime", (*timeRFC3339)(a.UpdatedDateTime))
1488	return json.Marshal(objectMap)
1489}
1490
1491// UnmarshalJSON implements the json.Unmarshaller interface for type APIRevisionContract.
1492func (a *APIRevisionContract) UnmarshalJSON(data []byte) error {
1493	var rawMsg map[string]json.RawMessage
1494	if err := json.Unmarshal(data, &rawMsg); err != nil {
1495		return err
1496	}
1497	for key, val := range rawMsg {
1498		var err error
1499		switch key {
1500		case "apiId":
1501			err = unpopulate(val, &a.APIID)
1502			delete(rawMsg, key)
1503		case "apiRevision":
1504			err = unpopulate(val, &a.APIRevision)
1505			delete(rawMsg, key)
1506		case "createdDateTime":
1507			var aux timeRFC3339
1508			err = unpopulate(val, &aux)
1509			a.CreatedDateTime = (*time.Time)(&aux)
1510			delete(rawMsg, key)
1511		case "description":
1512			err = unpopulate(val, &a.Description)
1513			delete(rawMsg, key)
1514		case "isCurrent":
1515			err = unpopulate(val, &a.IsCurrent)
1516			delete(rawMsg, key)
1517		case "isOnline":
1518			err = unpopulate(val, &a.IsOnline)
1519			delete(rawMsg, key)
1520		case "privateUrl":
1521			err = unpopulate(val, &a.PrivateURL)
1522			delete(rawMsg, key)
1523		case "updatedDateTime":
1524			var aux timeRFC3339
1525			err = unpopulate(val, &aux)
1526			a.UpdatedDateTime = (*time.Time)(&aux)
1527			delete(rawMsg, key)
1528		}
1529		if err != nil {
1530			return err
1531		}
1532	}
1533	return nil
1534}
1535
1536// APIRevisionInfoContract - Object used to create an API Revision or Version based on an existing API Revision
1537type APIRevisionInfoContract struct {
1538	// Description of new API Revision.
1539	APIRevisionDescription *string `json:"apiRevisionDescription,omitempty"`
1540
1541	// Version identifier for the new API Version.
1542	APIVersionName *string `json:"apiVersionName,omitempty"`
1543
1544	// Version set details
1545	APIVersionSet *APIVersionSetContractDetails `json:"apiVersionSet,omitempty"`
1546
1547	// Resource identifier of API to be used to create the revision from.
1548	SourceAPIID *string `json:"sourceApiId,omitempty"`
1549}
1550
1551// APIRevisionListByServiceOptions contains the optional parameters for the APIRevision.ListByService method.
1552type APIRevisionListByServiceOptions struct {
1553	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| apiRevision | filter
1554	// | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>
1555	Filter *string
1556	// Number of records to skip.
1557	Skip *int32
1558	// Number of records to return.
1559	Top *int32
1560}
1561
1562// APISchemaBeginCreateOrUpdateOptions contains the optional parameters for the APISchema.BeginCreateOrUpdate method.
1563type APISchemaBeginCreateOrUpdateOptions struct {
1564	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
1565	IfMatch *string
1566}
1567
1568// APISchemaDeleteOptions contains the optional parameters for the APISchema.Delete method.
1569type APISchemaDeleteOptions struct {
1570	// If true removes all references to the schema before deleting it.
1571	Force *bool
1572}
1573
1574// APISchemaGetEntityTagOptions contains the optional parameters for the APISchema.GetEntityTag method.
1575type APISchemaGetEntityTagOptions struct {
1576	// placeholder for future optional parameters
1577}
1578
1579// APISchemaGetOptions contains the optional parameters for the APISchema.Get method.
1580type APISchemaGetOptions struct {
1581	// placeholder for future optional parameters
1582}
1583
1584// APISchemaListByAPIOptions contains the optional parameters for the APISchema.ListByAPI method.
1585type APISchemaListByAPIOptions struct {
1586	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| contentType | filter
1587	// | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>
1588	Filter *string
1589	// Number of records to skip.
1590	Skip *int32
1591	// Number of records to return.
1592	Top *int32
1593}
1594
1595// APITagDescriptionCreateOrUpdateOptions contains the optional parameters for the APITagDescription.CreateOrUpdate method.
1596type APITagDescriptionCreateOrUpdateOptions struct {
1597	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
1598	IfMatch *string
1599}
1600
1601// APITagDescriptionDeleteOptions contains the optional parameters for the APITagDescription.Delete method.
1602type APITagDescriptionDeleteOptions struct {
1603	// placeholder for future optional parameters
1604}
1605
1606// APITagDescriptionGetEntityTagOptions contains the optional parameters for the APITagDescription.GetEntityTag method.
1607type APITagDescriptionGetEntityTagOptions struct {
1608	// placeholder for future optional parameters
1609}
1610
1611// APITagDescriptionGetOptions contains the optional parameters for the APITagDescription.Get method.
1612type APITagDescriptionGetOptions struct {
1613	// placeholder for future optional parameters
1614}
1615
1616// APITagDescriptionListByServiceOptions contains the optional parameters for the APITagDescription.ListByService method.
1617type APITagDescriptionListByServiceOptions struct {
1618	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| displayName | filter
1619	// | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| name | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
1620	// endswith |</br>
1621	Filter *string
1622	// Number of records to skip.
1623	Skip *int32
1624	// Number of records to return.
1625	Top *int32
1626}
1627
1628// APITagResourceContractProperties - API contract properties for the Tag Resources.
1629type APITagResourceContractProperties struct {
1630	APIEntityBaseContract
1631	// API identifier in the form /apis/{apiId}.
1632	ID *string `json:"id,omitempty"`
1633
1634	// API name.
1635	Name *string `json:"name,omitempty"`
1636
1637	// Relative URL uniquely identifying this API and all of its resource paths within the API Management service instance. It is appended to the API endpoint
1638	// base URL specified during the service instance
1639	// creation to form a public URL for this API.
1640	Path *string `json:"path,omitempty"`
1641
1642	// Describes on which protocols the operations in this API can be invoked.
1643	Protocols []*Protocol `json:"protocols,omitempty"`
1644
1645	// Absolute URL of the backend service implementing this API.
1646	ServiceURL *string `json:"serviceUrl,omitempty"`
1647}
1648
1649// MarshalJSON implements the json.Marshaller interface for type APITagResourceContractProperties.
1650func (a APITagResourceContractProperties) MarshalJSON() ([]byte, error) {
1651	objectMap := a.APIEntityBaseContract.marshalInternal()
1652	populate(objectMap, "id", a.ID)
1653	populate(objectMap, "name", a.Name)
1654	populate(objectMap, "path", a.Path)
1655	populate(objectMap, "protocols", a.Protocols)
1656	populate(objectMap, "serviceUrl", a.ServiceURL)
1657	return json.Marshal(objectMap)
1658}
1659
1660// APIUpdateContract - API update contract details.
1661type APIUpdateContract struct {
1662	// Properties of the API entity that can be updated.
1663	Properties *APIContractUpdateProperties `json:"properties,omitempty"`
1664}
1665
1666// MarshalJSON implements the json.Marshaller interface for type APIUpdateContract.
1667func (a APIUpdateContract) MarshalJSON() ([]byte, error) {
1668	objectMap := make(map[string]interface{})
1669	populate(objectMap, "properties", a.Properties)
1670	return json.Marshal(objectMap)
1671}
1672
1673// APIUpdateOptions contains the optional parameters for the API.Update method.
1674type APIUpdateOptions struct {
1675	// placeholder for future optional parameters
1676}
1677
1678// APIVersionConstraint - Control Plane Apis version constraint for the API Management service.
1679type APIVersionConstraint struct {
1680	// Limit control plane API calls to API Management service with version equal to or newer than this value.
1681	MinAPIVersion *string `json:"minApiVersion,omitempty"`
1682}
1683
1684// APIVersionSetCollection - Paged Api Version Set list representation.
1685type APIVersionSetCollection struct {
1686	// Total record count number across all pages.
1687	Count *int64 `json:"count,omitempty"`
1688
1689	// Next page link if any.
1690	NextLink *string `json:"nextLink,omitempty"`
1691
1692	// Page values.
1693	Value []*APIVersionSetContract `json:"value,omitempty"`
1694}
1695
1696// MarshalJSON implements the json.Marshaller interface for type APIVersionSetCollection.
1697func (a APIVersionSetCollection) MarshalJSON() ([]byte, error) {
1698	objectMap := make(map[string]interface{})
1699	populate(objectMap, "count", a.Count)
1700	populate(objectMap, "nextLink", a.NextLink)
1701	populate(objectMap, "value", a.Value)
1702	return json.Marshal(objectMap)
1703}
1704
1705// APIVersionSetContract - Api Version Set Contract details.
1706type APIVersionSetContract struct {
1707	Resource
1708	// Api VersionSet contract properties.
1709	Properties *APIVersionSetContractProperties `json:"properties,omitempty"`
1710}
1711
1712// MarshalJSON implements the json.Marshaller interface for type APIVersionSetContract.
1713func (a APIVersionSetContract) MarshalJSON() ([]byte, error) {
1714	objectMap := a.Resource.marshalInternal()
1715	populate(objectMap, "properties", a.Properties)
1716	return json.Marshal(objectMap)
1717}
1718
1719// APIVersionSetContractDetails - An API Version Set contains the common configuration for a set of API Versions relating
1720type APIVersionSetContractDetails struct {
1721	// Description of API Version Set.
1722	Description *string `json:"description,omitempty"`
1723
1724	// Identifier for existing API Version Set. Omit this value to create a new Version Set.
1725	ID *string `json:"id,omitempty"`
1726
1727	// The display Name of the API Version Set.
1728	Name *string `json:"name,omitempty"`
1729
1730	// Name of HTTP header parameter that indicates the API Version if versioningScheme is set to header.
1731	VersionHeaderName *string `json:"versionHeaderName,omitempty"`
1732
1733	// Name of query parameter that indicates the API Version if versioningScheme is set to query.
1734	VersionQueryName *string `json:"versionQueryName,omitempty"`
1735
1736	// An value that determines where the API Version identifier will be located in a HTTP request.
1737	VersioningScheme *APIVersionSetContractDetailsVersioningScheme `json:"versioningScheme,omitempty"`
1738}
1739
1740// APIVersionSetContractProperties - Properties of an API Version Set.
1741type APIVersionSetContractProperties struct {
1742	APIVersionSetEntityBase
1743	// REQUIRED; Name of API Version Set
1744	DisplayName *string `json:"displayName,omitempty"`
1745
1746	// REQUIRED; An value that determines where the API Version identifier will be located in a HTTP request.
1747	VersioningScheme *VersioningScheme `json:"versioningScheme,omitempty"`
1748}
1749
1750// APIVersionSetCreateOrUpdateOptions contains the optional parameters for the APIVersionSet.CreateOrUpdate method.
1751type APIVersionSetCreateOrUpdateOptions struct {
1752	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
1753	IfMatch *string
1754}
1755
1756// APIVersionSetDeleteOptions contains the optional parameters for the APIVersionSet.Delete method.
1757type APIVersionSetDeleteOptions struct {
1758	// placeholder for future optional parameters
1759}
1760
1761// APIVersionSetEntityBase - Api Version set base parameters
1762type APIVersionSetEntityBase struct {
1763	// Description of API Version Set.
1764	Description *string `json:"description,omitempty"`
1765
1766	// Name of HTTP header parameter that indicates the API Version if versioningScheme is set to header.
1767	VersionHeaderName *string `json:"versionHeaderName,omitempty"`
1768
1769	// Name of query parameter that indicates the API Version if versioningScheme is set to query.
1770	VersionQueryName *string `json:"versionQueryName,omitempty"`
1771}
1772
1773// APIVersionSetGetEntityTagOptions contains the optional parameters for the APIVersionSet.GetEntityTag method.
1774type APIVersionSetGetEntityTagOptions struct {
1775	// placeholder for future optional parameters
1776}
1777
1778// APIVersionSetGetOptions contains the optional parameters for the APIVersionSet.Get method.
1779type APIVersionSetGetOptions struct {
1780	// placeholder for future optional parameters
1781}
1782
1783// APIVersionSetListByServiceOptions contains the optional parameters for the APIVersionSet.ListByService method.
1784type APIVersionSetListByServiceOptions struct {
1785	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>
1786	Filter *string
1787	// Number of records to skip.
1788	Skip *int32
1789	// Number of records to return.
1790	Top *int32
1791}
1792
1793// APIVersionSetUpdateOptions contains the optional parameters for the APIVersionSet.Update method.
1794type APIVersionSetUpdateOptions struct {
1795	// placeholder for future optional parameters
1796}
1797
1798// APIVersionSetUpdateParameters - Parameters to update or create an Api Version Set Contract.
1799type APIVersionSetUpdateParameters struct {
1800	// Parameters to update or create an Api Version Set Contract.
1801	Properties *APIVersionSetUpdateParametersProperties `json:"properties,omitempty"`
1802}
1803
1804// MarshalJSON implements the json.Marshaller interface for type APIVersionSetUpdateParameters.
1805func (a APIVersionSetUpdateParameters) MarshalJSON() ([]byte, error) {
1806	objectMap := make(map[string]interface{})
1807	populate(objectMap, "properties", a.Properties)
1808	return json.Marshal(objectMap)
1809}
1810
1811// APIVersionSetUpdateParametersProperties - Properties used to create or update an API Version Set.
1812type APIVersionSetUpdateParametersProperties struct {
1813	APIVersionSetEntityBase
1814	// Name of API Version Set
1815	DisplayName *string `json:"displayName,omitempty"`
1816
1817	// An value that determines where the API Version identifier will be located in a HTTP request.
1818	VersioningScheme *VersioningScheme `json:"versioningScheme,omitempty"`
1819}
1820
1821// AccessInformationCollection - Paged AccessInformation list representation.
1822type AccessInformationCollection struct {
1823	// Total record count number across all pages.
1824	Count *int64 `json:"count,omitempty"`
1825
1826	// READ-ONLY; Next page link if any.
1827	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
1828
1829	// READ-ONLY; Page values.
1830	Value []*AccessInformationContract `json:"value,omitempty" azure:"ro"`
1831}
1832
1833// MarshalJSON implements the json.Marshaller interface for type AccessInformationCollection.
1834func (a AccessInformationCollection) MarshalJSON() ([]byte, error) {
1835	objectMap := make(map[string]interface{})
1836	populate(objectMap, "count", a.Count)
1837	populate(objectMap, "nextLink", a.NextLink)
1838	populate(objectMap, "value", a.Value)
1839	return json.Marshal(objectMap)
1840}
1841
1842// AccessInformationContract - Tenant Settings.
1843type AccessInformationContract struct {
1844	Resource
1845	// AccessInformation entity contract properties.
1846	Properties *AccessInformationContractProperties `json:"properties,omitempty"`
1847}
1848
1849// MarshalJSON implements the json.Marshaller interface for type AccessInformationContract.
1850func (a AccessInformationContract) MarshalJSON() ([]byte, error) {
1851	objectMap := a.Resource.marshalInternal()
1852	populate(objectMap, "properties", a.Properties)
1853	return json.Marshal(objectMap)
1854}
1855
1856// AccessInformationContractProperties - Tenant access information contract of the API Management service.
1857type AccessInformationContractProperties struct {
1858	// Determines whether direct access is enabled.
1859	Enabled *bool `json:"enabled,omitempty"`
1860
1861	// Access Information type ('access' or 'gitAccess')
1862	ID *string `json:"id,omitempty"`
1863
1864	// Principal (User) Identifier.
1865	PrincipalID *string `json:"principalId,omitempty"`
1866}
1867
1868// AccessInformationCreateParameterProperties - Tenant access information update parameters of the API Management service
1869type AccessInformationCreateParameterProperties struct {
1870	// Determines whether direct access is enabled.
1871	Enabled *bool `json:"enabled,omitempty"`
1872
1873	// Primary access key. This property will not be filled on 'GET' operations! Use '/listSecrets' POST request to get the value.
1874	PrimaryKey *string `json:"primaryKey,omitempty"`
1875
1876	// Principal (User) Identifier.
1877	PrincipalID *string `json:"principalId,omitempty"`
1878
1879	// Secondary access key. This property will not be filled on 'GET' operations! Use '/listSecrets' POST request to get the value.
1880	SecondaryKey *string `json:"secondaryKey,omitempty"`
1881}
1882
1883// AccessInformationCreateParameters - Tenant access information update parameters.
1884type AccessInformationCreateParameters struct {
1885	// Tenant access information update parameter properties.
1886	Properties *AccessInformationCreateParameterProperties `json:"properties,omitempty"`
1887}
1888
1889// AccessInformationSecretsContract - Tenant access information contract of the API Management service.
1890type AccessInformationSecretsContract struct {
1891	// Determines whether direct access is enabled.
1892	Enabled *bool `json:"enabled,omitempty"`
1893
1894	// Access Information type ('access' or 'gitAccess')
1895	ID *string `json:"id,omitempty"`
1896
1897	// Primary access key. This property will not be filled on 'GET' operations! Use '/listSecrets' POST request to get the value.
1898	PrimaryKey *string `json:"primaryKey,omitempty"`
1899
1900	// Principal (User) Identifier.
1901	PrincipalID *string `json:"principalId,omitempty"`
1902
1903	// Secondary access key. This property will not be filled on 'GET' operations! Use '/listSecrets' POST request to get the value.
1904	SecondaryKey *string `json:"secondaryKey,omitempty"`
1905}
1906
1907// AccessInformationUpdateParameterProperties - Tenant access information update parameters of the API Management service
1908type AccessInformationUpdateParameterProperties struct {
1909	// Determines whether direct access is enabled.
1910	Enabled *bool `json:"enabled,omitempty"`
1911}
1912
1913// AccessInformationUpdateParameters - Tenant access information update parameters.
1914type AccessInformationUpdateParameters struct {
1915	// Tenant access information update parameter properties.
1916	Properties *AccessInformationUpdateParameterProperties `json:"properties,omitempty"`
1917}
1918
1919// MarshalJSON implements the json.Marshaller interface for type AccessInformationUpdateParameters.
1920func (a AccessInformationUpdateParameters) MarshalJSON() ([]byte, error) {
1921	objectMap := make(map[string]interface{})
1922	populate(objectMap, "properties", a.Properties)
1923	return json.Marshal(objectMap)
1924}
1925
1926// AdditionalLocation - Description of an additional API Management resource location.
1927type AdditionalLocation struct {
1928	// REQUIRED; The location name of the additional region among Azure Data center regions.
1929	Location *string `json:"location,omitempty"`
1930
1931	// REQUIRED; SKU properties of the API Management service.
1932	SKU *APIManagementServiceSKUProperties `json:"sku,omitempty"`
1933
1934	// Property only valid for an Api Management service deployed in multiple locations. This can be used to disable the gateway in this additional location.
1935	DisableGateway *bool `json:"disableGateway,omitempty"`
1936
1937	// Virtual network configuration for the location.
1938	VirtualNetworkConfiguration *VirtualNetworkConfiguration `json:"virtualNetworkConfiguration,omitempty"`
1939
1940	// A list of availability zones denoting where the resource needs to come from.
1941	Zones []*string `json:"zones,omitempty"`
1942
1943	// READ-ONLY; Gateway URL of the API Management service in the Region.
1944	GatewayRegionalURL *string `json:"gatewayRegionalUrl,omitempty" azure:"ro"`
1945
1946	// READ-ONLY; Private Static Load Balanced IP addresses of the API Management service which is deployed in an Internal Virtual Network in a particular additional
1947	// location. Available only for Basic, Standard,
1948	// Premium and Isolated SKU.
1949	PrivateIPAddresses []*string `json:"privateIPAddresses,omitempty" azure:"ro"`
1950
1951	// READ-ONLY; Public Static Load Balanced IP addresses of the API Management service in the additional location. Available only for Basic, Standard, Premium
1952	// and Isolated SKU.
1953	PublicIPAddresses []*string `json:"publicIPAddresses,omitempty" azure:"ro"`
1954}
1955
1956// MarshalJSON implements the json.Marshaller interface for type AdditionalLocation.
1957func (a AdditionalLocation) MarshalJSON() ([]byte, error) {
1958	objectMap := make(map[string]interface{})
1959	populate(objectMap, "disableGateway", a.DisableGateway)
1960	populate(objectMap, "gatewayRegionalUrl", a.GatewayRegionalURL)
1961	populate(objectMap, "location", a.Location)
1962	populate(objectMap, "privateIPAddresses", a.PrivateIPAddresses)
1963	populate(objectMap, "publicIPAddresses", a.PublicIPAddresses)
1964	populate(objectMap, "sku", a.SKU)
1965	populate(objectMap, "virtualNetworkConfiguration", a.VirtualNetworkConfiguration)
1966	populate(objectMap, "zones", a.Zones)
1967	return json.Marshal(objectMap)
1968}
1969
1970// ApimResource - The Resource definition.
1971type ApimResource struct {
1972	// Resource tags.
1973	Tags map[string]*string `json:"tags,omitempty"`
1974
1975	// READ-ONLY; Resource ID.
1976	ID *string `json:"id,omitempty" azure:"ro"`
1977
1978	// READ-ONLY; Resource name.
1979	Name *string `json:"name,omitempty" azure:"ro"`
1980
1981	// READ-ONLY; Resource type for API Management resource is set to Microsoft.ApiManagement.
1982	Type *string `json:"type,omitempty" azure:"ro"`
1983}
1984
1985// MarshalJSON implements the json.Marshaller interface for type ApimResource.
1986func (a ApimResource) MarshalJSON() ([]byte, error) {
1987	objectMap := a.marshalInternal()
1988	return json.Marshal(objectMap)
1989}
1990
1991func (a ApimResource) marshalInternal() map[string]interface{} {
1992	objectMap := make(map[string]interface{})
1993	populate(objectMap, "id", a.ID)
1994	populate(objectMap, "name", a.Name)
1995	populate(objectMap, "tags", a.Tags)
1996	populate(objectMap, "type", a.Type)
1997	return objectMap
1998}
1999
2000// AssociationContract - Association entity details.
2001type AssociationContract struct {
2002	Resource
2003	// Association entity contract properties.
2004	Properties *AssociationContractProperties `json:"properties,omitempty"`
2005}
2006
2007// MarshalJSON implements the json.Marshaller interface for type AssociationContract.
2008func (a AssociationContract) MarshalJSON() ([]byte, error) {
2009	objectMap := a.Resource.marshalInternal()
2010	populate(objectMap, "properties", a.Properties)
2011	return json.Marshal(objectMap)
2012}
2013
2014// AssociationContractProperties - Association entity contract properties.
2015type AssociationContractProperties struct {
2016	// Provisioning state.
2017	ProvisioningState *string `json:"provisioningState,omitempty"`
2018}
2019
2020// AuthenticationSettingsContract - API Authentication Settings.
2021type AuthenticationSettingsContract struct {
2022	// OAuth2 Authentication settings
2023	OAuth2 *OAuth2AuthenticationSettingsContract `json:"oAuth2,omitempty"`
2024
2025	// OpenID Connect Authentication Settings
2026	Openid *OpenIDAuthenticationSettingsContract `json:"openid,omitempty"`
2027}
2028
2029// AuthorizationServerCollection - Paged OAuth2 Authorization Servers list representation.
2030type AuthorizationServerCollection struct {
2031	// Total record count number across all pages.
2032	Count *int64 `json:"count,omitempty"`
2033
2034	// Next page link if any.
2035	NextLink *string `json:"nextLink,omitempty"`
2036
2037	// Page values.
2038	Value []*AuthorizationServerContract `json:"value,omitempty"`
2039}
2040
2041// MarshalJSON implements the json.Marshaller interface for type AuthorizationServerCollection.
2042func (a AuthorizationServerCollection) MarshalJSON() ([]byte, error) {
2043	objectMap := make(map[string]interface{})
2044	populate(objectMap, "count", a.Count)
2045	populate(objectMap, "nextLink", a.NextLink)
2046	populate(objectMap, "value", a.Value)
2047	return json.Marshal(objectMap)
2048}
2049
2050// AuthorizationServerContract - External OAuth authorization server settings.
2051type AuthorizationServerContract struct {
2052	Resource
2053	// Properties of the External OAuth authorization server Contract.
2054	Properties *AuthorizationServerContractProperties `json:"properties,omitempty"`
2055}
2056
2057// MarshalJSON implements the json.Marshaller interface for type AuthorizationServerContract.
2058func (a AuthorizationServerContract) MarshalJSON() ([]byte, error) {
2059	objectMap := a.Resource.marshalInternal()
2060	populate(objectMap, "properties", a.Properties)
2061	return json.Marshal(objectMap)
2062}
2063
2064// AuthorizationServerContractBaseProperties - External OAuth authorization server Update settings contract.
2065type AuthorizationServerContractBaseProperties struct {
2066	// HTTP verbs supported by the authorization endpoint. GET must be always present. POST is optional.
2067	AuthorizationMethods []*AuthorizationMethod `json:"authorizationMethods,omitempty"`
2068
2069	// Specifies the mechanism by which access token is passed to the API.
2070	BearerTokenSendingMethods []*BearerTokenSendingMethod `json:"bearerTokenSendingMethods,omitempty"`
2071
2072	// Method of authentication supported by the token endpoint of this authorization server. Possible values are Basic and/or Body. When Body is specified,
2073	// client credentials and other parameters are passed
2074	// within the request body in the application/x-www-form-urlencoded format.
2075	ClientAuthenticationMethod []*ClientAuthenticationMethod `json:"clientAuthenticationMethod,omitempty"`
2076
2077	// Access token scope that is going to be requested by default. Can be overridden at the API level. Should be provided in the form of a string containing
2078	// space-delimited values.
2079	DefaultScope *string `json:"defaultScope,omitempty"`
2080
2081	// Description of the authorization server. Can contain HTML formatting tags.
2082	Description *string `json:"description,omitempty"`
2083
2084	// Can be optionally specified when resource owner password grant type is supported by this authorization server. Default resource owner password.
2085	ResourceOwnerPassword *string `json:"resourceOwnerPassword,omitempty"`
2086
2087	// Can be optionally specified when resource owner password grant type is supported by this authorization server. Default resource owner username.
2088	ResourceOwnerUsername *string `json:"resourceOwnerUsername,omitempty"`
2089
2090	// If true, authorization server will include state parameter from the authorization request to its response. Client may use state parameter to raise protocol
2091	// security.
2092	SupportState *bool `json:"supportState,omitempty"`
2093
2094	// Additional parameters required by the token endpoint of this authorization server represented as an array of JSON objects with name and value string
2095	// properties, i.e. {"name" : "name value", "value":
2096	// "a value"}.
2097	TokenBodyParameters []*TokenBodyParameterContract `json:"tokenBodyParameters,omitempty"`
2098
2099	// OAuth token endpoint. Contains absolute URI to entity being referenced.
2100	TokenEndpoint *string `json:"tokenEndpoint,omitempty"`
2101}
2102
2103// MarshalJSON implements the json.Marshaller interface for type AuthorizationServerContractBaseProperties.
2104func (a AuthorizationServerContractBaseProperties) MarshalJSON() ([]byte, error) {
2105	objectMap := a.marshalInternal()
2106	return json.Marshal(objectMap)
2107}
2108
2109func (a AuthorizationServerContractBaseProperties) marshalInternal() map[string]interface{} {
2110	objectMap := make(map[string]interface{})
2111	populate(objectMap, "authorizationMethods", a.AuthorizationMethods)
2112	populate(objectMap, "bearerTokenSendingMethods", a.BearerTokenSendingMethods)
2113	populate(objectMap, "clientAuthenticationMethod", a.ClientAuthenticationMethod)
2114	populate(objectMap, "defaultScope", a.DefaultScope)
2115	populate(objectMap, "description", a.Description)
2116	populate(objectMap, "resourceOwnerPassword", a.ResourceOwnerPassword)
2117	populate(objectMap, "resourceOwnerUsername", a.ResourceOwnerUsername)
2118	populate(objectMap, "supportState", a.SupportState)
2119	populate(objectMap, "tokenBodyParameters", a.TokenBodyParameters)
2120	populate(objectMap, "tokenEndpoint", a.TokenEndpoint)
2121	return objectMap
2122}
2123
2124// AuthorizationServerContractProperties - External OAuth authorization server settings Properties.
2125type AuthorizationServerContractProperties struct {
2126	AuthorizationServerContractBaseProperties
2127	// REQUIRED; OAuth authorization endpoint. See http://tools.ietf.org/html/rfc6749#section-3.2.
2128	AuthorizationEndpoint *string `json:"authorizationEndpoint,omitempty"`
2129
2130	// REQUIRED; Client or app id registered with this authorization server.
2131	ClientID *string `json:"clientId,omitempty"`
2132
2133	// REQUIRED; Optional reference to a page where client or app registration for this authorization server is performed. Contains absolute URL to entity being
2134	// referenced.
2135	ClientRegistrationEndpoint *string `json:"clientRegistrationEndpoint,omitempty"`
2136
2137	// REQUIRED; User-friendly authorization server name.
2138	DisplayName *string `json:"displayName,omitempty"`
2139
2140	// REQUIRED; Form of an authorization grant, which the client uses to request the access token.
2141	GrantTypes []*GrantType `json:"grantTypes,omitempty"`
2142
2143	// Client or app secret registered with this authorization server. This property will not be filled on 'GET' operations! Use '/listSecrets' POST request
2144	// to get the value.
2145	ClientSecret *string `json:"clientSecret,omitempty"`
2146}
2147
2148// MarshalJSON implements the json.Marshaller interface for type AuthorizationServerContractProperties.
2149func (a AuthorizationServerContractProperties) MarshalJSON() ([]byte, error) {
2150	objectMap := a.AuthorizationServerContractBaseProperties.marshalInternal()
2151	populate(objectMap, "authorizationEndpoint", a.AuthorizationEndpoint)
2152	populate(objectMap, "clientId", a.ClientID)
2153	populate(objectMap, "clientRegistrationEndpoint", a.ClientRegistrationEndpoint)
2154	populate(objectMap, "clientSecret", a.ClientSecret)
2155	populate(objectMap, "displayName", a.DisplayName)
2156	populate(objectMap, "grantTypes", a.GrantTypes)
2157	return json.Marshal(objectMap)
2158}
2159
2160// AuthorizationServerCreateOrUpdateOptions contains the optional parameters for the AuthorizationServer.CreateOrUpdate method.
2161type AuthorizationServerCreateOrUpdateOptions struct {
2162	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
2163	IfMatch *string
2164}
2165
2166// AuthorizationServerDeleteOptions contains the optional parameters for the AuthorizationServer.Delete method.
2167type AuthorizationServerDeleteOptions struct {
2168	// placeholder for future optional parameters
2169}
2170
2171// AuthorizationServerGetEntityTagOptions contains the optional parameters for the AuthorizationServer.GetEntityTag method.
2172type AuthorizationServerGetEntityTagOptions struct {
2173	// placeholder for future optional parameters
2174}
2175
2176// AuthorizationServerGetOptions contains the optional parameters for the AuthorizationServer.Get method.
2177type AuthorizationServerGetOptions struct {
2178	// placeholder for future optional parameters
2179}
2180
2181// AuthorizationServerListByServiceOptions contains the optional parameters for the AuthorizationServer.ListByService method.
2182type AuthorizationServerListByServiceOptions struct {
2183	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
2184	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| displayName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
2185	// endswith |</br>
2186	Filter *string
2187	// Number of records to skip.
2188	Skip *int32
2189	// Number of records to return.
2190	Top *int32
2191}
2192
2193// AuthorizationServerListSecretsOptions contains the optional parameters for the AuthorizationServer.ListSecrets method.
2194type AuthorizationServerListSecretsOptions struct {
2195	// placeholder for future optional parameters
2196}
2197
2198// AuthorizationServerSecretsContract - OAuth Server Secrets Contract.
2199type AuthorizationServerSecretsContract struct {
2200	// oAuth Authorization Server Secrets.
2201	ClientSecret *string `json:"clientSecret,omitempty"`
2202
2203	// Can be optionally specified when resource owner password grant type is supported by this authorization server. Default resource owner password.
2204	ResourceOwnerPassword *string `json:"resourceOwnerPassword,omitempty"`
2205
2206	// Can be optionally specified when resource owner password grant type is supported by this authorization server. Default resource owner username.
2207	ResourceOwnerUsername *string `json:"resourceOwnerUsername,omitempty"`
2208}
2209
2210// AuthorizationServerUpdateContract - External OAuth authorization server settings.
2211type AuthorizationServerUpdateContract struct {
2212	Resource
2213	// Properties of the External OAuth authorization server update Contract.
2214	Properties *AuthorizationServerUpdateContractProperties `json:"properties,omitempty"`
2215}
2216
2217// MarshalJSON implements the json.Marshaller interface for type AuthorizationServerUpdateContract.
2218func (a AuthorizationServerUpdateContract) MarshalJSON() ([]byte, error) {
2219	objectMap := a.Resource.marshalInternal()
2220	populate(objectMap, "properties", a.Properties)
2221	return json.Marshal(objectMap)
2222}
2223
2224// AuthorizationServerUpdateContractProperties - External OAuth authorization server Update settings contract.
2225type AuthorizationServerUpdateContractProperties struct {
2226	AuthorizationServerContractBaseProperties
2227	// OAuth authorization endpoint. See http://tools.ietf.org/html/rfc6749#section-3.2.
2228	AuthorizationEndpoint *string `json:"authorizationEndpoint,omitempty"`
2229
2230	// Client or app id registered with this authorization server.
2231	ClientID *string `json:"clientId,omitempty"`
2232
2233	// Optional reference to a page where client or app registration for this authorization server is performed. Contains absolute URL to entity being referenced.
2234	ClientRegistrationEndpoint *string `json:"clientRegistrationEndpoint,omitempty"`
2235
2236	// Client or app secret registered with this authorization server. This property will not be filled on 'GET' operations! Use '/listSecrets' POST request
2237	// to get the value.
2238	ClientSecret *string `json:"clientSecret,omitempty"`
2239
2240	// User-friendly authorization server name.
2241	DisplayName *string `json:"displayName,omitempty"`
2242
2243	// Form of an authorization grant, which the client uses to request the access token.
2244	GrantTypes []*GrantType `json:"grantTypes,omitempty"`
2245}
2246
2247// MarshalJSON implements the json.Marshaller interface for type AuthorizationServerUpdateContractProperties.
2248func (a AuthorizationServerUpdateContractProperties) MarshalJSON() ([]byte, error) {
2249	objectMap := a.AuthorizationServerContractBaseProperties.marshalInternal()
2250	populate(objectMap, "authorizationEndpoint", a.AuthorizationEndpoint)
2251	populate(objectMap, "clientId", a.ClientID)
2252	populate(objectMap, "clientRegistrationEndpoint", a.ClientRegistrationEndpoint)
2253	populate(objectMap, "clientSecret", a.ClientSecret)
2254	populate(objectMap, "displayName", a.DisplayName)
2255	populate(objectMap, "grantTypes", a.GrantTypes)
2256	return json.Marshal(objectMap)
2257}
2258
2259// AuthorizationServerUpdateOptions contains the optional parameters for the AuthorizationServer.Update method.
2260type AuthorizationServerUpdateOptions struct {
2261	// placeholder for future optional parameters
2262}
2263
2264// BackendAuthorizationHeaderCredentials - Authorization header information.
2265type BackendAuthorizationHeaderCredentials struct {
2266	// REQUIRED; Authentication Parameter value.
2267	Parameter *string `json:"parameter,omitempty"`
2268
2269	// REQUIRED; Authentication Scheme name.
2270	Scheme *string `json:"scheme,omitempty"`
2271}
2272
2273// BackendBaseParameters - Backend entity base Parameter set.
2274type BackendBaseParameters struct {
2275	// Backend Credentials Contract Properties
2276	Credentials *BackendCredentialsContract `json:"credentials,omitempty"`
2277
2278	// Backend Description.
2279	Description *string `json:"description,omitempty"`
2280
2281	// Backend Properties contract
2282	Properties *BackendProperties `json:"properties,omitempty"`
2283
2284	// Backend Proxy Contract Properties
2285	Proxy *BackendProxyContract `json:"proxy,omitempty"`
2286
2287	// Management Uri of the Resource in External System. This url can be the Arm Resource Id of Logic Apps, Function Apps or Api Apps.
2288	ResourceID *string `json:"resourceId,omitempty"`
2289
2290	// Backend TLS Properties
2291	TLS *BackendTLSProperties `json:"tls,omitempty"`
2292
2293	// Backend Title.
2294	Title *string `json:"title,omitempty"`
2295}
2296
2297// BackendCollection - Paged Backend list representation.
2298type BackendCollection struct {
2299	// Total record count number across all pages.
2300	Count *int64 `json:"count,omitempty"`
2301
2302	// Next page link if any.
2303	NextLink *string `json:"nextLink,omitempty"`
2304
2305	// Backend values.
2306	Value []*BackendContract `json:"value,omitempty"`
2307}
2308
2309// MarshalJSON implements the json.Marshaller interface for type BackendCollection.
2310func (b BackendCollection) MarshalJSON() ([]byte, error) {
2311	objectMap := make(map[string]interface{})
2312	populate(objectMap, "count", b.Count)
2313	populate(objectMap, "nextLink", b.NextLink)
2314	populate(objectMap, "value", b.Value)
2315	return json.Marshal(objectMap)
2316}
2317
2318// BackendContract - Backend details.
2319type BackendContract struct {
2320	Resource
2321	// Backend entity contract properties.
2322	Properties *BackendContractProperties `json:"properties,omitempty"`
2323}
2324
2325// MarshalJSON implements the json.Marshaller interface for type BackendContract.
2326func (b BackendContract) MarshalJSON() ([]byte, error) {
2327	objectMap := b.Resource.marshalInternal()
2328	populate(objectMap, "properties", b.Properties)
2329	return json.Marshal(objectMap)
2330}
2331
2332// BackendContractProperties - Parameters supplied to the Create Backend operation.
2333type BackendContractProperties struct {
2334	BackendBaseParameters
2335	// REQUIRED; Backend communication protocol.
2336	Protocol *BackendProtocol `json:"protocol,omitempty"`
2337
2338	// REQUIRED; Runtime Url of the Backend.
2339	URL *string `json:"url,omitempty"`
2340}
2341
2342// BackendCreateOrUpdateOptions contains the optional parameters for the Backend.CreateOrUpdate method.
2343type BackendCreateOrUpdateOptions struct {
2344	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
2345	IfMatch *string
2346}
2347
2348// BackendCredentialsContract - Details of the Credentials used to connect to Backend.
2349type BackendCredentialsContract struct {
2350	// Authorization header authentication
2351	Authorization *BackendAuthorizationHeaderCredentials `json:"authorization,omitempty"`
2352
2353	// List of Client Certificate Thumbprints. Will be ignored if certificatesIds are provided.
2354	Certificate []*string `json:"certificate,omitempty"`
2355
2356	// List of Client Certificate Ids.
2357	CertificateIDs []*string `json:"certificateIds,omitempty"`
2358
2359	// Header Parameter description.
2360	Header map[string][]*string `json:"header,omitempty"`
2361
2362	// Query Parameter description.
2363	Query map[string][]*string `json:"query,omitempty"`
2364}
2365
2366// MarshalJSON implements the json.Marshaller interface for type BackendCredentialsContract.
2367func (b BackendCredentialsContract) MarshalJSON() ([]byte, error) {
2368	objectMap := make(map[string]interface{})
2369	populate(objectMap, "authorization", b.Authorization)
2370	populate(objectMap, "certificate", b.Certificate)
2371	populate(objectMap, "certificateIds", b.CertificateIDs)
2372	populate(objectMap, "header", b.Header)
2373	populate(objectMap, "query", b.Query)
2374	return json.Marshal(objectMap)
2375}
2376
2377// BackendDeleteOptions contains the optional parameters for the Backend.Delete method.
2378type BackendDeleteOptions struct {
2379	// placeholder for future optional parameters
2380}
2381
2382// BackendGetEntityTagOptions contains the optional parameters for the Backend.GetEntityTag method.
2383type BackendGetEntityTagOptions struct {
2384	// placeholder for future optional parameters
2385}
2386
2387// BackendGetOptions contains the optional parameters for the Backend.Get method.
2388type BackendGetOptions struct {
2389	// placeholder for future optional parameters
2390}
2391
2392// BackendListByServiceOptions contains the optional parameters for the Backend.ListByService method.
2393type BackendListByServiceOptions struct {
2394	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
2395	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| title | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
2396	// endswith |</br>| url | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>
2397	Filter *string
2398	// Number of records to skip.
2399	Skip *int32
2400	// Number of records to return.
2401	Top *int32
2402}
2403
2404// BackendProperties - Properties specific to the Backend Type.
2405type BackendProperties struct {
2406	// Backend Service Fabric Cluster Properties
2407	ServiceFabricCluster *BackendServiceFabricClusterProperties `json:"serviceFabricCluster,omitempty"`
2408}
2409
2410// BackendProxyContract - Details of the Backend WebProxy Server to use in the Request to Backend.
2411type BackendProxyContract struct {
2412	// REQUIRED; WebProxy Server AbsoluteUri property which includes the entire URI stored in the Uri instance, including all fragments and query strings.
2413	URL *string `json:"url,omitempty"`
2414
2415	// Password to connect to the WebProxy Server
2416	Password *string `json:"password,omitempty"`
2417
2418	// Username to connect to the WebProxy server
2419	Username *string `json:"username,omitempty"`
2420}
2421
2422// BackendReconnectContract - Reconnect request parameters.
2423type BackendReconnectContract struct {
2424	Resource
2425	// Reconnect request properties.
2426	Properties *BackendReconnectProperties `json:"properties,omitempty"`
2427}
2428
2429// MarshalJSON implements the json.Marshaller interface for type BackendReconnectContract.
2430func (b BackendReconnectContract) MarshalJSON() ([]byte, error) {
2431	objectMap := b.Resource.marshalInternal()
2432	populate(objectMap, "properties", b.Properties)
2433	return json.Marshal(objectMap)
2434}
2435
2436// BackendReconnectOptions contains the optional parameters for the Backend.Reconnect method.
2437type BackendReconnectOptions struct {
2438	// Reconnect request parameters.
2439	Parameters *BackendReconnectContract
2440}
2441
2442// BackendReconnectProperties - Properties to control reconnect requests.
2443type BackendReconnectProperties struct {
2444	// Duration in ISO8601 format after which reconnect will be initiated. Minimum duration of the Reconnect is PT2M.
2445	After *string `json:"after,omitempty"`
2446}
2447
2448// BackendServiceFabricClusterProperties - Properties of the Service Fabric Type Backend.
2449type BackendServiceFabricClusterProperties struct {
2450	// REQUIRED; The cluster management endpoint.
2451	ManagementEndpoints []*string `json:"managementEndpoints,omitempty"`
2452
2453	// The client certificate id for the management endpoint.
2454	ClientCertificateID *string `json:"clientCertificateId,omitempty"`
2455
2456	// The client certificate thumbprint for the management endpoint. Will be ignored if certificatesIds are provided
2457	ClientCertificatethumbprint *string `json:"clientCertificatethumbprint,omitempty"`
2458
2459	// Maximum number of retries while attempting resolve the partition.
2460	MaxPartitionResolutionRetries *int32 `json:"maxPartitionResolutionRetries,omitempty"`
2461
2462	// Thumbprints of certificates cluster management service uses for tls communication
2463	ServerCertificateThumbprints []*string `json:"serverCertificateThumbprints,omitempty"`
2464
2465	// Server X509 Certificate Names Collection
2466	ServerX509Names []*X509CertificateName `json:"serverX509Names,omitempty"`
2467}
2468
2469// MarshalJSON implements the json.Marshaller interface for type BackendServiceFabricClusterProperties.
2470func (b BackendServiceFabricClusterProperties) MarshalJSON() ([]byte, error) {
2471	objectMap := make(map[string]interface{})
2472	populate(objectMap, "clientCertificateId", b.ClientCertificateID)
2473	populate(objectMap, "clientCertificatethumbprint", b.ClientCertificatethumbprint)
2474	populate(objectMap, "managementEndpoints", b.ManagementEndpoints)
2475	populate(objectMap, "maxPartitionResolutionRetries", b.MaxPartitionResolutionRetries)
2476	populate(objectMap, "serverCertificateThumbprints", b.ServerCertificateThumbprints)
2477	populate(objectMap, "serverX509Names", b.ServerX509Names)
2478	return json.Marshal(objectMap)
2479}
2480
2481// BackendTLSProperties - Properties controlling TLS Certificate Validation.
2482type BackendTLSProperties struct {
2483	// Flag indicating whether SSL certificate chain validation should be done when using self-signed certificates for this backend host.
2484	ValidateCertificateChain *bool `json:"validateCertificateChain,omitempty"`
2485
2486	// Flag indicating whether SSL certificate name validation should be done when using self-signed certificates for this backend host.
2487	ValidateCertificateName *bool `json:"validateCertificateName,omitempty"`
2488}
2489
2490// BackendUpdateOptions contains the optional parameters for the Backend.Update method.
2491type BackendUpdateOptions struct {
2492	// placeholder for future optional parameters
2493}
2494
2495// BackendUpdateParameterProperties - Parameters supplied to the Update Backend operation.
2496type BackendUpdateParameterProperties struct {
2497	BackendBaseParameters
2498	// Backend communication protocol.
2499	Protocol *BackendProtocol `json:"protocol,omitempty"`
2500
2501	// Runtime Url of the Backend.
2502	URL *string `json:"url,omitempty"`
2503}
2504
2505// BackendUpdateParameters - Backend update parameters.
2506type BackendUpdateParameters struct {
2507	// Backend entity update contract properties.
2508	Properties *BackendUpdateParameterProperties `json:"properties,omitempty"`
2509}
2510
2511// MarshalJSON implements the json.Marshaller interface for type BackendUpdateParameters.
2512func (b BackendUpdateParameters) MarshalJSON() ([]byte, error) {
2513	objectMap := make(map[string]interface{})
2514	populate(objectMap, "properties", b.Properties)
2515	return json.Marshal(objectMap)
2516}
2517
2518// BodyDiagnosticSettings - Body logging settings.
2519type BodyDiagnosticSettings struct {
2520	// Number of request body bytes to log.
2521	Bytes *int32 `json:"bytes,omitempty"`
2522}
2523
2524// CacheCollection - Paged Caches list representation.
2525type CacheCollection struct {
2526	// Total record count number across all pages.
2527	Count *int64 `json:"count,omitempty"`
2528
2529	// Next page link if any.
2530	NextLink *string `json:"nextLink,omitempty"`
2531
2532	// Page values.
2533	Value []*CacheContract `json:"value,omitempty"`
2534}
2535
2536// MarshalJSON implements the json.Marshaller interface for type CacheCollection.
2537func (c CacheCollection) MarshalJSON() ([]byte, error) {
2538	objectMap := make(map[string]interface{})
2539	populate(objectMap, "count", c.Count)
2540	populate(objectMap, "nextLink", c.NextLink)
2541	populate(objectMap, "value", c.Value)
2542	return json.Marshal(objectMap)
2543}
2544
2545// CacheContract - Cache details.
2546type CacheContract struct {
2547	Resource
2548	// Cache properties details.
2549	Properties *CacheContractProperties `json:"properties,omitempty"`
2550}
2551
2552// MarshalJSON implements the json.Marshaller interface for type CacheContract.
2553func (c CacheContract) MarshalJSON() ([]byte, error) {
2554	objectMap := c.Resource.marshalInternal()
2555	populate(objectMap, "properties", c.Properties)
2556	return json.Marshal(objectMap)
2557}
2558
2559// CacheContractProperties - Properties of the Cache contract.
2560type CacheContractProperties struct {
2561	// REQUIRED; Runtime connection string to cache
2562	ConnectionString *string `json:"connectionString,omitempty"`
2563
2564	// REQUIRED; Location identifier to use cache from (should be either 'default' or valid Azure region identifier)
2565	UseFromLocation *string `json:"useFromLocation,omitempty"`
2566
2567	// Cache description
2568	Description *string `json:"description,omitempty"`
2569
2570	// Original uri of entity in external system cache points to
2571	ResourceID *string `json:"resourceId,omitempty"`
2572}
2573
2574// CacheCreateOrUpdateOptions contains the optional parameters for the Cache.CreateOrUpdate method.
2575type CacheCreateOrUpdateOptions struct {
2576	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
2577	IfMatch *string
2578}
2579
2580// CacheDeleteOptions contains the optional parameters for the Cache.Delete method.
2581type CacheDeleteOptions struct {
2582	// placeholder for future optional parameters
2583}
2584
2585// CacheGetEntityTagOptions contains the optional parameters for the Cache.GetEntityTag method.
2586type CacheGetEntityTagOptions struct {
2587	// placeholder for future optional parameters
2588}
2589
2590// CacheGetOptions contains the optional parameters for the Cache.Get method.
2591type CacheGetOptions struct {
2592	// placeholder for future optional parameters
2593}
2594
2595// CacheListByServiceOptions contains the optional parameters for the Cache.ListByService method.
2596type CacheListByServiceOptions struct {
2597	// Number of records to skip.
2598	Skip *int32
2599	// Number of records to return.
2600	Top *int32
2601}
2602
2603// CacheUpdateOptions contains the optional parameters for the Cache.Update method.
2604type CacheUpdateOptions struct {
2605	// placeholder for future optional parameters
2606}
2607
2608// CacheUpdateParameters - Cache update details.
2609type CacheUpdateParameters struct {
2610	// Cache update properties details.
2611	Properties *CacheUpdateProperties `json:"properties,omitempty"`
2612}
2613
2614// MarshalJSON implements the json.Marshaller interface for type CacheUpdateParameters.
2615func (c CacheUpdateParameters) MarshalJSON() ([]byte, error) {
2616	objectMap := make(map[string]interface{})
2617	populate(objectMap, "properties", c.Properties)
2618	return json.Marshal(objectMap)
2619}
2620
2621// CacheUpdateProperties - Parameters supplied to the Update Cache operation.
2622type CacheUpdateProperties struct {
2623	// Runtime connection string to cache
2624	ConnectionString *string `json:"connectionString,omitempty"`
2625
2626	// Cache description
2627	Description *string `json:"description,omitempty"`
2628
2629	// Original uri of entity in external system cache points to
2630	ResourceID *string `json:"resourceId,omitempty"`
2631
2632	// Location identifier to use cache from (should be either 'default' or valid Azure region identifier)
2633	UseFromLocation *string `json:"useFromLocation,omitempty"`
2634}
2635
2636// CertificateCollection - Paged Certificates list representation.
2637type CertificateCollection struct {
2638	// Total record count number across all pages.
2639	Count *int64 `json:"count,omitempty"`
2640
2641	// Next page link if any.
2642	NextLink *string `json:"nextLink,omitempty"`
2643
2644	// Page values.
2645	Value []*CertificateContract `json:"value,omitempty"`
2646}
2647
2648// MarshalJSON implements the json.Marshaller interface for type CertificateCollection.
2649func (c CertificateCollection) MarshalJSON() ([]byte, error) {
2650	objectMap := make(map[string]interface{})
2651	populate(objectMap, "count", c.Count)
2652	populate(objectMap, "nextLink", c.NextLink)
2653	populate(objectMap, "value", c.Value)
2654	return json.Marshal(objectMap)
2655}
2656
2657// CertificateConfiguration - Certificate configuration which consist of non-trusted intermediates and root certificates.
2658type CertificateConfiguration struct {
2659	// REQUIRED; The System.Security.Cryptography.x509certificates.StoreName certificate store location. Only Root and CertificateAuthority are valid locations.
2660	StoreName *CertificateConfigurationStoreName `json:"storeName,omitempty"`
2661
2662	// Certificate information.
2663	Certificate *CertificateInformation `json:"certificate,omitempty"`
2664
2665	// Certificate Password.
2666	CertificatePassword *string `json:"certificatePassword,omitempty"`
2667
2668	// Base64 Encoded certificate.
2669	EncodedCertificate *string `json:"encodedCertificate,omitempty"`
2670}
2671
2672// CertificateContract - Certificate details.
2673type CertificateContract struct {
2674	Resource
2675	// Certificate properties details.
2676	Properties *CertificateContractProperties `json:"properties,omitempty"`
2677}
2678
2679// MarshalJSON implements the json.Marshaller interface for type CertificateContract.
2680func (c CertificateContract) MarshalJSON() ([]byte, error) {
2681	objectMap := c.Resource.marshalInternal()
2682	populate(objectMap, "properties", c.Properties)
2683	return json.Marshal(objectMap)
2684}
2685
2686// CertificateContractProperties - Properties of the Certificate contract.
2687type CertificateContractProperties struct {
2688	// REQUIRED; Expiration date of the certificate. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
2689	ExpirationDate *time.Time `json:"expirationDate,omitempty"`
2690
2691	// REQUIRED; Subject attribute of the certificate.
2692	Subject *string `json:"subject,omitempty"`
2693
2694	// REQUIRED; Thumbprint of the certificate.
2695	Thumbprint *string `json:"thumbprint,omitempty"`
2696
2697	// KeyVault location details of the certificate.
2698	KeyVault *KeyVaultContractProperties `json:"keyVault,omitempty"`
2699}
2700
2701// MarshalJSON implements the json.Marshaller interface for type CertificateContractProperties.
2702func (c CertificateContractProperties) MarshalJSON() ([]byte, error) {
2703	objectMap := make(map[string]interface{})
2704	populate(objectMap, "expirationDate", (*timeRFC3339)(c.ExpirationDate))
2705	populate(objectMap, "keyVault", c.KeyVault)
2706	populate(objectMap, "subject", c.Subject)
2707	populate(objectMap, "thumbprint", c.Thumbprint)
2708	return json.Marshal(objectMap)
2709}
2710
2711// UnmarshalJSON implements the json.Unmarshaller interface for type CertificateContractProperties.
2712func (c *CertificateContractProperties) UnmarshalJSON(data []byte) error {
2713	var rawMsg map[string]json.RawMessage
2714	if err := json.Unmarshal(data, &rawMsg); err != nil {
2715		return err
2716	}
2717	for key, val := range rawMsg {
2718		var err error
2719		switch key {
2720		case "expirationDate":
2721			var aux timeRFC3339
2722			err = unpopulate(val, &aux)
2723			c.ExpirationDate = (*time.Time)(&aux)
2724			delete(rawMsg, key)
2725		case "keyVault":
2726			err = unpopulate(val, &c.KeyVault)
2727			delete(rawMsg, key)
2728		case "subject":
2729			err = unpopulate(val, &c.Subject)
2730			delete(rawMsg, key)
2731		case "thumbprint":
2732			err = unpopulate(val, &c.Thumbprint)
2733			delete(rawMsg, key)
2734		}
2735		if err != nil {
2736			return err
2737		}
2738	}
2739	return nil
2740}
2741
2742// CertificateCreateOrUpdateOptions contains the optional parameters for the Certificate.CreateOrUpdate method.
2743type CertificateCreateOrUpdateOptions struct {
2744	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
2745	IfMatch *string
2746}
2747
2748// CertificateCreateOrUpdateParameters - Certificate create or update details.
2749type CertificateCreateOrUpdateParameters struct {
2750	// Certificate create or update properties details.
2751	Properties *CertificateCreateOrUpdateProperties `json:"properties,omitempty"`
2752}
2753
2754// CertificateCreateOrUpdateProperties - Parameters supplied to the CreateOrUpdate certificate operation.
2755type CertificateCreateOrUpdateProperties struct {
2756	// Base 64 encoded certificate using the application/x-pkcs12 representation.
2757	Data *string `json:"data,omitempty"`
2758
2759	// KeyVault location details of the certificate.
2760	KeyVault *KeyVaultContractCreateProperties `json:"keyVault,omitempty"`
2761
2762	// Password for the Certificate
2763	Password *string `json:"password,omitempty"`
2764}
2765
2766// CertificateDeleteOptions contains the optional parameters for the Certificate.Delete method.
2767type CertificateDeleteOptions struct {
2768	// placeholder for future optional parameters
2769}
2770
2771// CertificateGetEntityTagOptions contains the optional parameters for the Certificate.GetEntityTag method.
2772type CertificateGetEntityTagOptions struct {
2773	// placeholder for future optional parameters
2774}
2775
2776// CertificateGetOptions contains the optional parameters for the Certificate.Get method.
2777type CertificateGetOptions struct {
2778	// placeholder for future optional parameters
2779}
2780
2781// CertificateInformation - SSL certificate information.
2782type CertificateInformation struct {
2783	// REQUIRED; Expiration date of the certificate. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
2784	Expiry *time.Time `json:"expiry,omitempty"`
2785
2786	// REQUIRED; Subject of the certificate.
2787	Subject *string `json:"subject,omitempty"`
2788
2789	// REQUIRED; Thumbprint of the certificate.
2790	Thumbprint *string `json:"thumbprint,omitempty"`
2791}
2792
2793// MarshalJSON implements the json.Marshaller interface for type CertificateInformation.
2794func (c CertificateInformation) MarshalJSON() ([]byte, error) {
2795	objectMap := make(map[string]interface{})
2796	populate(objectMap, "expiry", (*timeRFC3339)(c.Expiry))
2797	populate(objectMap, "subject", c.Subject)
2798	populate(objectMap, "thumbprint", c.Thumbprint)
2799	return json.Marshal(objectMap)
2800}
2801
2802// UnmarshalJSON implements the json.Unmarshaller interface for type CertificateInformation.
2803func (c *CertificateInformation) UnmarshalJSON(data []byte) error {
2804	var rawMsg map[string]json.RawMessage
2805	if err := json.Unmarshal(data, &rawMsg); err != nil {
2806		return err
2807	}
2808	for key, val := range rawMsg {
2809		var err error
2810		switch key {
2811		case "expiry":
2812			var aux timeRFC3339
2813			err = unpopulate(val, &aux)
2814			c.Expiry = (*time.Time)(&aux)
2815			delete(rawMsg, key)
2816		case "subject":
2817			err = unpopulate(val, &c.Subject)
2818			delete(rawMsg, key)
2819		case "thumbprint":
2820			err = unpopulate(val, &c.Thumbprint)
2821			delete(rawMsg, key)
2822		}
2823		if err != nil {
2824			return err
2825		}
2826	}
2827	return nil
2828}
2829
2830// CertificateListByServiceOptions contains the optional parameters for the Certificate.ListByService method.
2831type CertificateListByServiceOptions struct {
2832	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
2833	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| subject | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
2834	// endswith |</br>| thumbprint | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| expirationDate | filter | ge, le,
2835	// eq, ne, gt, lt | |</br>
2836	Filter *string
2837	// When set to true, the response contains only certificates entities which failed refresh.
2838	IsKeyVaultRefreshFailed *bool
2839	// Number of records to skip.
2840	Skip *int32
2841	// Number of records to return.
2842	Top *int32
2843}
2844
2845// CertificateRefreshSecretOptions contains the optional parameters for the Certificate.RefreshSecret method.
2846type CertificateRefreshSecretOptions struct {
2847	// placeholder for future optional parameters
2848}
2849
2850// ClientSecretContract - Client or app secret used in IdentityProviders, Aad, OpenID or OAuth.
2851type ClientSecretContract struct {
2852	// Client or app secret used in IdentityProviders, Aad, OpenID or OAuth.
2853	ClientSecret *string `json:"clientSecret,omitempty"`
2854}
2855
2856// ConnectivityStatusContract - Details about connectivity to a resource.
2857type ConnectivityStatusContract struct {
2858	// REQUIRED; Whether this is optional.
2859	IsOptional *bool `json:"isOptional,omitempty"`
2860
2861	// REQUIRED; The date when the resource connectivity status last Changed from success to failure or vice-versa. The date conforms to the following format:
2862	// yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601
2863	// standard.
2864	LastStatusChange *time.Time `json:"lastStatusChange,omitempty"`
2865
2866	// REQUIRED; The date when the resource connectivity status was last updated. This status should be updated every 15 minutes. If this status has not been
2867	// updated, then it means that the service has lost network
2868	// connectivity to the resource, from inside the Virtual Network.The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO
2869	// 8601 standard.
2870	LastUpdated *time.Time `json:"lastUpdated,omitempty"`
2871
2872	// REQUIRED; The hostname of the resource which the service depends on. This can be the database, storage or any other azure resource on which the service
2873	// depends upon.
2874	Name *string `json:"name,omitempty"`
2875
2876	// REQUIRED; Resource Type.
2877	ResourceType *string `json:"resourceType,omitempty"`
2878
2879	// REQUIRED; Resource Connectivity Status Type identifier.
2880	Status *ConnectivityStatusType `json:"status,omitempty"`
2881
2882	// Error details of the connectivity to the resource.
2883	Error *string `json:"error,omitempty"`
2884}
2885
2886// MarshalJSON implements the json.Marshaller interface for type ConnectivityStatusContract.
2887func (c ConnectivityStatusContract) MarshalJSON() ([]byte, error) {
2888	objectMap := make(map[string]interface{})
2889	populate(objectMap, "error", c.Error)
2890	populate(objectMap, "isOptional", c.IsOptional)
2891	populate(objectMap, "lastStatusChange", (*timeRFC3339)(c.LastStatusChange))
2892	populate(objectMap, "lastUpdated", (*timeRFC3339)(c.LastUpdated))
2893	populate(objectMap, "name", c.Name)
2894	populate(objectMap, "resourceType", c.ResourceType)
2895	populate(objectMap, "status", c.Status)
2896	return json.Marshal(objectMap)
2897}
2898
2899// UnmarshalJSON implements the json.Unmarshaller interface for type ConnectivityStatusContract.
2900func (c *ConnectivityStatusContract) UnmarshalJSON(data []byte) error {
2901	var rawMsg map[string]json.RawMessage
2902	if err := json.Unmarshal(data, &rawMsg); err != nil {
2903		return err
2904	}
2905	for key, val := range rawMsg {
2906		var err error
2907		switch key {
2908		case "error":
2909			err = unpopulate(val, &c.Error)
2910			delete(rawMsg, key)
2911		case "isOptional":
2912			err = unpopulate(val, &c.IsOptional)
2913			delete(rawMsg, key)
2914		case "lastStatusChange":
2915			var aux timeRFC3339
2916			err = unpopulate(val, &aux)
2917			c.LastStatusChange = (*time.Time)(&aux)
2918			delete(rawMsg, key)
2919		case "lastUpdated":
2920			var aux timeRFC3339
2921			err = unpopulate(val, &aux)
2922			c.LastUpdated = (*time.Time)(&aux)
2923			delete(rawMsg, key)
2924		case "name":
2925			err = unpopulate(val, &c.Name)
2926			delete(rawMsg, key)
2927		case "resourceType":
2928			err = unpopulate(val, &c.ResourceType)
2929			delete(rawMsg, key)
2930		case "status":
2931			err = unpopulate(val, &c.Status)
2932			delete(rawMsg, key)
2933		}
2934		if err != nil {
2935			return err
2936		}
2937	}
2938	return nil
2939}
2940
2941// ContentItemCollection - Paged list of content items.
2942type ContentItemCollection struct {
2943	// READ-ONLY; Next page link, if any.
2944	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
2945
2946	// READ-ONLY; Collection of content items.
2947	Value []*ContentItemContract `json:"value,omitempty" azure:"ro"`
2948}
2949
2950// MarshalJSON implements the json.Marshaller interface for type ContentItemCollection.
2951func (c ContentItemCollection) MarshalJSON() ([]byte, error) {
2952	objectMap := make(map[string]interface{})
2953	populate(objectMap, "nextLink", c.NextLink)
2954	populate(objectMap, "value", c.Value)
2955	return json.Marshal(objectMap)
2956}
2957
2958// ContentItemContract - Content type contract details.
2959type ContentItemContract struct {
2960	Resource
2961	// Properties of the content item.
2962	Properties map[string]interface{} `json:"properties,omitempty"`
2963}
2964
2965// MarshalJSON implements the json.Marshaller interface for type ContentItemContract.
2966func (c ContentItemContract) MarshalJSON() ([]byte, error) {
2967	objectMap := c.Resource.marshalInternal()
2968	populate(objectMap, "properties", c.Properties)
2969	return json.Marshal(objectMap)
2970}
2971
2972// ContentItemCreateOrUpdateOptions contains the optional parameters for the ContentItem.CreateOrUpdate method.
2973type ContentItemCreateOrUpdateOptions struct {
2974	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
2975	IfMatch *string
2976}
2977
2978// ContentItemDeleteOptions contains the optional parameters for the ContentItem.Delete method.
2979type ContentItemDeleteOptions struct {
2980	// placeholder for future optional parameters
2981}
2982
2983// ContentItemGetEntityTagOptions contains the optional parameters for the ContentItem.GetEntityTag method.
2984type ContentItemGetEntityTagOptions struct {
2985	// placeholder for future optional parameters
2986}
2987
2988// ContentItemGetOptions contains the optional parameters for the ContentItem.Get method.
2989type ContentItemGetOptions struct {
2990	// placeholder for future optional parameters
2991}
2992
2993// ContentItemListByServiceOptions contains the optional parameters for the ContentItem.ListByService method.
2994type ContentItemListByServiceOptions struct {
2995	// placeholder for future optional parameters
2996}
2997
2998// ContentTypeCollection - Paged list of content types.
2999type ContentTypeCollection struct {
3000	// READ-ONLY; Next page link, if any.
3001	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
3002
3003	// READ-ONLY; Collection of content types.
3004	Value []*ContentTypeContract `json:"value,omitempty" azure:"ro"`
3005}
3006
3007// MarshalJSON implements the json.Marshaller interface for type ContentTypeCollection.
3008func (c ContentTypeCollection) MarshalJSON() ([]byte, error) {
3009	objectMap := make(map[string]interface{})
3010	populate(objectMap, "nextLink", c.NextLink)
3011	populate(objectMap, "value", c.Value)
3012	return json.Marshal(objectMap)
3013}
3014
3015// ContentTypeContract - Content type contract details.
3016type ContentTypeContract struct {
3017	Resource
3018	// Properties of the content type.
3019	Properties *ContentTypeContractProperties `json:"properties,omitempty"`
3020}
3021
3022// MarshalJSON implements the json.Marshaller interface for type ContentTypeContract.
3023func (c ContentTypeContract) MarshalJSON() ([]byte, error) {
3024	objectMap := c.Resource.marshalInternal()
3025	populate(objectMap, "properties", c.Properties)
3026	return json.Marshal(objectMap)
3027}
3028
3029type ContentTypeContractProperties struct {
3030	// Content type description.
3031	Description *string `json:"description,omitempty"`
3032
3033	// Content type identifier
3034	ID *string `json:"id,omitempty"`
3035
3036	// Content type name. Must be 1 to 250 characters long.
3037	Name *string `json:"name,omitempty"`
3038
3039	// Content type schema.
3040	Schema map[string]interface{} `json:"schema,omitempty"`
3041
3042	// Content type version.
3043	Version *string `json:"version,omitempty"`
3044}
3045
3046// ContentTypeCreateOrUpdateOptions contains the optional parameters for the ContentType.CreateOrUpdate method.
3047type ContentTypeCreateOrUpdateOptions struct {
3048	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
3049	IfMatch *string
3050}
3051
3052// ContentTypeDeleteOptions contains the optional parameters for the ContentType.Delete method.
3053type ContentTypeDeleteOptions struct {
3054	// placeholder for future optional parameters
3055}
3056
3057// ContentTypeGetOptions contains the optional parameters for the ContentType.Get method.
3058type ContentTypeGetOptions struct {
3059	// placeholder for future optional parameters
3060}
3061
3062// ContentTypeListByServiceOptions contains the optional parameters for the ContentType.ListByService method.
3063type ContentTypeListByServiceOptions struct {
3064	// placeholder for future optional parameters
3065}
3066
3067type DataMasking struct {
3068	// Masking settings for headers
3069	Headers []*DataMaskingEntity `json:"headers,omitempty"`
3070
3071	// Masking settings for Url query parameters
3072	QueryParams []*DataMaskingEntity `json:"queryParams,omitempty"`
3073}
3074
3075// MarshalJSON implements the json.Marshaller interface for type DataMasking.
3076func (d DataMasking) MarshalJSON() ([]byte, error) {
3077	objectMap := make(map[string]interface{})
3078	populate(objectMap, "headers", d.Headers)
3079	populate(objectMap, "queryParams", d.QueryParams)
3080	return json.Marshal(objectMap)
3081}
3082
3083type DataMaskingEntity struct {
3084	// Data masking mode.
3085	Mode *DataMaskingMode `json:"mode,omitempty"`
3086
3087	// The name of an entity to mask (e.g. a name of a header or a query parameter).
3088	Value *string `json:"value,omitempty"`
3089}
3090
3091// DelegationSettingsCreateOrUpdateOptions contains the optional parameters for the DelegationSettings.CreateOrUpdate method.
3092type DelegationSettingsCreateOrUpdateOptions struct {
3093	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
3094	IfMatch *string
3095}
3096
3097// DelegationSettingsGetEntityTagOptions contains the optional parameters for the DelegationSettings.GetEntityTag method.
3098type DelegationSettingsGetEntityTagOptions struct {
3099	// placeholder for future optional parameters
3100}
3101
3102// DelegationSettingsGetOptions contains the optional parameters for the DelegationSettings.Get method.
3103type DelegationSettingsGetOptions struct {
3104	// placeholder for future optional parameters
3105}
3106
3107// DelegationSettingsListSecretsOptions contains the optional parameters for the DelegationSettings.ListSecrets method.
3108type DelegationSettingsListSecretsOptions struct {
3109	// placeholder for future optional parameters
3110}
3111
3112// DelegationSettingsUpdateOptions contains the optional parameters for the DelegationSettings.Update method.
3113type DelegationSettingsUpdateOptions struct {
3114	// placeholder for future optional parameters
3115}
3116
3117// DeletedServiceContract - Deleted Api Management Service information.
3118type DeletedServiceContract struct {
3119	Resource
3120	// Deleted Api Management Service details.
3121	Properties *DeletedServiceContractProperties `json:"properties,omitempty"`
3122
3123	// READ-ONLY; Api Management Service Master Location.
3124	Location *string `json:"location,omitempty" azure:"ro"`
3125}
3126
3127// MarshalJSON implements the json.Marshaller interface for type DeletedServiceContract.
3128func (d DeletedServiceContract) MarshalJSON() ([]byte, error) {
3129	objectMap := d.Resource.marshalInternal()
3130	populate(objectMap, "location", d.Location)
3131	populate(objectMap, "properties", d.Properties)
3132	return json.Marshal(objectMap)
3133}
3134
3135type DeletedServiceContractProperties struct {
3136	// UTC Timestamp when the service was soft-deleted. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
3137	DeletionDate *time.Time `json:"deletionDate,omitempty"`
3138
3139	// UTC Date and Time when the service will be automatically purged. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the
3140	// ISO 8601 standard.
3141	ScheduledPurgeDate *time.Time `json:"scheduledPurgeDate,omitempty"`
3142
3143	// Fully-qualified API Management Service Resource ID
3144	ServiceID *string `json:"serviceId,omitempty"`
3145}
3146
3147// MarshalJSON implements the json.Marshaller interface for type DeletedServiceContractProperties.
3148func (d DeletedServiceContractProperties) MarshalJSON() ([]byte, error) {
3149	objectMap := make(map[string]interface{})
3150	populate(objectMap, "deletionDate", (*timeRFC3339)(d.DeletionDate))
3151	populate(objectMap, "scheduledPurgeDate", (*timeRFC3339)(d.ScheduledPurgeDate))
3152	populate(objectMap, "serviceId", d.ServiceID)
3153	return json.Marshal(objectMap)
3154}
3155
3156// UnmarshalJSON implements the json.Unmarshaller interface for type DeletedServiceContractProperties.
3157func (d *DeletedServiceContractProperties) UnmarshalJSON(data []byte) error {
3158	var rawMsg map[string]json.RawMessage
3159	if err := json.Unmarshal(data, &rawMsg); err != nil {
3160		return err
3161	}
3162	for key, val := range rawMsg {
3163		var err error
3164		switch key {
3165		case "deletionDate":
3166			var aux timeRFC3339
3167			err = unpopulate(val, &aux)
3168			d.DeletionDate = (*time.Time)(&aux)
3169			delete(rawMsg, key)
3170		case "scheduledPurgeDate":
3171			var aux timeRFC3339
3172			err = unpopulate(val, &aux)
3173			d.ScheduledPurgeDate = (*time.Time)(&aux)
3174			delete(rawMsg, key)
3175		case "serviceId":
3176			err = unpopulate(val, &d.ServiceID)
3177			delete(rawMsg, key)
3178		}
3179		if err != nil {
3180			return err
3181		}
3182	}
3183	return nil
3184}
3185
3186// DeletedServicesBeginPurgeOptions contains the optional parameters for the DeletedServices.BeginPurge method.
3187type DeletedServicesBeginPurgeOptions struct {
3188	// placeholder for future optional parameters
3189}
3190
3191// DeletedServicesCollection - Paged deleted Api Management Services List Representation.
3192type DeletedServicesCollection struct {
3193	// READ-ONLY; Next page link if any.
3194	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
3195
3196	// READ-ONLY; Page values.
3197	Value []*DeletedServiceContract `json:"value,omitempty" azure:"ro"`
3198}
3199
3200// MarshalJSON implements the json.Marshaller interface for type DeletedServicesCollection.
3201func (d DeletedServicesCollection) MarshalJSON() ([]byte, error) {
3202	objectMap := make(map[string]interface{})
3203	populate(objectMap, "nextLink", d.NextLink)
3204	populate(objectMap, "value", d.Value)
3205	return json.Marshal(objectMap)
3206}
3207
3208// DeletedServicesGetByNameOptions contains the optional parameters for the DeletedServices.GetByName method.
3209type DeletedServicesGetByNameOptions struct {
3210	// placeholder for future optional parameters
3211}
3212
3213// DeletedServicesListBySubscriptionOptions contains the optional parameters for the DeletedServices.ListBySubscription method.
3214type DeletedServicesListBySubscriptionOptions struct {
3215	// placeholder for future optional parameters
3216}
3217
3218// DeployConfigurationParameterProperties - Parameters supplied to the Deploy Configuration operation.
3219type DeployConfigurationParameterProperties struct {
3220	// REQUIRED; The name of the Git branch from which the configuration is to be deployed to the configuration database.
3221	Branch *string `json:"branch,omitempty"`
3222
3223	// The value enforcing deleting subscriptions to products that are deleted in this update.
3224	Force *bool `json:"force,omitempty"`
3225}
3226
3227// DeployConfigurationParameters - Deploy Tenant Configuration Contract.
3228type DeployConfigurationParameters struct {
3229	// Deploy Configuration Parameter contract properties.
3230	Properties *DeployConfigurationParameterProperties `json:"properties,omitempty"`
3231}
3232
3233// DiagnosticCollection - Paged Diagnostic list representation.
3234type DiagnosticCollection struct {
3235	// Total record count number across all pages.
3236	Count *int64 `json:"count,omitempty"`
3237
3238	// Next page link if any.
3239	NextLink *string `json:"nextLink,omitempty"`
3240
3241	// Page values.
3242	Value []*DiagnosticContract `json:"value,omitempty"`
3243}
3244
3245// MarshalJSON implements the json.Marshaller interface for type DiagnosticCollection.
3246func (d DiagnosticCollection) MarshalJSON() ([]byte, error) {
3247	objectMap := make(map[string]interface{})
3248	populate(objectMap, "count", d.Count)
3249	populate(objectMap, "nextLink", d.NextLink)
3250	populate(objectMap, "value", d.Value)
3251	return json.Marshal(objectMap)
3252}
3253
3254// DiagnosticContract - Diagnostic details.
3255type DiagnosticContract struct {
3256	Resource
3257	// Diagnostic entity contract properties.
3258	Properties *DiagnosticContractProperties `json:"properties,omitempty"`
3259}
3260
3261// MarshalJSON implements the json.Marshaller interface for type DiagnosticContract.
3262func (d DiagnosticContract) MarshalJSON() ([]byte, error) {
3263	objectMap := d.Resource.marshalInternal()
3264	populate(objectMap, "properties", d.Properties)
3265	return json.Marshal(objectMap)
3266}
3267
3268// DiagnosticContractProperties - Diagnostic Entity Properties
3269type DiagnosticContractProperties struct {
3270	// REQUIRED; Resource Id of a target logger.
3271	LoggerID *string `json:"loggerId,omitempty"`
3272
3273	// Specifies for what type of messages sampling settings should not apply.
3274	AlwaysLog *AlwaysLog `json:"alwaysLog,omitempty"`
3275
3276	// Diagnostic settings for incoming/outgoing HTTP messages to the Backend
3277	Backend *PipelineDiagnosticSettings `json:"backend,omitempty"`
3278
3279	// Diagnostic settings for incoming/outgoing HTTP messages to the Gateway.
3280	Frontend *PipelineDiagnosticSettings `json:"frontend,omitempty"`
3281
3282	// Sets correlation protocol to use for Application Insights diagnostics.
3283	HTTPCorrelationProtocol *HTTPCorrelationProtocol `json:"httpCorrelationProtocol,omitempty"`
3284
3285	// Log the ClientIP. Default is false.
3286	LogClientIP *bool `json:"logClientIp,omitempty"`
3287
3288	// The format of the Operation Name for Application Insights telemetries. Default is Name.
3289	OperationNameFormat *OperationNameFormat `json:"operationNameFormat,omitempty"`
3290
3291	// Sampling settings for Diagnostic.
3292	Sampling *SamplingSettings `json:"sampling,omitempty"`
3293
3294	// The verbosity level applied to traces emitted by trace policies.
3295	Verbosity *Verbosity `json:"verbosity,omitempty"`
3296}
3297
3298// DiagnosticCreateOrUpdateOptions contains the optional parameters for the Diagnostic.CreateOrUpdate method.
3299type DiagnosticCreateOrUpdateOptions struct {
3300	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
3301	IfMatch *string
3302}
3303
3304// DiagnosticDeleteOptions contains the optional parameters for the Diagnostic.Delete method.
3305type DiagnosticDeleteOptions struct {
3306	// placeholder for future optional parameters
3307}
3308
3309// DiagnosticGetEntityTagOptions contains the optional parameters for the Diagnostic.GetEntityTag method.
3310type DiagnosticGetEntityTagOptions struct {
3311	// placeholder for future optional parameters
3312}
3313
3314// DiagnosticGetOptions contains the optional parameters for the Diagnostic.Get method.
3315type DiagnosticGetOptions struct {
3316	// placeholder for future optional parameters
3317}
3318
3319// DiagnosticListByServiceOptions contains the optional parameters for the Diagnostic.ListByService method.
3320type DiagnosticListByServiceOptions struct {
3321	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
3322	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>
3323	Filter *string
3324	// Number of records to skip.
3325	Skip *int32
3326	// Number of records to return.
3327	Top *int32
3328}
3329
3330// DiagnosticUpdateOptions contains the optional parameters for the Diagnostic.Update method.
3331type DiagnosticUpdateOptions struct {
3332	// placeholder for future optional parameters
3333}
3334
3335// EmailTemplateCollection - Paged email template list representation.
3336type EmailTemplateCollection struct {
3337	// Total record count number across all pages.
3338	Count *int64 `json:"count,omitempty"`
3339
3340	// Next page link if any.
3341	NextLink *string `json:"nextLink,omitempty"`
3342
3343	// Page values.
3344	Value []*EmailTemplateContract `json:"value,omitempty"`
3345}
3346
3347// MarshalJSON implements the json.Marshaller interface for type EmailTemplateCollection.
3348func (e EmailTemplateCollection) MarshalJSON() ([]byte, error) {
3349	objectMap := make(map[string]interface{})
3350	populate(objectMap, "count", e.Count)
3351	populate(objectMap, "nextLink", e.NextLink)
3352	populate(objectMap, "value", e.Value)
3353	return json.Marshal(objectMap)
3354}
3355
3356// EmailTemplateContract - Email Template details.
3357type EmailTemplateContract struct {
3358	Resource
3359	// Email Template entity contract properties.
3360	Properties *EmailTemplateContractProperties `json:"properties,omitempty"`
3361}
3362
3363// MarshalJSON implements the json.Marshaller interface for type EmailTemplateContract.
3364func (e EmailTemplateContract) MarshalJSON() ([]byte, error) {
3365	objectMap := e.Resource.marshalInternal()
3366	populate(objectMap, "properties", e.Properties)
3367	return json.Marshal(objectMap)
3368}
3369
3370// EmailTemplateContractProperties - Email Template Contract properties.
3371type EmailTemplateContractProperties struct {
3372	// REQUIRED; Email Template Body. This should be a valid XDocument
3373	Body *string `json:"body,omitempty"`
3374
3375	// REQUIRED; Subject of the Template.
3376	Subject *string `json:"subject,omitempty"`
3377
3378	// Description of the Email Template.
3379	Description *string `json:"description,omitempty"`
3380
3381	// Email Template Parameter values.
3382	Parameters []*EmailTemplateParametersContractProperties `json:"parameters,omitempty"`
3383
3384	// Title of the Template.
3385	Title *string `json:"title,omitempty"`
3386
3387	// READ-ONLY; Whether the template is the default template provided by Api Management or has been edited.
3388	IsDefault *bool `json:"isDefault,omitempty" azure:"ro"`
3389}
3390
3391// MarshalJSON implements the json.Marshaller interface for type EmailTemplateContractProperties.
3392func (e EmailTemplateContractProperties) MarshalJSON() ([]byte, error) {
3393	objectMap := make(map[string]interface{})
3394	populate(objectMap, "body", e.Body)
3395	populate(objectMap, "description", e.Description)
3396	populate(objectMap, "isDefault", e.IsDefault)
3397	populate(objectMap, "parameters", e.Parameters)
3398	populate(objectMap, "subject", e.Subject)
3399	populate(objectMap, "title", e.Title)
3400	return json.Marshal(objectMap)
3401}
3402
3403// EmailTemplateCreateOrUpdateOptions contains the optional parameters for the EmailTemplate.CreateOrUpdate method.
3404type EmailTemplateCreateOrUpdateOptions struct {
3405	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
3406	IfMatch *string
3407}
3408
3409// EmailTemplateDeleteOptions contains the optional parameters for the EmailTemplate.Delete method.
3410type EmailTemplateDeleteOptions struct {
3411	// placeholder for future optional parameters
3412}
3413
3414// EmailTemplateGetEntityTagOptions contains the optional parameters for the EmailTemplate.GetEntityTag method.
3415type EmailTemplateGetEntityTagOptions struct {
3416	// placeholder for future optional parameters
3417}
3418
3419// EmailTemplateGetOptions contains the optional parameters for the EmailTemplate.Get method.
3420type EmailTemplateGetOptions struct {
3421	// placeholder for future optional parameters
3422}
3423
3424// EmailTemplateListByServiceOptions contains the optional parameters for the EmailTemplate.ListByService method.
3425type EmailTemplateListByServiceOptions struct {
3426	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
3427	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>
3428	Filter *string
3429	// Number of records to skip.
3430	Skip *int32
3431	// Number of records to return.
3432	Top *int32
3433}
3434
3435// EmailTemplateParametersContractProperties - Email Template Parameter contract.
3436type EmailTemplateParametersContractProperties struct {
3437	// Template parameter description.
3438	Description *string `json:"description,omitempty"`
3439
3440	// Template parameter name.
3441	Name *string `json:"name,omitempty"`
3442
3443	// Template parameter title.
3444	Title *string `json:"title,omitempty"`
3445}
3446
3447// EmailTemplateUpdateOptions contains the optional parameters for the EmailTemplate.Update method.
3448type EmailTemplateUpdateOptions struct {
3449	// placeholder for future optional parameters
3450}
3451
3452// EmailTemplateUpdateParameterProperties - Email Template Update Contract properties.
3453type EmailTemplateUpdateParameterProperties struct {
3454	// Email Template Body. This should be a valid XDocument
3455	Body *string `json:"body,omitempty"`
3456
3457	// Description of the Email Template.
3458	Description *string `json:"description,omitempty"`
3459
3460	// Email Template Parameter values.
3461	Parameters []*EmailTemplateParametersContractProperties `json:"parameters,omitempty"`
3462
3463	// Subject of the Template.
3464	Subject *string `json:"subject,omitempty"`
3465
3466	// Title of the Template.
3467	Title *string `json:"title,omitempty"`
3468}
3469
3470// MarshalJSON implements the json.Marshaller interface for type EmailTemplateUpdateParameterProperties.
3471func (e EmailTemplateUpdateParameterProperties) MarshalJSON() ([]byte, error) {
3472	objectMap := make(map[string]interface{})
3473	populate(objectMap, "body", e.Body)
3474	populate(objectMap, "description", e.Description)
3475	populate(objectMap, "parameters", e.Parameters)
3476	populate(objectMap, "subject", e.Subject)
3477	populate(objectMap, "title", e.Title)
3478	return json.Marshal(objectMap)
3479}
3480
3481// EmailTemplateUpdateParameters - Email Template update Parameters.
3482type EmailTemplateUpdateParameters struct {
3483	// Email Template Update contract properties.
3484	Properties *EmailTemplateUpdateParameterProperties `json:"properties,omitempty"`
3485}
3486
3487// MarshalJSON implements the json.Marshaller interface for type EmailTemplateUpdateParameters.
3488func (e EmailTemplateUpdateParameters) MarshalJSON() ([]byte, error) {
3489	objectMap := make(map[string]interface{})
3490	populate(objectMap, "properties", e.Properties)
3491	return json.Marshal(objectMap)
3492}
3493
3494// ErrorFieldContract - Error Field contract.
3495type ErrorFieldContract struct {
3496	// Property level error code.
3497	Code *string `json:"code,omitempty"`
3498
3499	// Human-readable representation of property-level error.
3500	Message *string `json:"message,omitempty"`
3501
3502	// Property name.
3503	Target *string `json:"target,omitempty"`
3504}
3505
3506// ErrorResponse - Error Response.
3507// Implements the error and azcore.HTTPResponse interfaces.
3508type ErrorResponse struct {
3509	raw string
3510	// Properties of the Error Response.
3511	InnerError *ErrorResponseBody `json:"error,omitempty"`
3512}
3513
3514// Error implements the error interface for type ErrorResponse.
3515// The contents of the error text are not contractual and subject to change.
3516func (e ErrorResponse) Error() string {
3517	return e.raw
3518}
3519
3520// ErrorResponseBody - Error Body contract.
3521type ErrorResponseBody struct {
3522	// Service-defined error code. This code serves as a sub-status for the HTTP error code specified in the response.
3523	Code *string `json:"code,omitempty"`
3524
3525	// The list of invalid fields send in request, in case of validation error.
3526	Details []*ErrorFieldContract `json:"details,omitempty"`
3527
3528	// Human-readable representation of the error.
3529	Message *string `json:"message,omitempty"`
3530}
3531
3532// MarshalJSON implements the json.Marshaller interface for type ErrorResponseBody.
3533func (e ErrorResponseBody) MarshalJSON() ([]byte, error) {
3534	objectMap := make(map[string]interface{})
3535	populate(objectMap, "code", e.Code)
3536	populate(objectMap, "details", e.Details)
3537	populate(objectMap, "message", e.Message)
3538	return json.Marshal(objectMap)
3539}
3540
3541// GatewayAPICreateOrUpdateOptions contains the optional parameters for the GatewayAPI.CreateOrUpdate method.
3542type GatewayAPICreateOrUpdateOptions struct {
3543	Parameters *AssociationContract
3544}
3545
3546// GatewayAPIDeleteOptions contains the optional parameters for the GatewayAPI.Delete method.
3547type GatewayAPIDeleteOptions struct {
3548	// placeholder for future optional parameters
3549}
3550
3551// GatewayAPIGetEntityTagOptions contains the optional parameters for the GatewayAPI.GetEntityTag method.
3552type GatewayAPIGetEntityTagOptions struct {
3553	// placeholder for future optional parameters
3554}
3555
3556// GatewayAPIListByServiceOptions contains the optional parameters for the GatewayAPI.ListByService method.
3557type GatewayAPIListByServiceOptions struct {
3558	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
3559	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>
3560	Filter *string
3561	// Number of records to skip.
3562	Skip *int32
3563	// Number of records to return.
3564	Top *int32
3565}
3566
3567// GatewayCertificateAuthorityCollection - Paged Gateway certificate authority list representation.
3568type GatewayCertificateAuthorityCollection struct {
3569	// READ-ONLY; Next page link if any.
3570	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
3571
3572	// READ-ONLY; Page values.
3573	Value []*GatewayCertificateAuthorityContract `json:"value,omitempty" azure:"ro"`
3574}
3575
3576// MarshalJSON implements the json.Marshaller interface for type GatewayCertificateAuthorityCollection.
3577func (g GatewayCertificateAuthorityCollection) MarshalJSON() ([]byte, error) {
3578	objectMap := make(map[string]interface{})
3579	populate(objectMap, "nextLink", g.NextLink)
3580	populate(objectMap, "value", g.Value)
3581	return json.Marshal(objectMap)
3582}
3583
3584// GatewayCertificateAuthorityContract - Gateway certificate authority details.
3585type GatewayCertificateAuthorityContract struct {
3586	Resource
3587	// Gateway certificate authority details.
3588	Properties *GatewayCertificateAuthorityContractProperties `json:"properties,omitempty"`
3589}
3590
3591// MarshalJSON implements the json.Marshaller interface for type GatewayCertificateAuthorityContract.
3592func (g GatewayCertificateAuthorityContract) MarshalJSON() ([]byte, error) {
3593	objectMap := g.Resource.marshalInternal()
3594	populate(objectMap, "properties", g.Properties)
3595	return json.Marshal(objectMap)
3596}
3597
3598// GatewayCertificateAuthorityContractProperties - Gateway certificate authority details.
3599type GatewayCertificateAuthorityContractProperties struct {
3600	// Determines whether certificate authority is trusted.
3601	IsTrusted *bool `json:"isTrusted,omitempty"`
3602}
3603
3604// GatewayCertificateAuthorityCreateOrUpdateOptions contains the optional parameters for the GatewayCertificateAuthority.CreateOrUpdate method.
3605type GatewayCertificateAuthorityCreateOrUpdateOptions struct {
3606	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
3607	IfMatch *string
3608}
3609
3610// GatewayCertificateAuthorityDeleteOptions contains the optional parameters for the GatewayCertificateAuthority.Delete method.
3611type GatewayCertificateAuthorityDeleteOptions struct {
3612	// placeholder for future optional parameters
3613}
3614
3615// GatewayCertificateAuthorityGetEntityTagOptions contains the optional parameters for the GatewayCertificateAuthority.GetEntityTag method.
3616type GatewayCertificateAuthorityGetEntityTagOptions struct {
3617	// placeholder for future optional parameters
3618}
3619
3620// GatewayCertificateAuthorityGetOptions contains the optional parameters for the GatewayCertificateAuthority.Get method.
3621type GatewayCertificateAuthorityGetOptions struct {
3622	// placeholder for future optional parameters
3623}
3624
3625// GatewayCertificateAuthorityListByServiceOptions contains the optional parameters for the GatewayCertificateAuthority.ListByService method.
3626type GatewayCertificateAuthorityListByServiceOptions struct {
3627	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | eq,
3628	// ne | |</br>
3629	Filter *string
3630	// Number of records to skip.
3631	Skip *int32
3632	// Number of records to return.
3633	Top *int32
3634}
3635
3636// GatewayCollection - Paged Gateway list representation.
3637type GatewayCollection struct {
3638	// Total record count number across all pages.
3639	Count *int64 `json:"count,omitempty"`
3640
3641	// READ-ONLY; Next page link if any.
3642	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
3643
3644	// READ-ONLY; Page values.
3645	Value []*GatewayContract `json:"value,omitempty" azure:"ro"`
3646}
3647
3648// MarshalJSON implements the json.Marshaller interface for type GatewayCollection.
3649func (g GatewayCollection) MarshalJSON() ([]byte, error) {
3650	objectMap := make(map[string]interface{})
3651	populate(objectMap, "count", g.Count)
3652	populate(objectMap, "nextLink", g.NextLink)
3653	populate(objectMap, "value", g.Value)
3654	return json.Marshal(objectMap)
3655}
3656
3657// GatewayContract - Gateway details.
3658type GatewayContract struct {
3659	Resource
3660	// Gateway details.
3661	Properties *GatewayContractProperties `json:"properties,omitempty"`
3662}
3663
3664// MarshalJSON implements the json.Marshaller interface for type GatewayContract.
3665func (g GatewayContract) MarshalJSON() ([]byte, error) {
3666	objectMap := g.Resource.marshalInternal()
3667	populate(objectMap, "properties", g.Properties)
3668	return json.Marshal(objectMap)
3669}
3670
3671// GatewayContractProperties - Properties of the Gateway contract.
3672type GatewayContractProperties struct {
3673	// Gateway description
3674	Description *string `json:"description,omitempty"`
3675
3676	// Gateway location.
3677	LocationData *ResourceLocationDataContract `json:"locationData,omitempty"`
3678}
3679
3680// GatewayCreateOrUpdateOptions contains the optional parameters for the Gateway.CreateOrUpdate method.
3681type GatewayCreateOrUpdateOptions struct {
3682	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
3683	IfMatch *string
3684}
3685
3686// GatewayDeleteOptions contains the optional parameters for the Gateway.Delete method.
3687type GatewayDeleteOptions struct {
3688	// placeholder for future optional parameters
3689}
3690
3691// GatewayGenerateTokenOptions contains the optional parameters for the Gateway.GenerateToken method.
3692type GatewayGenerateTokenOptions struct {
3693	// placeholder for future optional parameters
3694}
3695
3696// GatewayGetEntityTagOptions contains the optional parameters for the Gateway.GetEntityTag method.
3697type GatewayGetEntityTagOptions struct {
3698	// placeholder for future optional parameters
3699}
3700
3701// GatewayGetOptions contains the optional parameters for the Gateway.Get method.
3702type GatewayGetOptions struct {
3703	// placeholder for future optional parameters
3704}
3705
3706// GatewayHostnameConfigurationCollection - Paged Gateway hostname configuration list representation.
3707type GatewayHostnameConfigurationCollection struct {
3708	// READ-ONLY; Next page link if any.
3709	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
3710
3711	// READ-ONLY; Page values.
3712	Value []*GatewayHostnameConfigurationContract `json:"value,omitempty" azure:"ro"`
3713}
3714
3715// MarshalJSON implements the json.Marshaller interface for type GatewayHostnameConfigurationCollection.
3716func (g GatewayHostnameConfigurationCollection) MarshalJSON() ([]byte, error) {
3717	objectMap := make(map[string]interface{})
3718	populate(objectMap, "nextLink", g.NextLink)
3719	populate(objectMap, "value", g.Value)
3720	return json.Marshal(objectMap)
3721}
3722
3723// GatewayHostnameConfigurationContract - Gateway hostname configuration details.
3724type GatewayHostnameConfigurationContract struct {
3725	Resource
3726	// Gateway hostname configuration details.
3727	Properties *GatewayHostnameConfigurationContractProperties `json:"properties,omitempty"`
3728}
3729
3730// MarshalJSON implements the json.Marshaller interface for type GatewayHostnameConfigurationContract.
3731func (g GatewayHostnameConfigurationContract) MarshalJSON() ([]byte, error) {
3732	objectMap := g.Resource.marshalInternal()
3733	populate(objectMap, "properties", g.Properties)
3734	return json.Marshal(objectMap)
3735}
3736
3737// GatewayHostnameConfigurationContractProperties - Gateway hostname configuration details.
3738type GatewayHostnameConfigurationContractProperties struct {
3739	// Identifier of Certificate entity that will be used for TLS connection establishment
3740	CertificateID *string `json:"certificateId,omitempty"`
3741
3742	// Specifies if HTTP/2.0 is supported
3743	HTTP2Enabled *bool `json:"http2Enabled,omitempty"`
3744
3745	// Hostname value. Supports valid domain name, partial or full wildcard
3746	Hostname *string `json:"hostname,omitempty"`
3747
3748	// Determines whether gateway requests client certificate
3749	NegotiateClientCertificate *bool `json:"negotiateClientCertificate,omitempty"`
3750
3751	// Specifies if TLS 1.0 is supported
3752	Tls10Enabled *bool `json:"tls10Enabled,omitempty"`
3753
3754	// Specifies if TLS 1.1 is supported
3755	Tls11Enabled *bool `json:"tls11Enabled,omitempty"`
3756}
3757
3758// GatewayHostnameConfigurationCreateOrUpdateOptions contains the optional parameters for the GatewayHostnameConfiguration.CreateOrUpdate method.
3759type GatewayHostnameConfigurationCreateOrUpdateOptions struct {
3760	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
3761	IfMatch *string
3762}
3763
3764// GatewayHostnameConfigurationDeleteOptions contains the optional parameters for the GatewayHostnameConfiguration.Delete method.
3765type GatewayHostnameConfigurationDeleteOptions struct {
3766	// placeholder for future optional parameters
3767}
3768
3769// GatewayHostnameConfigurationGetEntityTagOptions contains the optional parameters for the GatewayHostnameConfiguration.GetEntityTag method.
3770type GatewayHostnameConfigurationGetEntityTagOptions struct {
3771	// placeholder for future optional parameters
3772}
3773
3774// GatewayHostnameConfigurationGetOptions contains the optional parameters for the GatewayHostnameConfiguration.Get method.
3775type GatewayHostnameConfigurationGetOptions struct {
3776	// placeholder for future optional parameters
3777}
3778
3779// GatewayHostnameConfigurationListByServiceOptions contains the optional parameters for the GatewayHostnameConfiguration.ListByService method.
3780type GatewayHostnameConfigurationListByServiceOptions struct {
3781	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
3782	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| hostname | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
3783	// endswith |</br>
3784	Filter *string
3785	// Number of records to skip.
3786	Skip *int32
3787	// Number of records to return.
3788	Top *int32
3789}
3790
3791// GatewayKeyRegenerationRequestContract - Gateway key regeneration request contract properties.
3792type GatewayKeyRegenerationRequestContract struct {
3793	// REQUIRED; The Key being regenerated.
3794	KeyType *KeyType `json:"keyType,omitempty"`
3795}
3796
3797// GatewayKeysContract - Gateway authentication keys.
3798type GatewayKeysContract struct {
3799	// Primary gateway key.
3800	Primary *string `json:"primary,omitempty"`
3801
3802	// Secondary gateway key.
3803	Secondary *string `json:"secondary,omitempty"`
3804}
3805
3806// GatewayListByServiceOptions contains the optional parameters for the Gateway.ListByService method.
3807type GatewayListByServiceOptions struct {
3808	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
3809	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| region | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
3810	// endswith |</br>| description | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>
3811	Filter *string
3812	// Number of records to skip.
3813	Skip *int32
3814	// Number of records to return.
3815	Top *int32
3816}
3817
3818// GatewayListKeysOptions contains the optional parameters for the Gateway.ListKeys method.
3819type GatewayListKeysOptions struct {
3820	// placeholder for future optional parameters
3821}
3822
3823// GatewayRegenerateKeyOptions contains the optional parameters for the Gateway.RegenerateKey method.
3824type GatewayRegenerateKeyOptions struct {
3825	// placeholder for future optional parameters
3826}
3827
3828// GatewayTokenContract - Gateway access token.
3829type GatewayTokenContract struct {
3830	// Shared Access Authentication token value for the Gateway.
3831	Value *string `json:"value,omitempty"`
3832}
3833
3834// GatewayTokenRequestContract - Gateway token request contract properties.
3835type GatewayTokenRequestContract struct {
3836	// REQUIRED; The Expiry time of the Token. Maximum token expiry time is set to 30 days. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ
3837	// as specified by the ISO 8601 standard.
3838	Expiry *time.Time `json:"expiry,omitempty"`
3839
3840	// REQUIRED; The Key to be used to generate gateway token.
3841	KeyType *KeyType `json:"keyType,omitempty"`
3842}
3843
3844// MarshalJSON implements the json.Marshaller interface for type GatewayTokenRequestContract.
3845func (g GatewayTokenRequestContract) MarshalJSON() ([]byte, error) {
3846	objectMap := make(map[string]interface{})
3847	populate(objectMap, "expiry", (*timeRFC3339)(g.Expiry))
3848	populate(objectMap, "keyType", g.KeyType)
3849	return json.Marshal(objectMap)
3850}
3851
3852// UnmarshalJSON implements the json.Unmarshaller interface for type GatewayTokenRequestContract.
3853func (g *GatewayTokenRequestContract) UnmarshalJSON(data []byte) error {
3854	var rawMsg map[string]json.RawMessage
3855	if err := json.Unmarshal(data, &rawMsg); err != nil {
3856		return err
3857	}
3858	for key, val := range rawMsg {
3859		var err error
3860		switch key {
3861		case "expiry":
3862			var aux timeRFC3339
3863			err = unpopulate(val, &aux)
3864			g.Expiry = (*time.Time)(&aux)
3865			delete(rawMsg, key)
3866		case "keyType":
3867			err = unpopulate(val, &g.KeyType)
3868			delete(rawMsg, key)
3869		}
3870		if err != nil {
3871			return err
3872		}
3873	}
3874	return nil
3875}
3876
3877// GatewayUpdateOptions contains the optional parameters for the Gateway.Update method.
3878type GatewayUpdateOptions struct {
3879	// placeholder for future optional parameters
3880}
3881
3882// GenerateSsoURLResult - Generate SSO Url operations response details.
3883type GenerateSsoURLResult struct {
3884	// Redirect Url containing the SSO URL value.
3885	Value *string `json:"value,omitempty"`
3886}
3887
3888// GroupCollection - Paged Group list representation.
3889type GroupCollection struct {
3890	// Total record count number across all pages.
3891	Count *int64 `json:"count,omitempty"`
3892
3893	// Next page link if any.
3894	NextLink *string `json:"nextLink,omitempty"`
3895
3896	// Page values.
3897	Value []*GroupContract `json:"value,omitempty"`
3898}
3899
3900// MarshalJSON implements the json.Marshaller interface for type GroupCollection.
3901func (g GroupCollection) MarshalJSON() ([]byte, error) {
3902	objectMap := make(map[string]interface{})
3903	populate(objectMap, "count", g.Count)
3904	populate(objectMap, "nextLink", g.NextLink)
3905	populate(objectMap, "value", g.Value)
3906	return json.Marshal(objectMap)
3907}
3908
3909// GroupContract - Contract details.
3910type GroupContract struct {
3911	Resource
3912	// Group entity contract properties.
3913	Properties *GroupContractProperties `json:"properties,omitempty"`
3914}
3915
3916// MarshalJSON implements the json.Marshaller interface for type GroupContract.
3917func (g GroupContract) MarshalJSON() ([]byte, error) {
3918	objectMap := g.Resource.marshalInternal()
3919	populate(objectMap, "properties", g.Properties)
3920	return json.Marshal(objectMap)
3921}
3922
3923// GroupContractProperties - Group contract Properties.
3924type GroupContractProperties struct {
3925	// REQUIRED; Group name.
3926	DisplayName *string `json:"displayName,omitempty"`
3927
3928	// Group description. Can contain HTML formatting tags.
3929	Description *string `json:"description,omitempty"`
3930
3931	// For external groups, this property contains the id of the group from the external identity provider, e.g. for Azure Active Directory aad://<tenant>.onmicrosoft.com/groups/<group
3932	// object id>; otherwise
3933	// the value is null.
3934	ExternalID *string `json:"externalId,omitempty"`
3935
3936	// Group type.
3937	Type *GroupType `json:"type,omitempty"`
3938
3939	// READ-ONLY; true if the group is one of the three system groups (Administrators, Developers, or Guests); otherwise false.
3940	BuiltIn *bool `json:"builtIn,omitempty" azure:"ro"`
3941}
3942
3943// GroupCreateOrUpdateOptions contains the optional parameters for the Group.CreateOrUpdate method.
3944type GroupCreateOrUpdateOptions struct {
3945	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
3946	IfMatch *string
3947}
3948
3949// GroupCreateParameters - Parameters supplied to the Create Group operation.
3950type GroupCreateParameters struct {
3951	// Properties supplied to Create Group operation.
3952	Properties *GroupCreateParametersProperties `json:"properties,omitempty"`
3953}
3954
3955// GroupCreateParametersProperties - Parameters supplied to the Create Group operation.
3956type GroupCreateParametersProperties struct {
3957	// REQUIRED; Group name.
3958	DisplayName *string `json:"displayName,omitempty"`
3959
3960	// Group description.
3961	Description *string `json:"description,omitempty"`
3962
3963	// Identifier of the external groups, this property contains the id of the group from the external identity provider, e.g. for Azure Active Directory aad://<tenant>.onmicrosoft.com/groups/<group
3964	// object
3965	// id>; otherwise the value is null.
3966	ExternalID *string `json:"externalId,omitempty"`
3967
3968	// Group type.
3969	Type *GroupType `json:"type,omitempty"`
3970}
3971
3972// GroupDeleteOptions contains the optional parameters for the Group.Delete method.
3973type GroupDeleteOptions struct {
3974	// placeholder for future optional parameters
3975}
3976
3977// GroupGetEntityTagOptions contains the optional parameters for the Group.GetEntityTag method.
3978type GroupGetEntityTagOptions struct {
3979	// placeholder for future optional parameters
3980}
3981
3982// GroupGetOptions contains the optional parameters for the Group.Get method.
3983type GroupGetOptions struct {
3984	// placeholder for future optional parameters
3985}
3986
3987// GroupListByServiceOptions contains the optional parameters for the Group.ListByService method.
3988type GroupListByServiceOptions struct {
3989	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
3990	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| displayName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
3991	// endswith |</br>| description | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| externalId | filter | eq | |</br>
3992	Filter *string
3993	// Number of records to skip.
3994	Skip *int32
3995	// Number of records to return.
3996	Top *int32
3997}
3998
3999// GroupUpdateOptions contains the optional parameters for the Group.Update method.
4000type GroupUpdateOptions struct {
4001	// placeholder for future optional parameters
4002}
4003
4004// GroupUpdateParameters - Parameters supplied to the Update Group operation.
4005type GroupUpdateParameters struct {
4006	// Group entity update contract properties.
4007	Properties *GroupUpdateParametersProperties `json:"properties,omitempty"`
4008}
4009
4010// MarshalJSON implements the json.Marshaller interface for type GroupUpdateParameters.
4011func (g GroupUpdateParameters) MarshalJSON() ([]byte, error) {
4012	objectMap := make(map[string]interface{})
4013	populate(objectMap, "properties", g.Properties)
4014	return json.Marshal(objectMap)
4015}
4016
4017// GroupUpdateParametersProperties - Parameters supplied to the Update Group operation.
4018type GroupUpdateParametersProperties struct {
4019	// Group description.
4020	Description *string `json:"description,omitempty"`
4021
4022	// Group name.
4023	DisplayName *string `json:"displayName,omitempty"`
4024
4025	// Identifier of the external groups, this property contains the id of the group from the external identity provider, e.g. for Azure Active Directory aad://<tenant>.onmicrosoft.com/groups/<group
4026	// object
4027	// id>; otherwise the value is null.
4028	ExternalID *string `json:"externalId,omitempty"`
4029
4030	// Group type.
4031	Type *GroupType `json:"type,omitempty"`
4032}
4033
4034// GroupUserCheckEntityExistsOptions contains the optional parameters for the GroupUser.CheckEntityExists method.
4035type GroupUserCheckEntityExistsOptions struct {
4036	// placeholder for future optional parameters
4037}
4038
4039// GroupUserCreateOptions contains the optional parameters for the GroupUser.Create method.
4040type GroupUserCreateOptions struct {
4041	// placeholder for future optional parameters
4042}
4043
4044// GroupUserDeleteOptions contains the optional parameters for the GroupUser.Delete method.
4045type GroupUserDeleteOptions struct {
4046	// placeholder for future optional parameters
4047}
4048
4049// GroupUserListOptions contains the optional parameters for the GroupUser.List method.
4050type GroupUserListOptions struct {
4051	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
4052	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| firstName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
4053	// endswith |</br>| lastName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| email | filter | ge, le, eq, ne, gt,
4054	// lt | substringof, contains, startswith, endswith |</br>| registrationDate | filter | ge, le, eq, ne, gt, lt | |</br>| note | filter | ge, le, eq, ne,
4055	// gt, lt | substringof, contains, startswith, endswith |</br>
4056	Filter *string
4057	// Number of records to skip.
4058	Skip *int32
4059	// Number of records to return.
4060	Top *int32
4061}
4062
4063// HTTPMessageDiagnostic - Http message diagnostic settings.
4064type HTTPMessageDiagnostic struct {
4065	// Body logging settings.
4066	Body *BodyDiagnosticSettings `json:"body,omitempty"`
4067
4068	// Data masking settings.
4069	DataMasking *DataMasking `json:"dataMasking,omitempty"`
4070
4071	// Array of HTTP Headers to log.
4072	Headers []*string `json:"headers,omitempty"`
4073}
4074
4075// MarshalJSON implements the json.Marshaller interface for type HTTPMessageDiagnostic.
4076func (h HTTPMessageDiagnostic) MarshalJSON() ([]byte, error) {
4077	objectMap := make(map[string]interface{})
4078	populate(objectMap, "body", h.Body)
4079	populate(objectMap, "dataMasking", h.DataMasking)
4080	populate(objectMap, "headers", h.Headers)
4081	return json.Marshal(objectMap)
4082}
4083
4084// HostnameConfiguration - Custom hostname configuration.
4085type HostnameConfiguration struct {
4086	// REQUIRED; Hostname to configure on the Api Management service.
4087	HostName *string `json:"hostName,omitempty"`
4088
4089	// REQUIRED; Hostname type.
4090	Type *HostnameType `json:"type,omitempty"`
4091
4092	// Certificate information.
4093	Certificate *CertificateInformation `json:"certificate,omitempty"`
4094
4095	// Certificate Password.
4096	CertificatePassword *string `json:"certificatePassword,omitempty"`
4097
4098	// Specify true to setup the certificate associated with this Hostname as the Default SSL Certificate. If a client does not send the SNI header, then this
4099	// will be the certificate that will be challenged.
4100	// The property is useful if a service has multiple custom hostname enabled and it needs to decide on the default ssl certificate. The setting only applied
4101	// to Proxy Hostname Type.
4102	DefaultSSLBinding *bool `json:"defaultSslBinding,omitempty"`
4103
4104	// Base64 Encoded certificate.
4105	EncodedCertificate *string `json:"encodedCertificate,omitempty"`
4106
4107	// System or User Assigned Managed identity clientId as generated by Azure AD, which has GET access to the keyVault containing the SSL certificate.
4108	IdentityClientID *string `json:"identityClientId,omitempty"`
4109
4110	// Url to the KeyVault Secret containing the Ssl Certificate. If absolute Url containing version is provided, auto-update of ssl certificate will not work.
4111	// This requires Api Management service to be
4112	// configured with aka.ms/apimmsi. The secret should be of type application/x-pkcs12
4113	KeyVaultID *string `json:"keyVaultId,omitempty"`
4114
4115	// Specify true to always negotiate client certificate on the hostname. Default Value is false.
4116	NegotiateClientCertificate *bool `json:"negotiateClientCertificate,omitempty"`
4117}
4118
4119// IdentityProviderBaseParameters - Identity Provider Base Parameter Properties.
4120type IdentityProviderBaseParameters struct {
4121	// List of Allowed Tenants when configuring Azure Active Directory login.
4122	AllowedTenants []*string `json:"allowedTenants,omitempty"`
4123
4124	// OpenID Connect discovery endpoint hostname for AAD or AAD B2C.
4125	Authority *string `json:"authority,omitempty"`
4126
4127	// Password Reset Policy Name. Only applies to AAD B2C Identity Provider.
4128	PasswordResetPolicyName *string `json:"passwordResetPolicyName,omitempty"`
4129
4130	// Profile Editing Policy Name. Only applies to AAD B2C Identity Provider.
4131	ProfileEditingPolicyName *string `json:"profileEditingPolicyName,omitempty"`
4132
4133	// Signin Policy Name. Only applies to AAD B2C Identity Provider.
4134	SigninPolicyName *string `json:"signinPolicyName,omitempty"`
4135
4136	// The TenantId to use instead of Common when logging into Active Directory
4137	SigninTenant *string `json:"signinTenant,omitempty"`
4138
4139	// Signup Policy Name. Only applies to AAD B2C Identity Provider.
4140	SignupPolicyName *string `json:"signupPolicyName,omitempty"`
4141
4142	// Identity Provider Type identifier.
4143	Type *IdentityProviderType `json:"type,omitempty"`
4144}
4145
4146// MarshalJSON implements the json.Marshaller interface for type IdentityProviderBaseParameters.
4147func (i IdentityProviderBaseParameters) MarshalJSON() ([]byte, error) {
4148	objectMap := i.marshalInternal()
4149	return json.Marshal(objectMap)
4150}
4151
4152func (i IdentityProviderBaseParameters) marshalInternal() map[string]interface{} {
4153	objectMap := make(map[string]interface{})
4154	populate(objectMap, "allowedTenants", i.AllowedTenants)
4155	populate(objectMap, "authority", i.Authority)
4156	populate(objectMap, "passwordResetPolicyName", i.PasswordResetPolicyName)
4157	populate(objectMap, "profileEditingPolicyName", i.ProfileEditingPolicyName)
4158	populate(objectMap, "signinPolicyName", i.SigninPolicyName)
4159	populate(objectMap, "signinTenant", i.SigninTenant)
4160	populate(objectMap, "signupPolicyName", i.SignupPolicyName)
4161	populate(objectMap, "type", i.Type)
4162	return objectMap
4163}
4164
4165// IdentityProviderContract - Identity Provider details.
4166type IdentityProviderContract struct {
4167	Resource
4168	// Identity Provider contract properties.
4169	Properties *IdentityProviderContractProperties `json:"properties,omitempty"`
4170}
4171
4172// MarshalJSON implements the json.Marshaller interface for type IdentityProviderContract.
4173func (i IdentityProviderContract) MarshalJSON() ([]byte, error) {
4174	objectMap := i.Resource.marshalInternal()
4175	populate(objectMap, "properties", i.Properties)
4176	return json.Marshal(objectMap)
4177}
4178
4179// IdentityProviderContractProperties - The external Identity Providers like Facebook, Google, Microsoft, Twitter or Azure Active Directory which can be
4180// used to enable access to the API Management service developer portal for all users.
4181type IdentityProviderContractProperties struct {
4182	IdentityProviderBaseParameters
4183	// REQUIRED; Client Id of the Application in the external Identity Provider. It is App ID for Facebook login, Client ID for Google login, App ID for Microsoft.
4184	ClientID *string `json:"clientId,omitempty"`
4185
4186	// Client secret of the Application in external Identity Provider, used to authenticate login request. For example, it is App Secret for Facebook login,
4187	// API Key for Google login, Public Key for
4188	// Microsoft. This property will not be filled on 'GET' operations! Use '/listSecrets' POST request to get the value.
4189	ClientSecret *string `json:"clientSecret,omitempty"`
4190}
4191
4192// MarshalJSON implements the json.Marshaller interface for type IdentityProviderContractProperties.
4193func (i IdentityProviderContractProperties) MarshalJSON() ([]byte, error) {
4194	objectMap := i.IdentityProviderBaseParameters.marshalInternal()
4195	populate(objectMap, "clientId", i.ClientID)
4196	populate(objectMap, "clientSecret", i.ClientSecret)
4197	return json.Marshal(objectMap)
4198}
4199
4200// IdentityProviderCreateContract - Identity Provider details.
4201type IdentityProviderCreateContract struct {
4202	Resource
4203	// Identity Provider contract properties.
4204	Properties *IdentityProviderCreateContractProperties `json:"properties,omitempty"`
4205}
4206
4207// MarshalJSON implements the json.Marshaller interface for type IdentityProviderCreateContract.
4208func (i IdentityProviderCreateContract) MarshalJSON() ([]byte, error) {
4209	objectMap := i.Resource.marshalInternal()
4210	populate(objectMap, "properties", i.Properties)
4211	return json.Marshal(objectMap)
4212}
4213
4214// IdentityProviderCreateContractProperties - The external Identity Providers like Facebook, Google, Microsoft, Twitter or Azure Active Directory which
4215// can be used to enable access to the API Management service developer portal for all users.
4216type IdentityProviderCreateContractProperties struct {
4217	IdentityProviderBaseParameters
4218	// REQUIRED; Client Id of the Application in the external Identity Provider. It is App ID for Facebook login, Client ID for Google login, App ID for Microsoft.
4219	ClientID *string `json:"clientId,omitempty"`
4220
4221	// REQUIRED; Client secret of the Application in external Identity Provider, used to authenticate login request. For example, it is App Secret for Facebook
4222	// login, API Key for Google login, Public Key for
4223	// Microsoft. This property will not be filled on 'GET' operations! Use '/listSecrets' POST request to get the value.
4224	ClientSecret *string `json:"clientSecret,omitempty"`
4225}
4226
4227// MarshalJSON implements the json.Marshaller interface for type IdentityProviderCreateContractProperties.
4228func (i IdentityProviderCreateContractProperties) MarshalJSON() ([]byte, error) {
4229	objectMap := i.IdentityProviderBaseParameters.marshalInternal()
4230	populate(objectMap, "clientId", i.ClientID)
4231	populate(objectMap, "clientSecret", i.ClientSecret)
4232	return json.Marshal(objectMap)
4233}
4234
4235// IdentityProviderCreateOrUpdateOptions contains the optional parameters for the IdentityProvider.CreateOrUpdate method.
4236type IdentityProviderCreateOrUpdateOptions struct {
4237	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
4238	IfMatch *string
4239}
4240
4241// IdentityProviderDeleteOptions contains the optional parameters for the IdentityProvider.Delete method.
4242type IdentityProviderDeleteOptions struct {
4243	// placeholder for future optional parameters
4244}
4245
4246// IdentityProviderGetEntityTagOptions contains the optional parameters for the IdentityProvider.GetEntityTag method.
4247type IdentityProviderGetEntityTagOptions struct {
4248	// placeholder for future optional parameters
4249}
4250
4251// IdentityProviderGetOptions contains the optional parameters for the IdentityProvider.Get method.
4252type IdentityProviderGetOptions struct {
4253	// placeholder for future optional parameters
4254}
4255
4256// IdentityProviderList - List of all the Identity Providers configured on the service instance.
4257type IdentityProviderList struct {
4258	// Total record count number across all pages.
4259	Count *int64 `json:"count,omitempty"`
4260
4261	// Next page link if any.
4262	NextLink *string `json:"nextLink,omitempty"`
4263
4264	// Identity Provider configuration values.
4265	Value []*IdentityProviderContract `json:"value,omitempty"`
4266}
4267
4268// MarshalJSON implements the json.Marshaller interface for type IdentityProviderList.
4269func (i IdentityProviderList) MarshalJSON() ([]byte, error) {
4270	objectMap := make(map[string]interface{})
4271	populate(objectMap, "count", i.Count)
4272	populate(objectMap, "nextLink", i.NextLink)
4273	populate(objectMap, "value", i.Value)
4274	return json.Marshal(objectMap)
4275}
4276
4277// IdentityProviderListByServiceOptions contains the optional parameters for the IdentityProvider.ListByService method.
4278type IdentityProviderListByServiceOptions struct {
4279	// placeholder for future optional parameters
4280}
4281
4282// IdentityProviderListSecretsOptions contains the optional parameters for the IdentityProvider.ListSecrets method.
4283type IdentityProviderListSecretsOptions struct {
4284	// placeholder for future optional parameters
4285}
4286
4287// IdentityProviderUpdateOptions contains the optional parameters for the IdentityProvider.Update method.
4288type IdentityProviderUpdateOptions struct {
4289	// placeholder for future optional parameters
4290}
4291
4292// IdentityProviderUpdateParameters - Parameters supplied to update Identity Provider
4293type IdentityProviderUpdateParameters struct {
4294	// Identity Provider update properties.
4295	Properties *IdentityProviderUpdateProperties `json:"properties,omitempty"`
4296}
4297
4298// MarshalJSON implements the json.Marshaller interface for type IdentityProviderUpdateParameters.
4299func (i IdentityProviderUpdateParameters) MarshalJSON() ([]byte, error) {
4300	objectMap := make(map[string]interface{})
4301	populate(objectMap, "properties", i.Properties)
4302	return json.Marshal(objectMap)
4303}
4304
4305// IdentityProviderUpdateProperties - Parameters supplied to the Update Identity Provider operation.
4306type IdentityProviderUpdateProperties struct {
4307	IdentityProviderBaseParameters
4308	// Client Id of the Application in the external Identity Provider. It is App ID for Facebook login, Client ID for Google login, App ID for Microsoft.
4309	ClientID *string `json:"clientId,omitempty"`
4310
4311	// Client secret of the Application in external Identity Provider, used to authenticate login request. For example, it is App Secret for Facebook login,
4312	// API Key for Google login, Public Key for
4313	// Microsoft.
4314	ClientSecret *string `json:"clientSecret,omitempty"`
4315}
4316
4317// MarshalJSON implements the json.Marshaller interface for type IdentityProviderUpdateProperties.
4318func (i IdentityProviderUpdateProperties) MarshalJSON() ([]byte, error) {
4319	objectMap := i.IdentityProviderBaseParameters.marshalInternal()
4320	populate(objectMap, "clientId", i.ClientID)
4321	populate(objectMap, "clientSecret", i.ClientSecret)
4322	return json.Marshal(objectMap)
4323}
4324
4325// IssueAttachmentCollection - Paged Issue Attachment list representation.
4326type IssueAttachmentCollection struct {
4327	// Total record count number across all pages.
4328	Count *int64 `json:"count,omitempty"`
4329
4330	// READ-ONLY; Next page link if any.
4331	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
4332
4333	// READ-ONLY; Issue Attachment values.
4334	Value []*IssueAttachmentContract `json:"value,omitempty" azure:"ro"`
4335}
4336
4337// MarshalJSON implements the json.Marshaller interface for type IssueAttachmentCollection.
4338func (i IssueAttachmentCollection) MarshalJSON() ([]byte, error) {
4339	objectMap := make(map[string]interface{})
4340	populate(objectMap, "count", i.Count)
4341	populate(objectMap, "nextLink", i.NextLink)
4342	populate(objectMap, "value", i.Value)
4343	return json.Marshal(objectMap)
4344}
4345
4346// IssueAttachmentContract - Issue Attachment Contract details.
4347type IssueAttachmentContract struct {
4348	Resource
4349	// Properties of the Issue Attachment.
4350	Properties *IssueAttachmentContractProperties `json:"properties,omitempty"`
4351}
4352
4353// MarshalJSON implements the json.Marshaller interface for type IssueAttachmentContract.
4354func (i IssueAttachmentContract) MarshalJSON() ([]byte, error) {
4355	objectMap := i.Resource.marshalInternal()
4356	populate(objectMap, "properties", i.Properties)
4357	return json.Marshal(objectMap)
4358}
4359
4360// IssueAttachmentContractProperties - Issue Attachment contract Properties.
4361type IssueAttachmentContractProperties struct {
4362	// REQUIRED; An HTTP link or Base64-encoded binary data.
4363	Content *string `json:"content,omitempty"`
4364
4365	// REQUIRED; Either 'link' if content is provided via an HTTP link or the MIME type of the Base64-encoded binary data provided in the 'content' property.
4366	ContentFormat *string `json:"contentFormat,omitempty"`
4367
4368	// REQUIRED; Filename by which the binary data will be saved.
4369	Title *string `json:"title,omitempty"`
4370}
4371
4372// IssueCollection - Paged Issue list representation.
4373type IssueCollection struct {
4374	// Total record count number across all pages.
4375	Count *int64 `json:"count,omitempty"`
4376
4377	// READ-ONLY; Next page link if any.
4378	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
4379
4380	// READ-ONLY; Issue values.
4381	Value []*IssueContract `json:"value,omitempty" azure:"ro"`
4382}
4383
4384// MarshalJSON implements the json.Marshaller interface for type IssueCollection.
4385func (i IssueCollection) MarshalJSON() ([]byte, error) {
4386	objectMap := make(map[string]interface{})
4387	populate(objectMap, "count", i.Count)
4388	populate(objectMap, "nextLink", i.NextLink)
4389	populate(objectMap, "value", i.Value)
4390	return json.Marshal(objectMap)
4391}
4392
4393// IssueCommentCollection - Paged Issue Comment list representation.
4394type IssueCommentCollection struct {
4395	// Total record count number across all pages.
4396	Count *int64 `json:"count,omitempty"`
4397
4398	// READ-ONLY; Next page link if any.
4399	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
4400
4401	// READ-ONLY; Issue Comment values.
4402	Value []*IssueCommentContract `json:"value,omitempty" azure:"ro"`
4403}
4404
4405// MarshalJSON implements the json.Marshaller interface for type IssueCommentCollection.
4406func (i IssueCommentCollection) MarshalJSON() ([]byte, error) {
4407	objectMap := make(map[string]interface{})
4408	populate(objectMap, "count", i.Count)
4409	populate(objectMap, "nextLink", i.NextLink)
4410	populate(objectMap, "value", i.Value)
4411	return json.Marshal(objectMap)
4412}
4413
4414// IssueCommentContract - Issue Comment Contract details.
4415type IssueCommentContract struct {
4416	Resource
4417	// Properties of the Issue Comment.
4418	Properties *IssueCommentContractProperties `json:"properties,omitempty"`
4419}
4420
4421// MarshalJSON implements the json.Marshaller interface for type IssueCommentContract.
4422func (i IssueCommentContract) MarshalJSON() ([]byte, error) {
4423	objectMap := i.Resource.marshalInternal()
4424	populate(objectMap, "properties", i.Properties)
4425	return json.Marshal(objectMap)
4426}
4427
4428// IssueCommentContractProperties - Issue Comment contract Properties.
4429type IssueCommentContractProperties struct {
4430	// REQUIRED; Comment text.
4431	Text *string `json:"text,omitempty"`
4432
4433	// REQUIRED; A resource identifier for the user who left the comment.
4434	UserID *string `json:"userId,omitempty"`
4435
4436	// Date and time when the comment was created.
4437	CreatedDate *time.Time `json:"createdDate,omitempty"`
4438}
4439
4440// MarshalJSON implements the json.Marshaller interface for type IssueCommentContractProperties.
4441func (i IssueCommentContractProperties) MarshalJSON() ([]byte, error) {
4442	objectMap := make(map[string]interface{})
4443	populate(objectMap, "createdDate", (*timeRFC3339)(i.CreatedDate))
4444	populate(objectMap, "text", i.Text)
4445	populate(objectMap, "userId", i.UserID)
4446	return json.Marshal(objectMap)
4447}
4448
4449// UnmarshalJSON implements the json.Unmarshaller interface for type IssueCommentContractProperties.
4450func (i *IssueCommentContractProperties) UnmarshalJSON(data []byte) error {
4451	var rawMsg map[string]json.RawMessage
4452	if err := json.Unmarshal(data, &rawMsg); err != nil {
4453		return err
4454	}
4455	for key, val := range rawMsg {
4456		var err error
4457		switch key {
4458		case "createdDate":
4459			var aux timeRFC3339
4460			err = unpopulate(val, &aux)
4461			i.CreatedDate = (*time.Time)(&aux)
4462			delete(rawMsg, key)
4463		case "text":
4464			err = unpopulate(val, &i.Text)
4465			delete(rawMsg, key)
4466		case "userId":
4467			err = unpopulate(val, &i.UserID)
4468			delete(rawMsg, key)
4469		}
4470		if err != nil {
4471			return err
4472		}
4473	}
4474	return nil
4475}
4476
4477// IssueContract - Issue Contract details.
4478type IssueContract struct {
4479	Resource
4480	// Properties of the Issue.
4481	Properties *IssueContractProperties `json:"properties,omitempty"`
4482}
4483
4484// MarshalJSON implements the json.Marshaller interface for type IssueContract.
4485func (i IssueContract) MarshalJSON() ([]byte, error) {
4486	objectMap := i.Resource.marshalInternal()
4487	populate(objectMap, "properties", i.Properties)
4488	return json.Marshal(objectMap)
4489}
4490
4491// IssueContractBaseProperties - Issue contract Base Properties.
4492type IssueContractBaseProperties struct {
4493	// A resource identifier for the API the issue was created for.
4494	APIID *string `json:"apiId,omitempty"`
4495
4496	// Date and time when the issue was created.
4497	CreatedDate *time.Time `json:"createdDate,omitempty"`
4498
4499	// Status of the issue.
4500	State *State `json:"state,omitempty"`
4501}
4502
4503// MarshalJSON implements the json.Marshaller interface for type IssueContractBaseProperties.
4504func (i IssueContractBaseProperties) MarshalJSON() ([]byte, error) {
4505	objectMap := i.marshalInternal()
4506	return json.Marshal(objectMap)
4507}
4508
4509// UnmarshalJSON implements the json.Unmarshaller interface for type IssueContractBaseProperties.
4510func (i *IssueContractBaseProperties) UnmarshalJSON(data []byte) error {
4511	var rawMsg map[string]json.RawMessage
4512	if err := json.Unmarshal(data, &rawMsg); err != nil {
4513		return err
4514	}
4515	return i.unmarshalInternal(rawMsg)
4516}
4517
4518func (i IssueContractBaseProperties) marshalInternal() map[string]interface{} {
4519	objectMap := make(map[string]interface{})
4520	populate(objectMap, "apiId", i.APIID)
4521	populate(objectMap, "createdDate", (*timeRFC3339)(i.CreatedDate))
4522	populate(objectMap, "state", i.State)
4523	return objectMap
4524}
4525
4526func (i *IssueContractBaseProperties) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
4527	for key, val := range rawMsg {
4528		var err error
4529		switch key {
4530		case "apiId":
4531			err = unpopulate(val, &i.APIID)
4532			delete(rawMsg, key)
4533		case "createdDate":
4534			var aux timeRFC3339
4535			err = unpopulate(val, &aux)
4536			i.CreatedDate = (*time.Time)(&aux)
4537			delete(rawMsg, key)
4538		case "state":
4539			err = unpopulate(val, &i.State)
4540			delete(rawMsg, key)
4541		}
4542		if err != nil {
4543			return err
4544		}
4545	}
4546	return nil
4547}
4548
4549// IssueContractProperties - Issue contract Properties.
4550type IssueContractProperties struct {
4551	IssueContractBaseProperties
4552	// REQUIRED; Text describing the issue.
4553	Description *string `json:"description,omitempty"`
4554
4555	// REQUIRED; The issue title.
4556	Title *string `json:"title,omitempty"`
4557
4558	// REQUIRED; A resource identifier for the user created the issue.
4559	UserID *string `json:"userId,omitempty"`
4560}
4561
4562// MarshalJSON implements the json.Marshaller interface for type IssueContractProperties.
4563func (i IssueContractProperties) MarshalJSON() ([]byte, error) {
4564	objectMap := i.IssueContractBaseProperties.marshalInternal()
4565	populate(objectMap, "description", i.Description)
4566	populate(objectMap, "title", i.Title)
4567	populate(objectMap, "userId", i.UserID)
4568	return json.Marshal(objectMap)
4569}
4570
4571// UnmarshalJSON implements the json.Unmarshaller interface for type IssueContractProperties.
4572func (i *IssueContractProperties) UnmarshalJSON(data []byte) error {
4573	var rawMsg map[string]json.RawMessage
4574	if err := json.Unmarshal(data, &rawMsg); err != nil {
4575		return err
4576	}
4577	for key, val := range rawMsg {
4578		var err error
4579		switch key {
4580		case "description":
4581			err = unpopulate(val, &i.Description)
4582			delete(rawMsg, key)
4583		case "title":
4584			err = unpopulate(val, &i.Title)
4585			delete(rawMsg, key)
4586		case "userId":
4587			err = unpopulate(val, &i.UserID)
4588			delete(rawMsg, key)
4589		}
4590		if err != nil {
4591			return err
4592		}
4593	}
4594	return i.IssueContractBaseProperties.unmarshalInternal(rawMsg)
4595}
4596
4597// IssueGetOptions contains the optional parameters for the Issue.Get method.
4598type IssueGetOptions struct {
4599	// placeholder for future optional parameters
4600}
4601
4602// IssueListByServiceOptions contains the optional parameters for the Issue.ListByService method.
4603type IssueListByServiceOptions struct {
4604	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
4605	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| apiId | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
4606	// endswith |</br>| title | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| description | filter | ge, le, eq, ne,
4607	// gt, lt | substringof, contains, startswith, endswith |</br>| authorName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith
4608	// |</br>| state | filter | eq | |</br>
4609	Filter *string
4610	// Number of records to skip.
4611	Skip *int32
4612	// Number of records to return.
4613	Top *int32
4614}
4615
4616// IssueUpdateContract - Issue update Parameters.
4617type IssueUpdateContract struct {
4618	// Issue entity Update contract properties.
4619	Properties *IssueUpdateContractProperties `json:"properties,omitempty"`
4620}
4621
4622// MarshalJSON implements the json.Marshaller interface for type IssueUpdateContract.
4623func (i IssueUpdateContract) MarshalJSON() ([]byte, error) {
4624	objectMap := make(map[string]interface{})
4625	populate(objectMap, "properties", i.Properties)
4626	return json.Marshal(objectMap)
4627}
4628
4629// IssueUpdateContractProperties - Issue contract Update Properties.
4630type IssueUpdateContractProperties struct {
4631	IssueContractBaseProperties
4632	// Text describing the issue.
4633	Description *string `json:"description,omitempty"`
4634
4635	// The issue title.
4636	Title *string `json:"title,omitempty"`
4637
4638	// A resource identifier for the user created the issue.
4639	UserID *string `json:"userId,omitempty"`
4640}
4641
4642// MarshalJSON implements the json.Marshaller interface for type IssueUpdateContractProperties.
4643func (i IssueUpdateContractProperties) MarshalJSON() ([]byte, error) {
4644	objectMap := i.IssueContractBaseProperties.marshalInternal()
4645	populate(objectMap, "description", i.Description)
4646	populate(objectMap, "title", i.Title)
4647	populate(objectMap, "userId", i.UserID)
4648	return json.Marshal(objectMap)
4649}
4650
4651// UnmarshalJSON implements the json.Unmarshaller interface for type IssueUpdateContractProperties.
4652func (i *IssueUpdateContractProperties) UnmarshalJSON(data []byte) error {
4653	var rawMsg map[string]json.RawMessage
4654	if err := json.Unmarshal(data, &rawMsg); err != nil {
4655		return err
4656	}
4657	for key, val := range rawMsg {
4658		var err error
4659		switch key {
4660		case "description":
4661			err = unpopulate(val, &i.Description)
4662			delete(rawMsg, key)
4663		case "title":
4664			err = unpopulate(val, &i.Title)
4665			delete(rawMsg, key)
4666		case "userId":
4667			err = unpopulate(val, &i.UserID)
4668			delete(rawMsg, key)
4669		}
4670		if err != nil {
4671			return err
4672		}
4673	}
4674	return i.IssueContractBaseProperties.unmarshalInternal(rawMsg)
4675}
4676
4677// KeyVaultContractCreateProperties - Create keyVault contract details.
4678type KeyVaultContractCreateProperties struct {
4679	// SystemAssignedIdentity or UserAssignedIdentity Client Id which will be used to access key vault secret.
4680	IdentityClientID *string `json:"identityClientId,omitempty"`
4681
4682	// Key vault secret identifier for fetching secret. Providing a versioned secret will prevent auto-refresh. This requires Api Management service to be configured
4683	// with aka.ms/apimmsi
4684	SecretIdentifier *string `json:"secretIdentifier,omitempty"`
4685}
4686
4687// KeyVaultContractProperties - KeyVault contract details.
4688type KeyVaultContractProperties struct {
4689	KeyVaultContractCreateProperties
4690	// Last time sync and refresh status of secret from key vault.
4691	LastStatus *KeyVaultLastAccessStatusContractProperties `json:"lastStatus,omitempty"`
4692}
4693
4694// KeyVaultLastAccessStatusContractProperties - Issue contract Update Properties.
4695type KeyVaultLastAccessStatusContractProperties struct {
4696	// Last status code for sync and refresh of secret from key vault.
4697	Code *string `json:"code,omitempty"`
4698
4699	// Details of the error else empty.
4700	Message *string `json:"message,omitempty"`
4701
4702	// Last time secret was accessed. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
4703	TimeStampUTC *time.Time `json:"timeStampUtc,omitempty"`
4704}
4705
4706// MarshalJSON implements the json.Marshaller interface for type KeyVaultLastAccessStatusContractProperties.
4707func (k KeyVaultLastAccessStatusContractProperties) MarshalJSON() ([]byte, error) {
4708	objectMap := make(map[string]interface{})
4709	populate(objectMap, "code", k.Code)
4710	populate(objectMap, "message", k.Message)
4711	populate(objectMap, "timeStampUtc", (*timeRFC3339)(k.TimeStampUTC))
4712	return json.Marshal(objectMap)
4713}
4714
4715// UnmarshalJSON implements the json.Unmarshaller interface for type KeyVaultLastAccessStatusContractProperties.
4716func (k *KeyVaultLastAccessStatusContractProperties) UnmarshalJSON(data []byte) error {
4717	var rawMsg map[string]json.RawMessage
4718	if err := json.Unmarshal(data, &rawMsg); err != nil {
4719		return err
4720	}
4721	for key, val := range rawMsg {
4722		var err error
4723		switch key {
4724		case "code":
4725			err = unpopulate(val, &k.Code)
4726			delete(rawMsg, key)
4727		case "message":
4728			err = unpopulate(val, &k.Message)
4729			delete(rawMsg, key)
4730		case "timeStampUtc":
4731			var aux timeRFC3339
4732			err = unpopulate(val, &aux)
4733			k.TimeStampUTC = (*time.Time)(&aux)
4734			delete(rawMsg, key)
4735		}
4736		if err != nil {
4737			return err
4738		}
4739	}
4740	return nil
4741}
4742
4743// LoggerCollection - Paged Logger list representation.
4744type LoggerCollection struct {
4745	// Total record count number across all pages.
4746	Count *int64 `json:"count,omitempty"`
4747
4748	// Next page link if any.
4749	NextLink *string `json:"nextLink,omitempty"`
4750
4751	// Logger values.
4752	Value []*LoggerContract `json:"value,omitempty"`
4753}
4754
4755// MarshalJSON implements the json.Marshaller interface for type LoggerCollection.
4756func (l LoggerCollection) MarshalJSON() ([]byte, error) {
4757	objectMap := make(map[string]interface{})
4758	populate(objectMap, "count", l.Count)
4759	populate(objectMap, "nextLink", l.NextLink)
4760	populate(objectMap, "value", l.Value)
4761	return json.Marshal(objectMap)
4762}
4763
4764// LoggerContract - Logger details.
4765type LoggerContract struct {
4766	Resource
4767	// Logger entity contract properties.
4768	Properties *LoggerContractProperties `json:"properties,omitempty"`
4769}
4770
4771// MarshalJSON implements the json.Marshaller interface for type LoggerContract.
4772func (l LoggerContract) MarshalJSON() ([]byte, error) {
4773	objectMap := l.Resource.marshalInternal()
4774	populate(objectMap, "properties", l.Properties)
4775	return json.Marshal(objectMap)
4776}
4777
4778// LoggerContractProperties - The Logger entity in API Management represents an event sink that you can use to log API Management events. Currently the
4779// Logger entity supports logging API Management events to Azure Event Hubs.
4780type LoggerContractProperties struct {
4781	// REQUIRED; Logger type.
4782	LoggerType *LoggerType `json:"loggerType,omitempty"`
4783
4784	// The name and SendRule connection string of the event hub for azureEventHub logger. Instrumentation key for applicationInsights logger.
4785	Credentials map[string]*string `json:"credentials,omitempty"`
4786
4787	// Logger description.
4788	Description *string `json:"description,omitempty"`
4789
4790	// Whether records are buffered in the logger before publishing. Default is assumed to be true.
4791	IsBuffered *bool `json:"isBuffered,omitempty"`
4792
4793	// Azure Resource Id of a log target (either Azure Event Hub resource or Azure Application Insights resource).
4794	ResourceID *string `json:"resourceId,omitempty"`
4795}
4796
4797// MarshalJSON implements the json.Marshaller interface for type LoggerContractProperties.
4798func (l LoggerContractProperties) MarshalJSON() ([]byte, error) {
4799	objectMap := make(map[string]interface{})
4800	populate(objectMap, "credentials", l.Credentials)
4801	populate(objectMap, "description", l.Description)
4802	populate(objectMap, "isBuffered", l.IsBuffered)
4803	populate(objectMap, "loggerType", l.LoggerType)
4804	populate(objectMap, "resourceId", l.ResourceID)
4805	return json.Marshal(objectMap)
4806}
4807
4808// LoggerCreateOrUpdateOptions contains the optional parameters for the Logger.CreateOrUpdate method.
4809type LoggerCreateOrUpdateOptions struct {
4810	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
4811	IfMatch *string
4812}
4813
4814// LoggerDeleteOptions contains the optional parameters for the Logger.Delete method.
4815type LoggerDeleteOptions struct {
4816	// placeholder for future optional parameters
4817}
4818
4819// LoggerGetEntityTagOptions contains the optional parameters for the Logger.GetEntityTag method.
4820type LoggerGetEntityTagOptions struct {
4821	// placeholder for future optional parameters
4822}
4823
4824// LoggerGetOptions contains the optional parameters for the Logger.Get method.
4825type LoggerGetOptions struct {
4826	// placeholder for future optional parameters
4827}
4828
4829// LoggerListByServiceOptions contains the optional parameters for the Logger.ListByService method.
4830type LoggerListByServiceOptions struct {
4831	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
4832	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| description | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
4833	// endswith |</br>| loggerType | filter | eq | |</br>| resourceId | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>
4834	Filter *string
4835	// Number of records to skip.
4836	Skip *int32
4837	// Number of records to return.
4838	Top *int32
4839}
4840
4841// LoggerUpdateContract - Logger update contract.
4842type LoggerUpdateContract struct {
4843	// Logger entity update contract properties.
4844	Properties *LoggerUpdateParameters `json:"properties,omitempty"`
4845}
4846
4847// MarshalJSON implements the json.Marshaller interface for type LoggerUpdateContract.
4848func (l LoggerUpdateContract) MarshalJSON() ([]byte, error) {
4849	objectMap := make(map[string]interface{})
4850	populate(objectMap, "properties", l.Properties)
4851	return json.Marshal(objectMap)
4852}
4853
4854// LoggerUpdateOptions contains the optional parameters for the Logger.Update method.
4855type LoggerUpdateOptions struct {
4856	// placeholder for future optional parameters
4857}
4858
4859// LoggerUpdateParameters - Parameters supplied to the Update Logger operation.
4860type LoggerUpdateParameters struct {
4861	// Logger credentials.
4862	Credentials map[string]*string `json:"credentials,omitempty"`
4863
4864	// Logger description.
4865	Description *string `json:"description,omitempty"`
4866
4867	// Whether records are buffered in the logger before publishing. Default is assumed to be true.
4868	IsBuffered *bool `json:"isBuffered,omitempty"`
4869
4870	// Logger type.
4871	LoggerType *LoggerType `json:"loggerType,omitempty"`
4872}
4873
4874// MarshalJSON implements the json.Marshaller interface for type LoggerUpdateParameters.
4875func (l LoggerUpdateParameters) MarshalJSON() ([]byte, error) {
4876	objectMap := make(map[string]interface{})
4877	populate(objectMap, "credentials", l.Credentials)
4878	populate(objectMap, "description", l.Description)
4879	populate(objectMap, "isBuffered", l.IsBuffered)
4880	populate(objectMap, "loggerType", l.LoggerType)
4881	return json.Marshal(objectMap)
4882}
4883
4884// NamedValueBeginCreateOrUpdateOptions contains the optional parameters for the NamedValue.BeginCreateOrUpdate method.
4885type NamedValueBeginCreateOrUpdateOptions struct {
4886	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
4887	IfMatch *string
4888}
4889
4890// NamedValueBeginRefreshSecretOptions contains the optional parameters for the NamedValue.BeginRefreshSecret method.
4891type NamedValueBeginRefreshSecretOptions struct {
4892	// placeholder for future optional parameters
4893}
4894
4895// NamedValueBeginUpdateOptions contains the optional parameters for the NamedValue.BeginUpdate method.
4896type NamedValueBeginUpdateOptions struct {
4897	// placeholder for future optional parameters
4898}
4899
4900// NamedValueCollection - Paged NamedValue list representation.
4901type NamedValueCollection struct {
4902	// Total record count number across all pages.
4903	Count *int64 `json:"count,omitempty"`
4904
4905	// Next page link if any.
4906	NextLink *string `json:"nextLink,omitempty"`
4907
4908	// Page values.
4909	Value []*NamedValueContract `json:"value,omitempty"`
4910}
4911
4912// MarshalJSON implements the json.Marshaller interface for type NamedValueCollection.
4913func (n NamedValueCollection) MarshalJSON() ([]byte, error) {
4914	objectMap := make(map[string]interface{})
4915	populate(objectMap, "count", n.Count)
4916	populate(objectMap, "nextLink", n.NextLink)
4917	populate(objectMap, "value", n.Value)
4918	return json.Marshal(objectMap)
4919}
4920
4921// NamedValueContract - NamedValue details.
4922type NamedValueContract struct {
4923	Resource
4924	// NamedValue entity contract properties.
4925	Properties *NamedValueContractProperties `json:"properties,omitempty"`
4926}
4927
4928// MarshalJSON implements the json.Marshaller interface for type NamedValueContract.
4929func (n NamedValueContract) MarshalJSON() ([]byte, error) {
4930	objectMap := n.Resource.marshalInternal()
4931	populate(objectMap, "properties", n.Properties)
4932	return json.Marshal(objectMap)
4933}
4934
4935// NamedValueContractProperties - NamedValue Contract properties.
4936type NamedValueContractProperties struct {
4937	NamedValueEntityBaseParameters
4938	// REQUIRED; Unique name of NamedValue. It may contain only letters, digits, period, dash, and underscore characters.
4939	DisplayName *string `json:"displayName,omitempty"`
4940
4941	// KeyVault location details of the namedValue.
4942	KeyVault *KeyVaultContractProperties `json:"keyVault,omitempty"`
4943
4944	// Value of the NamedValue. Can contain policy expressions. It may not be empty or consist only of whitespace. This property will not be filled on 'GET'
4945	// operations! Use '/listSecrets' POST request to get
4946	// the value.
4947	Value *string `json:"value,omitempty"`
4948}
4949
4950// MarshalJSON implements the json.Marshaller interface for type NamedValueContractProperties.
4951func (n NamedValueContractProperties) MarshalJSON() ([]byte, error) {
4952	objectMap := n.NamedValueEntityBaseParameters.marshalInternal()
4953	populate(objectMap, "displayName", n.DisplayName)
4954	populate(objectMap, "keyVault", n.KeyVault)
4955	populate(objectMap, "value", n.Value)
4956	return json.Marshal(objectMap)
4957}
4958
4959// NamedValueCreateContract - NamedValue details.
4960type NamedValueCreateContract struct {
4961	Resource
4962	// NamedValue entity contract properties for PUT operation.
4963	Properties *NamedValueCreateContractProperties `json:"properties,omitempty"`
4964}
4965
4966// MarshalJSON implements the json.Marshaller interface for type NamedValueCreateContract.
4967func (n NamedValueCreateContract) MarshalJSON() ([]byte, error) {
4968	objectMap := n.Resource.marshalInternal()
4969	populate(objectMap, "properties", n.Properties)
4970	return json.Marshal(objectMap)
4971}
4972
4973// NamedValueCreateContractProperties - NamedValue Contract properties.
4974type NamedValueCreateContractProperties struct {
4975	NamedValueEntityBaseParameters
4976	// REQUIRED; Unique name of NamedValue. It may contain only letters, digits, period, dash, and underscore characters.
4977	DisplayName *string `json:"displayName,omitempty"`
4978
4979	// KeyVault location details of the namedValue.
4980	KeyVault *KeyVaultContractCreateProperties `json:"keyVault,omitempty"`
4981
4982	// Value of the NamedValue. Can contain policy expressions. It may not be empty or consist only of whitespace. This property will not be filled on 'GET'
4983	// operations! Use '/listSecrets' POST request to get
4984	// the value.
4985	Value *string `json:"value,omitempty"`
4986}
4987
4988// MarshalJSON implements the json.Marshaller interface for type NamedValueCreateContractProperties.
4989func (n NamedValueCreateContractProperties) MarshalJSON() ([]byte, error) {
4990	objectMap := n.NamedValueEntityBaseParameters.marshalInternal()
4991	populate(objectMap, "displayName", n.DisplayName)
4992	populate(objectMap, "keyVault", n.KeyVault)
4993	populate(objectMap, "value", n.Value)
4994	return json.Marshal(objectMap)
4995}
4996
4997// NamedValueDeleteOptions contains the optional parameters for the NamedValue.Delete method.
4998type NamedValueDeleteOptions struct {
4999	// placeholder for future optional parameters
5000}
5001
5002// NamedValueEntityBaseParameters - NamedValue Entity Base Parameters set.
5003type NamedValueEntityBaseParameters struct {
5004	// Determines whether the value is a secret and should be encrypted or not. Default value is false.
5005	Secret *bool `json:"secret,omitempty"`
5006
5007	// Optional tags that when provided can be used to filter the NamedValue list.
5008	Tags []*string `json:"tags,omitempty"`
5009}
5010
5011// MarshalJSON implements the json.Marshaller interface for type NamedValueEntityBaseParameters.
5012func (n NamedValueEntityBaseParameters) MarshalJSON() ([]byte, error) {
5013	objectMap := n.marshalInternal()
5014	return json.Marshal(objectMap)
5015}
5016
5017func (n NamedValueEntityBaseParameters) marshalInternal() map[string]interface{} {
5018	objectMap := make(map[string]interface{})
5019	populate(objectMap, "secret", n.Secret)
5020	populate(objectMap, "tags", n.Tags)
5021	return objectMap
5022}
5023
5024// NamedValueGetEntityTagOptions contains the optional parameters for the NamedValue.GetEntityTag method.
5025type NamedValueGetEntityTagOptions struct {
5026	// placeholder for future optional parameters
5027}
5028
5029// NamedValueGetOptions contains the optional parameters for the NamedValue.Get method.
5030type NamedValueGetOptions struct {
5031	// placeholder for future optional parameters
5032}
5033
5034// NamedValueListByServiceOptions contains the optional parameters for the NamedValue.ListByService method.
5035type NamedValueListByServiceOptions struct {
5036	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| tags | filter | ge,
5037	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith, any, all |</br>| displayName | filter | ge, le, eq, ne, gt, lt | substringof, contains,
5038	// startswith, endswith |</br>
5039	Filter *string
5040	// When set to true, the response contains only named value entities which failed refresh.
5041	IsKeyVaultRefreshFailed *bool
5042	// Number of records to skip.
5043	Skip *int32
5044	// Number of records to return.
5045	Top *int32
5046}
5047
5048// NamedValueListValueOptions contains the optional parameters for the NamedValue.ListValue method.
5049type NamedValueListValueOptions struct {
5050	// placeholder for future optional parameters
5051}
5052
5053// NamedValueSecretContract - Client or app secret used in IdentityProviders, Aad, OpenID or OAuth.
5054type NamedValueSecretContract struct {
5055	// This is secret value of the NamedValue entity.
5056	Value *string `json:"value,omitempty"`
5057}
5058
5059// NamedValueUpdateParameterProperties - NamedValue Contract properties.
5060type NamedValueUpdateParameterProperties struct {
5061	NamedValueEntityBaseParameters
5062	// Unique name of NamedValue. It may contain only letters, digits, period, dash, and underscore characters.
5063	DisplayName *string `json:"displayName,omitempty"`
5064
5065	// KeyVault location details of the namedValue.
5066	KeyVault *KeyVaultContractCreateProperties `json:"keyVault,omitempty"`
5067
5068	// Value of the NamedValue. Can contain policy expressions. It may not be empty or consist only of whitespace.
5069	Value *string `json:"value,omitempty"`
5070}
5071
5072// MarshalJSON implements the json.Marshaller interface for type NamedValueUpdateParameterProperties.
5073func (n NamedValueUpdateParameterProperties) MarshalJSON() ([]byte, error) {
5074	objectMap := n.NamedValueEntityBaseParameters.marshalInternal()
5075	populate(objectMap, "displayName", n.DisplayName)
5076	populate(objectMap, "keyVault", n.KeyVault)
5077	populate(objectMap, "value", n.Value)
5078	return json.Marshal(objectMap)
5079}
5080
5081// NamedValueUpdateParameters - NamedValue update Parameters.
5082type NamedValueUpdateParameters struct {
5083	// NamedValue entity Update contract properties.
5084	Properties *NamedValueUpdateParameterProperties `json:"properties,omitempty"`
5085}
5086
5087// MarshalJSON implements the json.Marshaller interface for type NamedValueUpdateParameters.
5088func (n NamedValueUpdateParameters) MarshalJSON() ([]byte, error) {
5089	objectMap := make(map[string]interface{})
5090	populate(objectMap, "properties", n.Properties)
5091	return json.Marshal(objectMap)
5092}
5093
5094// NetworkStatusContract - Network Status details.
5095type NetworkStatusContract struct {
5096	// REQUIRED; Gets the list of Connectivity Status to the Resources on which the service depends upon.
5097	ConnectivityStatus []*ConnectivityStatusContract `json:"connectivityStatus,omitempty"`
5098
5099	// REQUIRED; Gets the list of DNS servers IPV4 addresses.
5100	DNSServers []*string `json:"dnsServers,omitempty"`
5101}
5102
5103// MarshalJSON implements the json.Marshaller interface for type NetworkStatusContract.
5104func (n NetworkStatusContract) MarshalJSON() ([]byte, error) {
5105	objectMap := make(map[string]interface{})
5106	populate(objectMap, "connectivityStatus", n.ConnectivityStatus)
5107	populate(objectMap, "dnsServers", n.DNSServers)
5108	return json.Marshal(objectMap)
5109}
5110
5111// NetworkStatusContractByLocation - Network Status in the Location
5112type NetworkStatusContractByLocation struct {
5113	// Location of service
5114	Location *string `json:"location,omitempty"`
5115
5116	// Network status in Location
5117	NetworkStatus *NetworkStatusContract `json:"networkStatus,omitempty"`
5118}
5119
5120// NetworkStatusListByLocationOptions contains the optional parameters for the NetworkStatus.ListByLocation method.
5121type NetworkStatusListByLocationOptions struct {
5122	// placeholder for future optional parameters
5123}
5124
5125// NetworkStatusListByServiceOptions contains the optional parameters for the NetworkStatus.ListByService method.
5126type NetworkStatusListByServiceOptions struct {
5127	// placeholder for future optional parameters
5128}
5129
5130// NotificationCollection - Paged Notification list representation.
5131type NotificationCollection struct {
5132	// Total record count number across all pages.
5133	Count *int64 `json:"count,omitempty"`
5134
5135	// Next page link if any.
5136	NextLink *string `json:"nextLink,omitempty"`
5137
5138	// Page values.
5139	Value []*NotificationContract `json:"value,omitempty"`
5140}
5141
5142// MarshalJSON implements the json.Marshaller interface for type NotificationCollection.
5143func (n NotificationCollection) MarshalJSON() ([]byte, error) {
5144	objectMap := make(map[string]interface{})
5145	populate(objectMap, "count", n.Count)
5146	populate(objectMap, "nextLink", n.NextLink)
5147	populate(objectMap, "value", n.Value)
5148	return json.Marshal(objectMap)
5149}
5150
5151// NotificationContract - Notification details.
5152type NotificationContract struct {
5153	Resource
5154	// Notification entity contract properties.
5155	Properties *NotificationContractProperties `json:"properties,omitempty"`
5156}
5157
5158// MarshalJSON implements the json.Marshaller interface for type NotificationContract.
5159func (n NotificationContract) MarshalJSON() ([]byte, error) {
5160	objectMap := n.Resource.marshalInternal()
5161	populate(objectMap, "properties", n.Properties)
5162	return json.Marshal(objectMap)
5163}
5164
5165// NotificationContractProperties - Notification Contract properties.
5166type NotificationContractProperties struct {
5167	// REQUIRED; Title of the Notification.
5168	Title *string `json:"title,omitempty"`
5169
5170	// Description of the Notification.
5171	Description *string `json:"description,omitempty"`
5172
5173	// Recipient Parameter values.
5174	Recipients *RecipientsContractProperties `json:"recipients,omitempty"`
5175}
5176
5177// NotificationCreateOrUpdateOptions contains the optional parameters for the Notification.CreateOrUpdate method.
5178type NotificationCreateOrUpdateOptions struct {
5179	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
5180	IfMatch *string
5181}
5182
5183// NotificationGetOptions contains the optional parameters for the Notification.Get method.
5184type NotificationGetOptions struct {
5185	// placeholder for future optional parameters
5186}
5187
5188// NotificationListByServiceOptions contains the optional parameters for the Notification.ListByService method.
5189type NotificationListByServiceOptions struct {
5190	// Number of records to skip.
5191	Skip *int32
5192	// Number of records to return.
5193	Top *int32
5194}
5195
5196// NotificationRecipientEmailCheckEntityExistsOptions contains the optional parameters for the NotificationRecipientEmail.CheckEntityExists method.
5197type NotificationRecipientEmailCheckEntityExistsOptions struct {
5198	// placeholder for future optional parameters
5199}
5200
5201// NotificationRecipientEmailCreateOrUpdateOptions contains the optional parameters for the NotificationRecipientEmail.CreateOrUpdate method.
5202type NotificationRecipientEmailCreateOrUpdateOptions struct {
5203	// placeholder for future optional parameters
5204}
5205
5206// NotificationRecipientEmailDeleteOptions contains the optional parameters for the NotificationRecipientEmail.Delete method.
5207type NotificationRecipientEmailDeleteOptions struct {
5208	// placeholder for future optional parameters
5209}
5210
5211// NotificationRecipientEmailListByNotificationOptions contains the optional parameters for the NotificationRecipientEmail.ListByNotification method.
5212type NotificationRecipientEmailListByNotificationOptions struct {
5213	// placeholder for future optional parameters
5214}
5215
5216// NotificationRecipientUserCheckEntityExistsOptions contains the optional parameters for the NotificationRecipientUser.CheckEntityExists method.
5217type NotificationRecipientUserCheckEntityExistsOptions struct {
5218	// placeholder for future optional parameters
5219}
5220
5221// NotificationRecipientUserCreateOrUpdateOptions contains the optional parameters for the NotificationRecipientUser.CreateOrUpdate method.
5222type NotificationRecipientUserCreateOrUpdateOptions struct {
5223	// placeholder for future optional parameters
5224}
5225
5226// NotificationRecipientUserDeleteOptions contains the optional parameters for the NotificationRecipientUser.Delete method.
5227type NotificationRecipientUserDeleteOptions struct {
5228	// placeholder for future optional parameters
5229}
5230
5231// NotificationRecipientUserListByNotificationOptions contains the optional parameters for the NotificationRecipientUser.ListByNotification method.
5232type NotificationRecipientUserListByNotificationOptions struct {
5233	// placeholder for future optional parameters
5234}
5235
5236// OAuth2AuthenticationSettingsContract - API OAuth2 Authentication settings details.
5237type OAuth2AuthenticationSettingsContract struct {
5238	// OAuth authorization server identifier.
5239	AuthorizationServerID *string `json:"authorizationServerId,omitempty"`
5240
5241	// operations scope.
5242	Scope *string `json:"scope,omitempty"`
5243}
5244
5245// OpenIDAuthenticationSettingsContract - API OAuth2 Authentication settings details.
5246type OpenIDAuthenticationSettingsContract struct {
5247	// How to send token to the server.
5248	BearerTokenSendingMethods []*BearerTokenSendingMethods `json:"bearerTokenSendingMethods,omitempty"`
5249
5250	// OAuth authorization server identifier.
5251	OpenidProviderID *string `json:"openidProviderId,omitempty"`
5252}
5253
5254// MarshalJSON implements the json.Marshaller interface for type OpenIDAuthenticationSettingsContract.
5255func (o OpenIDAuthenticationSettingsContract) MarshalJSON() ([]byte, error) {
5256	objectMap := make(map[string]interface{})
5257	populate(objectMap, "bearerTokenSendingMethods", o.BearerTokenSendingMethods)
5258	populate(objectMap, "openidProviderId", o.OpenidProviderID)
5259	return json.Marshal(objectMap)
5260}
5261
5262// OpenIDConnectProviderCollection - Paged OpenIdProviders list representation.
5263type OpenIDConnectProviderCollection struct {
5264	// Total record count number across all pages.
5265	Count *int64 `json:"count,omitempty"`
5266
5267	// Next page link if any.
5268	NextLink *string `json:"nextLink,omitempty"`
5269
5270	// Page values.
5271	Value []*OpenidConnectProviderContract `json:"value,omitempty"`
5272}
5273
5274// MarshalJSON implements the json.Marshaller interface for type OpenIDConnectProviderCollection.
5275func (o OpenIDConnectProviderCollection) MarshalJSON() ([]byte, error) {
5276	objectMap := make(map[string]interface{})
5277	populate(objectMap, "count", o.Count)
5278	populate(objectMap, "nextLink", o.NextLink)
5279	populate(objectMap, "value", o.Value)
5280	return json.Marshal(objectMap)
5281}
5282
5283// OpenIDConnectProviderCreateOrUpdateOptions contains the optional parameters for the OpenIDConnectProvider.CreateOrUpdate method.
5284type OpenIDConnectProviderCreateOrUpdateOptions struct {
5285	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
5286	IfMatch *string
5287}
5288
5289// OpenIDConnectProviderDeleteOptions contains the optional parameters for the OpenIDConnectProvider.Delete method.
5290type OpenIDConnectProviderDeleteOptions struct {
5291	// placeholder for future optional parameters
5292}
5293
5294// OpenIDConnectProviderGetEntityTagOptions contains the optional parameters for the OpenIDConnectProvider.GetEntityTag method.
5295type OpenIDConnectProviderGetEntityTagOptions struct {
5296	// placeholder for future optional parameters
5297}
5298
5299// OpenIDConnectProviderGetOptions contains the optional parameters for the OpenIDConnectProvider.Get method.
5300type OpenIDConnectProviderGetOptions struct {
5301	// placeholder for future optional parameters
5302}
5303
5304// OpenIDConnectProviderListByServiceOptions contains the optional parameters for the OpenIDConnectProvider.ListByService method.
5305type OpenIDConnectProviderListByServiceOptions struct {
5306	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
5307	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| displayName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
5308	// endswith |</br>
5309	Filter *string
5310	// Number of records to skip.
5311	Skip *int32
5312	// Number of records to return.
5313	Top *int32
5314}
5315
5316// OpenIDConnectProviderListSecretsOptions contains the optional parameters for the OpenIDConnectProvider.ListSecrets method.
5317type OpenIDConnectProviderListSecretsOptions struct {
5318	// placeholder for future optional parameters
5319}
5320
5321// OpenIDConnectProviderUpdateOptions contains the optional parameters for the OpenIDConnectProvider.Update method.
5322type OpenIDConnectProviderUpdateOptions struct {
5323	// placeholder for future optional parameters
5324}
5325
5326// OpenidConnectProviderContract - OpenId Connect Provider details.
5327type OpenidConnectProviderContract struct {
5328	Resource
5329	// OpenId Connect Provider contract properties.
5330	Properties *OpenidConnectProviderContractProperties `json:"properties,omitempty"`
5331}
5332
5333// MarshalJSON implements the json.Marshaller interface for type OpenidConnectProviderContract.
5334func (o OpenidConnectProviderContract) MarshalJSON() ([]byte, error) {
5335	objectMap := o.Resource.marshalInternal()
5336	populate(objectMap, "properties", o.Properties)
5337	return json.Marshal(objectMap)
5338}
5339
5340// OpenidConnectProviderContractProperties - OpenID Connect Providers Contract.
5341type OpenidConnectProviderContractProperties struct {
5342	// REQUIRED; Client ID of developer console which is the client application.
5343	ClientID *string `json:"clientId,omitempty"`
5344
5345	// REQUIRED; User-friendly OpenID Connect Provider name.
5346	DisplayName *string `json:"displayName,omitempty"`
5347
5348	// REQUIRED; Metadata endpoint URI.
5349	MetadataEndpoint *string `json:"metadataEndpoint,omitempty"`
5350
5351	// Client Secret of developer console which is the client application.
5352	ClientSecret *string `json:"clientSecret,omitempty"`
5353
5354	// User-friendly description of OpenID Connect Provider.
5355	Description *string `json:"description,omitempty"`
5356}
5357
5358// OpenidConnectProviderUpdateContract - Parameters supplied to the Update OpenID Connect Provider operation.
5359type OpenidConnectProviderUpdateContract struct {
5360	// OpenId Connect Provider Update contract properties.
5361	Properties *OpenidConnectProviderUpdateContractProperties `json:"properties,omitempty"`
5362}
5363
5364// MarshalJSON implements the json.Marshaller interface for type OpenidConnectProviderUpdateContract.
5365func (o OpenidConnectProviderUpdateContract) MarshalJSON() ([]byte, error) {
5366	objectMap := make(map[string]interface{})
5367	populate(objectMap, "properties", o.Properties)
5368	return json.Marshal(objectMap)
5369}
5370
5371// OpenidConnectProviderUpdateContractProperties - Parameters supplied to the Update OpenID Connect Provider operation.
5372type OpenidConnectProviderUpdateContractProperties struct {
5373	// Client ID of developer console which is the client application.
5374	ClientID *string `json:"clientId,omitempty"`
5375
5376	// Client Secret of developer console which is the client application.
5377	ClientSecret *string `json:"clientSecret,omitempty"`
5378
5379	// User-friendly description of OpenID Connect Provider.
5380	Description *string `json:"description,omitempty"`
5381
5382	// User-friendly OpenID Connect Provider name.
5383	DisplayName *string `json:"displayName,omitempty"`
5384
5385	// Metadata endpoint URI.
5386	MetadataEndpoint *string `json:"metadataEndpoint,omitempty"`
5387}
5388
5389// Operation - REST API operation
5390type Operation struct {
5391	// The object that describes the operation.
5392	Display *OperationDisplay `json:"display,omitempty"`
5393
5394	// Operation name: {provider}/{resource}/{operation}
5395	Name *string `json:"name,omitempty"`
5396
5397	// The operation origin.
5398	Origin *string `json:"origin,omitempty"`
5399
5400	// The operation properties.
5401	Properties map[string]interface{} `json:"properties,omitempty"`
5402}
5403
5404// OperationCollection - Paged Operation list representation.
5405type OperationCollection struct {
5406	// Total record count number across all pages.
5407	Count *int64 `json:"count,omitempty"`
5408
5409	// READ-ONLY; Next page link if any.
5410	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
5411
5412	// READ-ONLY; Page values.
5413	Value []*OperationContract `json:"value,omitempty" azure:"ro"`
5414}
5415
5416// MarshalJSON implements the json.Marshaller interface for type OperationCollection.
5417func (o OperationCollection) MarshalJSON() ([]byte, error) {
5418	objectMap := make(map[string]interface{})
5419	populate(objectMap, "count", o.Count)
5420	populate(objectMap, "nextLink", o.NextLink)
5421	populate(objectMap, "value", o.Value)
5422	return json.Marshal(objectMap)
5423}
5424
5425// OperationContract - Api Operation details.
5426type OperationContract struct {
5427	Resource
5428	// Properties of the Operation Contract.
5429	Properties *OperationContractProperties `json:"properties,omitempty"`
5430}
5431
5432// MarshalJSON implements the json.Marshaller interface for type OperationContract.
5433func (o OperationContract) MarshalJSON() ([]byte, error) {
5434	objectMap := o.Resource.marshalInternal()
5435	populate(objectMap, "properties", o.Properties)
5436	return json.Marshal(objectMap)
5437}
5438
5439// OperationContractProperties - Operation Contract Properties
5440type OperationContractProperties struct {
5441	OperationEntityBaseContract
5442	// REQUIRED; Operation Name.
5443	DisplayName *string `json:"displayName,omitempty"`
5444
5445	// REQUIRED; A Valid HTTP Operation Method. Typical Http Methods like GET, PUT, POST but not limited by only them.
5446	Method *string `json:"method,omitempty"`
5447
5448	// REQUIRED; Relative URL template identifying the target resource for this operation. May include parameters. Example: /customers/{cid}/orders/{oid}/?date={date}
5449	URLTemplate *string `json:"urlTemplate,omitempty"`
5450}
5451
5452// MarshalJSON implements the json.Marshaller interface for type OperationContractProperties.
5453func (o OperationContractProperties) MarshalJSON() ([]byte, error) {
5454	objectMap := o.OperationEntityBaseContract.marshalInternal()
5455	populate(objectMap, "displayName", o.DisplayName)
5456	populate(objectMap, "method", o.Method)
5457	populate(objectMap, "urlTemplate", o.URLTemplate)
5458	return json.Marshal(objectMap)
5459}
5460
5461// OperationDisplay - The object that describes the operation.
5462type OperationDisplay struct {
5463	// Friendly name of the operation
5464	Description *string `json:"description,omitempty"`
5465
5466	// Operation type: read, write, delete, listKeys/action, etc.
5467	Operation *string `json:"operation,omitempty"`
5468
5469	// Friendly name of the resource provider
5470	Provider *string `json:"provider,omitempty"`
5471
5472	// Resource type on which the operation is performed.
5473	Resource *string `json:"resource,omitempty"`
5474}
5475
5476// OperationEntityBaseContract - Api Operation Entity Base Contract details.
5477type OperationEntityBaseContract struct {
5478	// Description of the operation. May include HTML formatting tags.
5479	Description *string `json:"description,omitempty"`
5480
5481	// Operation Policies
5482	Policies *string `json:"policies,omitempty"`
5483
5484	// An entity containing request details.
5485	Request *RequestContract `json:"request,omitempty"`
5486
5487	// Array of Operation responses.
5488	Responses []*ResponseContract `json:"responses,omitempty"`
5489
5490	// Collection of URL template parameters.
5491	TemplateParameters []*ParameterContract `json:"templateParameters,omitempty"`
5492}
5493
5494// MarshalJSON implements the json.Marshaller interface for type OperationEntityBaseContract.
5495func (o OperationEntityBaseContract) MarshalJSON() ([]byte, error) {
5496	objectMap := o.marshalInternal()
5497	return json.Marshal(objectMap)
5498}
5499
5500func (o OperationEntityBaseContract) marshalInternal() map[string]interface{} {
5501	objectMap := make(map[string]interface{})
5502	populate(objectMap, "description", o.Description)
5503	populate(objectMap, "policies", o.Policies)
5504	populate(objectMap, "request", o.Request)
5505	populate(objectMap, "responses", o.Responses)
5506	populate(objectMap, "templateParameters", o.TemplateParameters)
5507	return objectMap
5508}
5509
5510// OperationListByTagsOptions contains the optional parameters for the Operation.ListByTags method.
5511type OperationListByTagsOptions struct {
5512	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
5513	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| displayName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
5514	// endswith |</br>| apiName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| description | filter | ge, le, eq, ne,
5515	// gt, lt | substringof, contains, startswith, endswith |</br>| method | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>|
5516	// urlTemplate | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>
5517	Filter *string
5518	// Include not tagged Operations.
5519	IncludeNotTaggedOperations *bool
5520	// Number of records to skip.
5521	Skip *int32
5522	// Number of records to return.
5523	Top *int32
5524}
5525
5526// OperationListResult - Result of the request to list REST API operations. It contains a list of operations and a URL nextLink to get the next set of results.
5527type OperationListResult struct {
5528	// URL to get the next set of operation list results if there are any.
5529	NextLink *string `json:"nextLink,omitempty"`
5530
5531	// List of operations supported by the resource provider.
5532	Value []*Operation `json:"value,omitempty"`
5533}
5534
5535// MarshalJSON implements the json.Marshaller interface for type OperationListResult.
5536func (o OperationListResult) MarshalJSON() ([]byte, error) {
5537	objectMap := make(map[string]interface{})
5538	populate(objectMap, "nextLink", o.NextLink)
5539	populate(objectMap, "value", o.Value)
5540	return json.Marshal(objectMap)
5541}
5542
5543// OperationResultContract - Long Running Git Operation Results.
5544type OperationResultContract struct {
5545	Resource
5546	// Properties of the Operation Contract.
5547	Properties *OperationResultContractProperties `json:"properties,omitempty"`
5548}
5549
5550// MarshalJSON implements the json.Marshaller interface for type OperationResultContract.
5551func (o OperationResultContract) MarshalJSON() ([]byte, error) {
5552	objectMap := o.Resource.marshalInternal()
5553	populate(objectMap, "properties", o.Properties)
5554	return json.Marshal(objectMap)
5555}
5556
5557// OperationResultContractProperties - Operation Result.
5558type OperationResultContractProperties struct {
5559	// Error Body Contract
5560	Error *ErrorResponseBody `json:"error,omitempty"`
5561
5562	// Operation result identifier.
5563	ID *string `json:"id,omitempty"`
5564
5565	// Optional result info.
5566	ResultInfo *string `json:"resultInfo,omitempty"`
5567
5568	// Start time of an async operation. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
5569	Started *time.Time `json:"started,omitempty"`
5570
5571	// Status of an async operation.
5572	Status *AsyncOperationStatus `json:"status,omitempty"`
5573
5574	// Last update time of an async operation. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
5575	Updated *time.Time `json:"updated,omitempty"`
5576
5577	// READ-ONLY; This property if only provided as part of the TenantConfigurationValidate operation. It contains the log the entities which will be updated/created/deleted
5578	// as part of the TenantConfigurationDeploy
5579	// operation.
5580	ActionLog []*OperationResultLogItemContract `json:"actionLog,omitempty" azure:"ro"`
5581}
5582
5583// MarshalJSON implements the json.Marshaller interface for type OperationResultContractProperties.
5584func (o OperationResultContractProperties) MarshalJSON() ([]byte, error) {
5585	objectMap := make(map[string]interface{})
5586	populate(objectMap, "actionLog", o.ActionLog)
5587	populate(objectMap, "error", o.Error)
5588	populate(objectMap, "id", o.ID)
5589	populate(objectMap, "resultInfo", o.ResultInfo)
5590	populate(objectMap, "started", (*timeRFC3339)(o.Started))
5591	populate(objectMap, "status", o.Status)
5592	populate(objectMap, "updated", (*timeRFC3339)(o.Updated))
5593	return json.Marshal(objectMap)
5594}
5595
5596// UnmarshalJSON implements the json.Unmarshaller interface for type OperationResultContractProperties.
5597func (o *OperationResultContractProperties) UnmarshalJSON(data []byte) error {
5598	var rawMsg map[string]json.RawMessage
5599	if err := json.Unmarshal(data, &rawMsg); err != nil {
5600		return err
5601	}
5602	for key, val := range rawMsg {
5603		var err error
5604		switch key {
5605		case "actionLog":
5606			err = unpopulate(val, &o.ActionLog)
5607			delete(rawMsg, key)
5608		case "error":
5609			err = unpopulate(val, &o.Error)
5610			delete(rawMsg, key)
5611		case "id":
5612			err = unpopulate(val, &o.ID)
5613			delete(rawMsg, key)
5614		case "resultInfo":
5615			err = unpopulate(val, &o.ResultInfo)
5616			delete(rawMsg, key)
5617		case "started":
5618			var aux timeRFC3339
5619			err = unpopulate(val, &aux)
5620			o.Started = (*time.Time)(&aux)
5621			delete(rawMsg, key)
5622		case "status":
5623			err = unpopulate(val, &o.Status)
5624			delete(rawMsg, key)
5625		case "updated":
5626			var aux timeRFC3339
5627			err = unpopulate(val, &aux)
5628			o.Updated = (*time.Time)(&aux)
5629			delete(rawMsg, key)
5630		}
5631		if err != nil {
5632			return err
5633		}
5634	}
5635	return nil
5636}
5637
5638// OperationResultLogItemContract - Log of the entity being created, updated or deleted.
5639type OperationResultLogItemContract struct {
5640	// Action like create/update/delete.
5641	Action *string `json:"action,omitempty"`
5642
5643	// Identifier of the entity being created/updated/deleted.
5644	ObjectKey *string `json:"objectKey,omitempty"`
5645
5646	// The type of entity contract.
5647	ObjectType *string `json:"objectType,omitempty"`
5648}
5649
5650// OperationTagResourceContractProperties - Operation Entity contract Properties.
5651type OperationTagResourceContractProperties struct {
5652	// Identifier of the operation in form /operations/{operationId}.
5653	ID *string `json:"id,omitempty"`
5654
5655	// READ-ONLY; Api Name.
5656	APIName *string `json:"apiName,omitempty" azure:"ro"`
5657
5658	// READ-ONLY; Api Revision.
5659	APIRevision *string `json:"apiRevision,omitempty" azure:"ro"`
5660
5661	// READ-ONLY; Api Version.
5662	APIVersion *string `json:"apiVersion,omitempty" azure:"ro"`
5663
5664	// READ-ONLY; Operation Description.
5665	Description *string `json:"description,omitempty" azure:"ro"`
5666
5667	// READ-ONLY; A Valid HTTP Operation Method. Typical Http Methods like GET, PUT, POST but not limited by only them.
5668	Method *string `json:"method,omitempty" azure:"ro"`
5669
5670	// READ-ONLY; Operation name.
5671	Name *string `json:"name,omitempty" azure:"ro"`
5672
5673	// READ-ONLY; Relative URL template identifying the target resource for this operation. May include parameters. Example: /customers/{cid}/orders/{oid}/?date={date}
5674	URLTemplate *string `json:"urlTemplate,omitempty" azure:"ro"`
5675}
5676
5677// OperationUpdateContract - Api Operation Update Contract details.
5678type OperationUpdateContract struct {
5679	// Properties of the API Operation entity that can be updated.
5680	Properties *OperationUpdateContractProperties `json:"properties,omitempty"`
5681}
5682
5683// MarshalJSON implements the json.Marshaller interface for type OperationUpdateContract.
5684func (o OperationUpdateContract) MarshalJSON() ([]byte, error) {
5685	objectMap := make(map[string]interface{})
5686	populate(objectMap, "properties", o.Properties)
5687	return json.Marshal(objectMap)
5688}
5689
5690// OperationUpdateContractProperties - Operation Update Contract Properties.
5691type OperationUpdateContractProperties struct {
5692	OperationEntityBaseContract
5693	// Operation Name.
5694	DisplayName *string `json:"displayName,omitempty"`
5695
5696	// A Valid HTTP Operation Method. Typical Http Methods like GET, PUT, POST but not limited by only them.
5697	Method *string `json:"method,omitempty"`
5698
5699	// Relative URL template identifying the target resource for this operation. May include parameters. Example: /customers/{cid}/orders/{oid}/?date={date}
5700	URLTemplate *string `json:"urlTemplate,omitempty"`
5701}
5702
5703// MarshalJSON implements the json.Marshaller interface for type OperationUpdateContractProperties.
5704func (o OperationUpdateContractProperties) MarshalJSON() ([]byte, error) {
5705	objectMap := o.OperationEntityBaseContract.marshalInternal()
5706	populate(objectMap, "displayName", o.DisplayName)
5707	populate(objectMap, "method", o.Method)
5708	populate(objectMap, "urlTemplate", o.URLTemplate)
5709	return json.Marshal(objectMap)
5710}
5711
5712// ParameterContract - Operation parameters details.
5713type ParameterContract struct {
5714	// REQUIRED; Parameter name.
5715	Name *string `json:"name,omitempty"`
5716
5717	// REQUIRED; Parameter type.
5718	Type *string `json:"type,omitempty"`
5719
5720	// Default parameter value.
5721	DefaultValue *string `json:"defaultValue,omitempty"`
5722
5723	// Parameter description.
5724	Description *string `json:"description,omitempty"`
5725
5726	// Specifies whether parameter is required or not.
5727	Required *bool `json:"required,omitempty"`
5728
5729	// Parameter values.
5730	Values []*string `json:"values,omitempty"`
5731}
5732
5733// MarshalJSON implements the json.Marshaller interface for type ParameterContract.
5734func (p ParameterContract) MarshalJSON() ([]byte, error) {
5735	objectMap := make(map[string]interface{})
5736	populate(objectMap, "defaultValue", p.DefaultValue)
5737	populate(objectMap, "description", p.Description)
5738	populate(objectMap, "name", p.Name)
5739	populate(objectMap, "required", p.Required)
5740	populate(objectMap, "type", p.Type)
5741	populate(objectMap, "values", p.Values)
5742	return json.Marshal(objectMap)
5743}
5744
5745// PipelineDiagnosticSettings - Diagnostic settings for incoming/outgoing HTTP messages to the Gateway.
5746type PipelineDiagnosticSettings struct {
5747	// Diagnostic settings for request.
5748	Request *HTTPMessageDiagnostic `json:"request,omitempty"`
5749
5750	// Diagnostic settings for response.
5751	Response *HTTPMessageDiagnostic `json:"response,omitempty"`
5752}
5753
5754// PolicyCollection - The response of the list policy operation.
5755type PolicyCollection struct {
5756	// Total record count number.
5757	Count *int64 `json:"count,omitempty"`
5758
5759	// Next page link if any.
5760	NextLink *string `json:"nextLink,omitempty"`
5761
5762	// Policy Contract value.
5763	Value []*PolicyContract `json:"value,omitempty"`
5764}
5765
5766// MarshalJSON implements the json.Marshaller interface for type PolicyCollection.
5767func (p PolicyCollection) MarshalJSON() ([]byte, error) {
5768	objectMap := make(map[string]interface{})
5769	populate(objectMap, "count", p.Count)
5770	populate(objectMap, "nextLink", p.NextLink)
5771	populate(objectMap, "value", p.Value)
5772	return json.Marshal(objectMap)
5773}
5774
5775// PolicyContract - Policy Contract details.
5776type PolicyContract struct {
5777	Resource
5778	// Properties of the Policy.
5779	Properties *PolicyContractProperties `json:"properties,omitempty"`
5780}
5781
5782// MarshalJSON implements the json.Marshaller interface for type PolicyContract.
5783func (p PolicyContract) MarshalJSON() ([]byte, error) {
5784	objectMap := p.Resource.marshalInternal()
5785	populate(objectMap, "properties", p.Properties)
5786	return json.Marshal(objectMap)
5787}
5788
5789// PolicyContractProperties - Policy contract Properties.
5790type PolicyContractProperties struct {
5791	// REQUIRED; Contents of the Policy as defined by the format.
5792	Value *string `json:"value,omitempty"`
5793
5794	// Format of the policyContent.
5795	Format *PolicyContentFormat `json:"format,omitempty"`
5796}
5797
5798// PolicyCreateOrUpdateOptions contains the optional parameters for the Policy.CreateOrUpdate method.
5799type PolicyCreateOrUpdateOptions struct {
5800	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
5801	IfMatch *string
5802}
5803
5804// PolicyDeleteOptions contains the optional parameters for the Policy.Delete method.
5805type PolicyDeleteOptions struct {
5806	// placeholder for future optional parameters
5807}
5808
5809// PolicyDescriptionCollection - Descriptions of APIM policies.
5810type PolicyDescriptionCollection struct {
5811	// Total record count number.
5812	Count *int64 `json:"count,omitempty"`
5813
5814	// Descriptions of APIM policies.
5815	Value []*PolicyDescriptionContract `json:"value,omitempty"`
5816}
5817
5818// MarshalJSON implements the json.Marshaller interface for type PolicyDescriptionCollection.
5819func (p PolicyDescriptionCollection) MarshalJSON() ([]byte, error) {
5820	objectMap := make(map[string]interface{})
5821	populate(objectMap, "count", p.Count)
5822	populate(objectMap, "value", p.Value)
5823	return json.Marshal(objectMap)
5824}
5825
5826// PolicyDescriptionContract - Policy description details.
5827type PolicyDescriptionContract struct {
5828	Resource
5829	// Policy description contract properties.
5830	Properties *PolicyDescriptionContractProperties `json:"properties,omitempty"`
5831}
5832
5833// MarshalJSON implements the json.Marshaller interface for type PolicyDescriptionContract.
5834func (p PolicyDescriptionContract) MarshalJSON() ([]byte, error) {
5835	objectMap := p.Resource.marshalInternal()
5836	populate(objectMap, "properties", p.Properties)
5837	return json.Marshal(objectMap)
5838}
5839
5840// PolicyDescriptionContractProperties - Policy description properties.
5841type PolicyDescriptionContractProperties struct {
5842	// READ-ONLY; Policy description.
5843	Description *string `json:"description,omitempty" azure:"ro"`
5844
5845	// READ-ONLY; Binary OR value of the Snippet scope.
5846	Scope *int64 `json:"scope,omitempty" azure:"ro"`
5847}
5848
5849// PolicyDescriptionListByServiceOptions contains the optional parameters for the PolicyDescription.ListByService method.
5850type PolicyDescriptionListByServiceOptions struct {
5851	// Policy scope.
5852	Scope *PolicyScopeContract
5853}
5854
5855// PolicyGetEntityTagOptions contains the optional parameters for the Policy.GetEntityTag method.
5856type PolicyGetEntityTagOptions struct {
5857	// placeholder for future optional parameters
5858}
5859
5860// PolicyGetOptions contains the optional parameters for the Policy.Get method.
5861type PolicyGetOptions struct {
5862	// Policy Export Format.
5863	Format *PolicyExportFormat
5864}
5865
5866// PolicyListByServiceOptions contains the optional parameters for the Policy.ListByService method.
5867type PolicyListByServiceOptions struct {
5868	// placeholder for future optional parameters
5869}
5870
5871// PortalDelegationSettings - Delegation settings for a developer portal.
5872type PortalDelegationSettings struct {
5873	Resource
5874	// Delegation settings contract properties.
5875	Properties *PortalDelegationSettingsProperties `json:"properties,omitempty"`
5876}
5877
5878// MarshalJSON implements the json.Marshaller interface for type PortalDelegationSettings.
5879func (p PortalDelegationSettings) MarshalJSON() ([]byte, error) {
5880	objectMap := p.Resource.marshalInternal()
5881	populate(objectMap, "properties", p.Properties)
5882	return json.Marshal(objectMap)
5883}
5884
5885// PortalDelegationSettingsProperties - Delegation settings contract properties.
5886type PortalDelegationSettingsProperties struct {
5887	// Subscriptions delegation settings.
5888	Subscriptions *SubscriptionsDelegationSettingsProperties `json:"subscriptions,omitempty"`
5889
5890	// A delegation Url.
5891	URL *string `json:"url,omitempty"`
5892
5893	// User registration delegation settings.
5894	UserRegistration *RegistrationDelegationSettingsProperties `json:"userRegistration,omitempty"`
5895
5896	// A base64-encoded validation key to validate, that a request is coming from Azure API Management.
5897	ValidationKey *string `json:"validationKey,omitempty"`
5898}
5899
5900// PortalRevisionBeginCreateOrUpdateOptions contains the optional parameters for the PortalRevision.BeginCreateOrUpdate method.
5901type PortalRevisionBeginCreateOrUpdateOptions struct {
5902	// placeholder for future optional parameters
5903}
5904
5905// PortalRevisionBeginUpdateOptions contains the optional parameters for the PortalRevision.BeginUpdate method.
5906type PortalRevisionBeginUpdateOptions struct {
5907	// placeholder for future optional parameters
5908}
5909
5910// PortalRevisionCollection - Paged list of portal revisions.
5911type PortalRevisionCollection struct {
5912	// READ-ONLY; Next page link, if any.
5913	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
5914
5915	// READ-ONLY; Collection of portal revisions.
5916	Value []*PortalRevisionContract `json:"value,omitempty" azure:"ro"`
5917}
5918
5919// MarshalJSON implements the json.Marshaller interface for type PortalRevisionCollection.
5920func (p PortalRevisionCollection) MarshalJSON() ([]byte, error) {
5921	objectMap := make(map[string]interface{})
5922	populate(objectMap, "nextLink", p.NextLink)
5923	populate(objectMap, "value", p.Value)
5924	return json.Marshal(objectMap)
5925}
5926
5927// PortalRevisionContract - Portal revisions contract details.
5928type PortalRevisionContract struct {
5929	Resource
5930	// Properties of the portal revisions.
5931	Properties *PortalRevisionContractProperties `json:"properties,omitempty"`
5932}
5933
5934// MarshalJSON implements the json.Marshaller interface for type PortalRevisionContract.
5935func (p PortalRevisionContract) MarshalJSON() ([]byte, error) {
5936	objectMap := p.Resource.marshalInternal()
5937	populate(objectMap, "properties", p.Properties)
5938	return json.Marshal(objectMap)
5939}
5940
5941type PortalRevisionContractProperties struct {
5942	// Portal revision description.
5943	Description *string `json:"description,omitempty"`
5944
5945	// Indicates if the Portal Revision is public.
5946	IsCurrent *bool `json:"isCurrent,omitempty"`
5947
5948	// READ-ONLY; Portal revision creation date and time.
5949	CreatedDateTime *time.Time `json:"createdDateTime,omitempty" azure:"ro"`
5950
5951	// READ-ONLY; Portal revision publishing status
5952	Status *PortalRevisionStatus `json:"status,omitempty" azure:"ro"`
5953
5954	// READ-ONLY; Portal revision publishing status details.
5955	StatusDetails *string `json:"statusDetails,omitempty" azure:"ro"`
5956
5957	// READ-ONLY; Last updated date and time.
5958	UpdatedDateTime *time.Time `json:"updatedDateTime,omitempty" azure:"ro"`
5959}
5960
5961// MarshalJSON implements the json.Marshaller interface for type PortalRevisionContractProperties.
5962func (p PortalRevisionContractProperties) MarshalJSON() ([]byte, error) {
5963	objectMap := make(map[string]interface{})
5964	populate(objectMap, "createdDateTime", (*timeRFC3339)(p.CreatedDateTime))
5965	populate(objectMap, "description", p.Description)
5966	populate(objectMap, "isCurrent", p.IsCurrent)
5967	populate(objectMap, "status", p.Status)
5968	populate(objectMap, "statusDetails", p.StatusDetails)
5969	populate(objectMap, "updatedDateTime", (*timeRFC3339)(p.UpdatedDateTime))
5970	return json.Marshal(objectMap)
5971}
5972
5973// UnmarshalJSON implements the json.Unmarshaller interface for type PortalRevisionContractProperties.
5974func (p *PortalRevisionContractProperties) UnmarshalJSON(data []byte) error {
5975	var rawMsg map[string]json.RawMessage
5976	if err := json.Unmarshal(data, &rawMsg); err != nil {
5977		return err
5978	}
5979	for key, val := range rawMsg {
5980		var err error
5981		switch key {
5982		case "createdDateTime":
5983			var aux timeRFC3339
5984			err = unpopulate(val, &aux)
5985			p.CreatedDateTime = (*time.Time)(&aux)
5986			delete(rawMsg, key)
5987		case "description":
5988			err = unpopulate(val, &p.Description)
5989			delete(rawMsg, key)
5990		case "isCurrent":
5991			err = unpopulate(val, &p.IsCurrent)
5992			delete(rawMsg, key)
5993		case "status":
5994			err = unpopulate(val, &p.Status)
5995			delete(rawMsg, key)
5996		case "statusDetails":
5997			err = unpopulate(val, &p.StatusDetails)
5998			delete(rawMsg, key)
5999		case "updatedDateTime":
6000			var aux timeRFC3339
6001			err = unpopulate(val, &aux)
6002			p.UpdatedDateTime = (*time.Time)(&aux)
6003			delete(rawMsg, key)
6004		}
6005		if err != nil {
6006			return err
6007		}
6008	}
6009	return nil
6010}
6011
6012// PortalRevisionGetEntityTagOptions contains the optional parameters for the PortalRevision.GetEntityTag method.
6013type PortalRevisionGetEntityTagOptions struct {
6014	// placeholder for future optional parameters
6015}
6016
6017// PortalRevisionGetOptions contains the optional parameters for the PortalRevision.Get method.
6018type PortalRevisionGetOptions struct {
6019	// placeholder for future optional parameters
6020}
6021
6022// PortalRevisionListByServiceOptions contains the optional parameters for the PortalRevision.ListByService method.
6023type PortalRevisionListByServiceOptions struct {
6024	// | Field | Supported operators | Supported functions |
6025	// |-------------|------------------------|-----------------------------------|
6026	//
6027	// |name | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith|
6028	// |description | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith|
6029	// |isCurrent | eq, ne | |
6030	Filter *string
6031	// Number of records to skip.
6032	Skip *int32
6033	// Number of records to return.
6034	Top *int32
6035}
6036
6037// PortalSettingValidationKeyContract - Client or app secret used in IdentityProviders, Aad, OpenID or OAuth.
6038type PortalSettingValidationKeyContract struct {
6039	// This is secret value of the validation key in portal settings.
6040	ValidationKey *string `json:"validationKey,omitempty"`
6041}
6042
6043// PortalSettingsCollection - Descriptions of APIM policies.
6044type PortalSettingsCollection struct {
6045	// Total record count number.
6046	Count *int64 `json:"count,omitempty"`
6047
6048	// Descriptions of APIM policies.
6049	Value []*PortalSettingsContract `json:"value,omitempty"`
6050}
6051
6052// MarshalJSON implements the json.Marshaller interface for type PortalSettingsCollection.
6053func (p PortalSettingsCollection) MarshalJSON() ([]byte, error) {
6054	objectMap := make(map[string]interface{})
6055	populate(objectMap, "count", p.Count)
6056	populate(objectMap, "value", p.Value)
6057	return json.Marshal(objectMap)
6058}
6059
6060// PortalSettingsContract - Portal Settings for the Developer Portal.
6061type PortalSettingsContract struct {
6062	Resource
6063	// Portal Settings contract properties.
6064	Properties *PortalSettingsContractProperties `json:"properties,omitempty"`
6065}
6066
6067// MarshalJSON implements the json.Marshaller interface for type PortalSettingsContract.
6068func (p PortalSettingsContract) MarshalJSON() ([]byte, error) {
6069	objectMap := p.Resource.marshalInternal()
6070	populate(objectMap, "properties", p.Properties)
6071	return json.Marshal(objectMap)
6072}
6073
6074// PortalSettingsContractProperties - Sign-in settings contract properties.
6075type PortalSettingsContractProperties struct {
6076	// Redirect Anonymous users to the Sign-In page.
6077	Enabled *bool `json:"enabled,omitempty"`
6078
6079	// Subscriptions delegation settings.
6080	Subscriptions *SubscriptionsDelegationSettingsProperties `json:"subscriptions,omitempty"`
6081
6082	// Terms of service contract properties.
6083	TermsOfService *TermsOfServiceProperties `json:"termsOfService,omitempty"`
6084
6085	// A delegation Url.
6086	URL *string `json:"url,omitempty"`
6087
6088	// User registration delegation settings.
6089	UserRegistration *RegistrationDelegationSettingsProperties `json:"userRegistration,omitempty"`
6090
6091	// A base64-encoded validation key to validate, that a request is coming from Azure API Management.
6092	ValidationKey *string `json:"validationKey,omitempty"`
6093}
6094
6095// PortalSettingsListByServiceOptions contains the optional parameters for the PortalSettings.ListByService method.
6096type PortalSettingsListByServiceOptions struct {
6097	// placeholder for future optional parameters
6098}
6099
6100// PortalSigninSettingProperties - Sign-in settings contract properties.
6101type PortalSigninSettingProperties struct {
6102	// Redirect Anonymous users to the Sign-In page.
6103	Enabled *bool `json:"enabled,omitempty"`
6104}
6105
6106// PortalSigninSettings - Sign-In settings for the Developer Portal.
6107type PortalSigninSettings struct {
6108	Resource
6109	// Sign-in settings contract properties.
6110	Properties *PortalSigninSettingProperties `json:"properties,omitempty"`
6111}
6112
6113// MarshalJSON implements the json.Marshaller interface for type PortalSigninSettings.
6114func (p PortalSigninSettings) MarshalJSON() ([]byte, error) {
6115	objectMap := p.Resource.marshalInternal()
6116	populate(objectMap, "properties", p.Properties)
6117	return json.Marshal(objectMap)
6118}
6119
6120// PortalSignupSettings - Sign-Up settings for a developer portal.
6121type PortalSignupSettings struct {
6122	Resource
6123	// Sign-up settings contract properties.
6124	Properties *PortalSignupSettingsProperties `json:"properties,omitempty"`
6125}
6126
6127// MarshalJSON implements the json.Marshaller interface for type PortalSignupSettings.
6128func (p PortalSignupSettings) MarshalJSON() ([]byte, error) {
6129	objectMap := p.Resource.marshalInternal()
6130	populate(objectMap, "properties", p.Properties)
6131	return json.Marshal(objectMap)
6132}
6133
6134// PortalSignupSettingsProperties - Sign-up settings contract properties.
6135type PortalSignupSettingsProperties struct {
6136	// Allow users to sign up on a developer portal.
6137	Enabled *bool `json:"enabled,omitempty"`
6138
6139	// Terms of service contract properties.
6140	TermsOfService *TermsOfServiceProperties `json:"termsOfService,omitempty"`
6141}
6142
6143// ProductAPICheckEntityExistsOptions contains the optional parameters for the ProductAPI.CheckEntityExists method.
6144type ProductAPICheckEntityExistsOptions struct {
6145	// placeholder for future optional parameters
6146}
6147
6148// ProductAPICreateOrUpdateOptions contains the optional parameters for the ProductAPI.CreateOrUpdate method.
6149type ProductAPICreateOrUpdateOptions struct {
6150	// placeholder for future optional parameters
6151}
6152
6153// ProductAPIDeleteOptions contains the optional parameters for the ProductAPI.Delete method.
6154type ProductAPIDeleteOptions struct {
6155	// placeholder for future optional parameters
6156}
6157
6158// ProductAPIListByProductOptions contains the optional parameters for the ProductAPI.ListByProduct method.
6159type ProductAPIListByProductOptions struct {
6160	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
6161	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| displayName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
6162	// endswith |</br>| description | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| serviceUrl | filter | ge, le, eq,
6163	// ne, gt, lt | substringof, contains, startswith, endswith |</br>| path | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith
6164	// |</br>
6165	Filter *string
6166	// Number of records to skip.
6167	Skip *int32
6168	// Number of records to return.
6169	Top *int32
6170}
6171
6172// ProductCollection - Paged Products list representation.
6173type ProductCollection struct {
6174	// Total record count number across all pages.
6175	Count *int64 `json:"count,omitempty"`
6176
6177	// Next page link if any.
6178	NextLink *string `json:"nextLink,omitempty"`
6179
6180	// Page values.
6181	Value []*ProductContract `json:"value,omitempty"`
6182}
6183
6184// MarshalJSON implements the json.Marshaller interface for type ProductCollection.
6185func (p ProductCollection) MarshalJSON() ([]byte, error) {
6186	objectMap := make(map[string]interface{})
6187	populate(objectMap, "count", p.Count)
6188	populate(objectMap, "nextLink", p.NextLink)
6189	populate(objectMap, "value", p.Value)
6190	return json.Marshal(objectMap)
6191}
6192
6193// ProductContract - Product details.
6194type ProductContract struct {
6195	Resource
6196	// Product entity contract properties.
6197	Properties *ProductContractProperties `json:"properties,omitempty"`
6198}
6199
6200// MarshalJSON implements the json.Marshaller interface for type ProductContract.
6201func (p ProductContract) MarshalJSON() ([]byte, error) {
6202	objectMap := p.Resource.marshalInternal()
6203	populate(objectMap, "properties", p.Properties)
6204	return json.Marshal(objectMap)
6205}
6206
6207// ProductContractProperties - Product profile.
6208type ProductContractProperties struct {
6209	ProductEntityBaseParameters
6210	// REQUIRED; Product name.
6211	DisplayName *string `json:"displayName,omitempty"`
6212}
6213
6214// ProductCreateOrUpdateOptions contains the optional parameters for the Product.CreateOrUpdate method.
6215type ProductCreateOrUpdateOptions struct {
6216	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
6217	IfMatch *string
6218}
6219
6220// ProductDeleteOptions contains the optional parameters for the Product.Delete method.
6221type ProductDeleteOptions struct {
6222	// Delete existing subscriptions associated with the product or not.
6223	DeleteSubscriptions *bool
6224}
6225
6226// ProductEntityBaseParameters - Product Entity Base Parameters
6227type ProductEntityBaseParameters struct {
6228	// whether subscription approval is required. If false, new subscriptions will be approved automatically enabling developers to call the product’s APIs
6229	// immediately after subscribing. If true,
6230	// administrators must manually approve the subscription before the developer can any of the product’s APIs. Can be present only if subscriptionRequired
6231	// property is present and has a value of false.
6232	ApprovalRequired *bool `json:"approvalRequired,omitempty"`
6233
6234	// Product description. May include HTML formatting tags.
6235	Description *string `json:"description,omitempty"`
6236
6237	// whether product is published or not. Published products are discoverable by users of developer portal. Non published products are visible only to administrators.
6238	// Default state of Product is
6239	// notPublished.
6240	State *ProductState `json:"state,omitempty"`
6241
6242	// Whether a product subscription is required for accessing APIs included in this product. If true, the product is referred to as "protected" and a valid
6243	// subscription key is required for a request to an
6244	// API included in the product to succeed. If false, the product is referred to as "open" and requests to an API included in the product can be made without
6245	// a subscription key. If property is omitted
6246	// when creating a new product it's value is assumed to be true.
6247	SubscriptionRequired *bool `json:"subscriptionRequired,omitempty"`
6248
6249	// Whether the number of subscriptions a user can have to this product at the same time. Set to null or omit to allow unlimited per user subscriptions.
6250	// Can be present only if subscriptionRequired
6251	// property is present and has a value of false.
6252	SubscriptionsLimit *int32 `json:"subscriptionsLimit,omitempty"`
6253
6254	// Product terms of use. Developers trying to subscribe to the product will be presented and required to accept these terms before they can complete the
6255	// subscription process.
6256	Terms *string `json:"terms,omitempty"`
6257}
6258
6259// ProductGetEntityTagOptions contains the optional parameters for the Product.GetEntityTag method.
6260type ProductGetEntityTagOptions struct {
6261	// placeholder for future optional parameters
6262}
6263
6264// ProductGetOptions contains the optional parameters for the Product.Get method.
6265type ProductGetOptions struct {
6266	// placeholder for future optional parameters
6267}
6268
6269// ProductGroupCheckEntityExistsOptions contains the optional parameters for the ProductGroup.CheckEntityExists method.
6270type ProductGroupCheckEntityExistsOptions struct {
6271	// placeholder for future optional parameters
6272}
6273
6274// ProductGroupCreateOrUpdateOptions contains the optional parameters for the ProductGroup.CreateOrUpdate method.
6275type ProductGroupCreateOrUpdateOptions struct {
6276	// placeholder for future optional parameters
6277}
6278
6279// ProductGroupDeleteOptions contains the optional parameters for the ProductGroup.Delete method.
6280type ProductGroupDeleteOptions struct {
6281	// placeholder for future optional parameters
6282}
6283
6284// ProductGroupListByProductOptions contains the optional parameters for the ProductGroup.ListByProduct method.
6285type ProductGroupListByProductOptions struct {
6286	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
6287	// le, eq, ne, gt, lt | |</br>| displayName | filter | eq, ne | |</br>| description | filter | eq, ne | |</br>
6288	Filter *string
6289	// Number of records to skip.
6290	Skip *int32
6291	// Number of records to return.
6292	Top *int32
6293}
6294
6295// ProductListByServiceOptions contains the optional parameters for the Product.ListByService method.
6296type ProductListByServiceOptions struct {
6297	// When set to true, the response contains an array of groups that have visibility to the product. The default is false.
6298	ExpandGroups *bool
6299	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
6300	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| displayName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
6301	// endswith |</br>| description | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| terms | filter | ge, le, eq, ne,
6302	// gt, lt | substringof, contains, startswith, endswith |</br>| state | filter | eq | |</br>| groups | expand | | |</br>
6303	Filter *string
6304	// Number of records to skip.
6305	Skip *int32
6306	// Products which are part of a specific tag.
6307	Tags *string
6308	// Number of records to return.
6309	Top *int32
6310}
6311
6312// ProductListByTagsOptions contains the optional parameters for the Product.ListByTags method.
6313type ProductListByTagsOptions struct {
6314	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
6315	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| displayName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
6316	// endswith |</br>| description | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| terms | filter | ge, le, eq, ne,
6317	// gt, lt | substringof, contains, startswith, endswith |</br>| state | filter | eq | substringof, contains, startswith, endswith |</br>
6318	Filter *string
6319	// Include not tagged Products.
6320	IncludeNotTaggedProducts *bool
6321	// Number of records to skip.
6322	Skip *int32
6323	// Number of records to return.
6324	Top *int32
6325}
6326
6327// ProductPolicyCreateOrUpdateOptions contains the optional parameters for the ProductPolicy.CreateOrUpdate method.
6328type ProductPolicyCreateOrUpdateOptions struct {
6329	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
6330	IfMatch *string
6331}
6332
6333// ProductPolicyDeleteOptions contains the optional parameters for the ProductPolicy.Delete method.
6334type ProductPolicyDeleteOptions struct {
6335	// placeholder for future optional parameters
6336}
6337
6338// ProductPolicyGetEntityTagOptions contains the optional parameters for the ProductPolicy.GetEntityTag method.
6339type ProductPolicyGetEntityTagOptions struct {
6340	// placeholder for future optional parameters
6341}
6342
6343// ProductPolicyGetOptions contains the optional parameters for the ProductPolicy.Get method.
6344type ProductPolicyGetOptions struct {
6345	// Policy Export Format.
6346	Format *PolicyExportFormat
6347}
6348
6349// ProductPolicyListByProductOptions contains the optional parameters for the ProductPolicy.ListByProduct method.
6350type ProductPolicyListByProductOptions struct {
6351	// placeholder for future optional parameters
6352}
6353
6354// ProductSubscriptionsListOptions contains the optional parameters for the ProductSubscriptions.List method.
6355type ProductSubscriptionsListOptions struct {
6356	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
6357	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| displayName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
6358	// endswith |</br>| stateComment | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| ownerId | filter | ge, le, eq,
6359	// ne, gt, lt | substringof, contains, startswith, endswith |</br>| scope | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith
6360	// |</br>| userId | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| productId | filter | ge, le, eq, ne, gt, lt |
6361	// substringof, contains, startswith, endswith |</br>| state | filter | eq | |</br>| user | expand | | |</br>
6362	Filter *string
6363	// Number of records to skip.
6364	Skip *int32
6365	// Number of records to return.
6366	Top *int32
6367}
6368
6369// ProductTagResourceContractProperties - Product profile.
6370type ProductTagResourceContractProperties struct {
6371	ProductEntityBaseParameters
6372	// REQUIRED; Product name.
6373	Name *string `json:"name,omitempty"`
6374
6375	// Identifier of the product in the form of /products/{productId}
6376	ID *string `json:"id,omitempty"`
6377}
6378
6379// ProductUpdateOptions contains the optional parameters for the Product.Update method.
6380type ProductUpdateOptions struct {
6381	// placeholder for future optional parameters
6382}
6383
6384// ProductUpdateParameters - Product Update parameters.
6385type ProductUpdateParameters struct {
6386	// Product entity Update contract properties.
6387	Properties *ProductUpdateProperties `json:"properties,omitempty"`
6388}
6389
6390// MarshalJSON implements the json.Marshaller interface for type ProductUpdateParameters.
6391func (p ProductUpdateParameters) MarshalJSON() ([]byte, error) {
6392	objectMap := make(map[string]interface{})
6393	populate(objectMap, "properties", p.Properties)
6394	return json.Marshal(objectMap)
6395}
6396
6397// ProductUpdateProperties - Parameters supplied to the Update Product operation.
6398type ProductUpdateProperties struct {
6399	ProductEntityBaseParameters
6400	// Product name.
6401	DisplayName *string `json:"displayName,omitempty"`
6402}
6403
6404// QuotaByCounterKeysListByServiceOptions contains the optional parameters for the QuotaByCounterKeys.ListByService method.
6405type QuotaByCounterKeysListByServiceOptions struct {
6406	// placeholder for future optional parameters
6407}
6408
6409// QuotaByCounterKeysUpdateOptions contains the optional parameters for the QuotaByCounterKeys.Update method.
6410type QuotaByCounterKeysUpdateOptions struct {
6411	// placeholder for future optional parameters
6412}
6413
6414// QuotaByPeriodKeysGetOptions contains the optional parameters for the QuotaByPeriodKeys.Get method.
6415type QuotaByPeriodKeysGetOptions struct {
6416	// placeholder for future optional parameters
6417}
6418
6419// QuotaByPeriodKeysUpdateOptions contains the optional parameters for the QuotaByPeriodKeys.Update method.
6420type QuotaByPeriodKeysUpdateOptions struct {
6421	// placeholder for future optional parameters
6422}
6423
6424// QuotaCounterCollection - Paged Quota Counter list representation.
6425type QuotaCounterCollection struct {
6426	// Total record count number across all pages.
6427	Count *int64 `json:"count,omitempty"`
6428
6429	// Next page link if any.
6430	NextLink *string `json:"nextLink,omitempty"`
6431
6432	// Quota counter values.
6433	Value []*QuotaCounterContract `json:"value,omitempty"`
6434}
6435
6436// MarshalJSON implements the json.Marshaller interface for type QuotaCounterCollection.
6437func (q QuotaCounterCollection) MarshalJSON() ([]byte, error) {
6438	objectMap := make(map[string]interface{})
6439	populate(objectMap, "count", q.Count)
6440	populate(objectMap, "nextLink", q.NextLink)
6441	populate(objectMap, "value", q.Value)
6442	return json.Marshal(objectMap)
6443}
6444
6445// QuotaCounterContract - Quota counter details.
6446type QuotaCounterContract struct {
6447	// REQUIRED; The Key value of the Counter. Must not be empty.
6448	CounterKey *string `json:"counterKey,omitempty"`
6449
6450	// REQUIRED; The date of the end of Counter Period. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
6451	PeriodEndTime *time.Time `json:"periodEndTime,omitempty"`
6452
6453	// REQUIRED; Identifier of the Period for which the counter was collected. Must not be empty.
6454	PeriodKey *string `json:"periodKey,omitempty"`
6455
6456	// REQUIRED; The date of the start of Counter Period. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
6457	PeriodStartTime *time.Time `json:"periodStartTime,omitempty"`
6458
6459	// Quota Value Properties
6460	Value *QuotaCounterValueContractProperties `json:"value,omitempty"`
6461}
6462
6463// MarshalJSON implements the json.Marshaller interface for type QuotaCounterContract.
6464func (q QuotaCounterContract) MarshalJSON() ([]byte, error) {
6465	objectMap := make(map[string]interface{})
6466	populate(objectMap, "counterKey", q.CounterKey)
6467	populate(objectMap, "periodEndTime", (*timeRFC3339)(q.PeriodEndTime))
6468	populate(objectMap, "periodKey", q.PeriodKey)
6469	populate(objectMap, "periodStartTime", (*timeRFC3339)(q.PeriodStartTime))
6470	populate(objectMap, "value", q.Value)
6471	return json.Marshal(objectMap)
6472}
6473
6474// UnmarshalJSON implements the json.Unmarshaller interface for type QuotaCounterContract.
6475func (q *QuotaCounterContract) UnmarshalJSON(data []byte) error {
6476	var rawMsg map[string]json.RawMessage
6477	if err := json.Unmarshal(data, &rawMsg); err != nil {
6478		return err
6479	}
6480	for key, val := range rawMsg {
6481		var err error
6482		switch key {
6483		case "counterKey":
6484			err = unpopulate(val, &q.CounterKey)
6485			delete(rawMsg, key)
6486		case "periodEndTime":
6487			var aux timeRFC3339
6488			err = unpopulate(val, &aux)
6489			q.PeriodEndTime = (*time.Time)(&aux)
6490			delete(rawMsg, key)
6491		case "periodKey":
6492			err = unpopulate(val, &q.PeriodKey)
6493			delete(rawMsg, key)
6494		case "periodStartTime":
6495			var aux timeRFC3339
6496			err = unpopulate(val, &aux)
6497			q.PeriodStartTime = (*time.Time)(&aux)
6498			delete(rawMsg, key)
6499		case "value":
6500			err = unpopulate(val, &q.Value)
6501			delete(rawMsg, key)
6502		}
6503		if err != nil {
6504			return err
6505		}
6506	}
6507	return nil
6508}
6509
6510// QuotaCounterValueContract - Quota counter value details.
6511type QuotaCounterValueContract struct {
6512	// Quota counter Value Properties.
6513	Value *QuotaCounterValueContractProperties `json:"value,omitempty"`
6514}
6515
6516// QuotaCounterValueContractProperties - Quota counter value details.
6517type QuotaCounterValueContractProperties struct {
6518	// Number of times Counter was called.
6519	CallsCount *int32 `json:"callsCount,omitempty"`
6520
6521	// Data Transferred in KiloBytes.
6522	KbTransferred *float64 `json:"kbTransferred,omitempty"`
6523}
6524
6525// QuotaCounterValueUpdateContract - Quota counter value details.
6526type QuotaCounterValueUpdateContract struct {
6527	// Quota counter value details.
6528	Properties *QuotaCounterValueContractProperties `json:"properties,omitempty"`
6529}
6530
6531// MarshalJSON implements the json.Marshaller interface for type QuotaCounterValueUpdateContract.
6532func (q QuotaCounterValueUpdateContract) MarshalJSON() ([]byte, error) {
6533	objectMap := make(map[string]interface{})
6534	populate(objectMap, "properties", q.Properties)
6535	return json.Marshal(objectMap)
6536}
6537
6538// RecipientEmailCollection - Paged Recipient User list representation.
6539type RecipientEmailCollection struct {
6540	// Total record count number across all pages.
6541	Count *int64 `json:"count,omitempty"`
6542
6543	// Next page link if any.
6544	NextLink *string `json:"nextLink,omitempty"`
6545
6546	// Page values.
6547	Value []*RecipientEmailContract `json:"value,omitempty"`
6548}
6549
6550// MarshalJSON implements the json.Marshaller interface for type RecipientEmailCollection.
6551func (r RecipientEmailCollection) MarshalJSON() ([]byte, error) {
6552	objectMap := make(map[string]interface{})
6553	populate(objectMap, "count", r.Count)
6554	populate(objectMap, "nextLink", r.NextLink)
6555	populate(objectMap, "value", r.Value)
6556	return json.Marshal(objectMap)
6557}
6558
6559// RecipientEmailContract - Recipient Email details.
6560type RecipientEmailContract struct {
6561	Resource
6562	// Recipient Email contract properties.
6563	Properties *RecipientEmailContractProperties `json:"properties,omitempty"`
6564}
6565
6566// MarshalJSON implements the json.Marshaller interface for type RecipientEmailContract.
6567func (r RecipientEmailContract) MarshalJSON() ([]byte, error) {
6568	objectMap := r.Resource.marshalInternal()
6569	populate(objectMap, "properties", r.Properties)
6570	return json.Marshal(objectMap)
6571}
6572
6573// RecipientEmailContractProperties - Recipient Email Contract Properties.
6574type RecipientEmailContractProperties struct {
6575	// User Email subscribed to notification.
6576	Email *string `json:"email,omitempty"`
6577}
6578
6579// RecipientUserCollection - Paged Recipient User list representation.
6580type RecipientUserCollection struct {
6581	// Total record count number across all pages.
6582	Count *int64 `json:"count,omitempty"`
6583
6584	// Next page link if any.
6585	NextLink *string `json:"nextLink,omitempty"`
6586
6587	// Page values.
6588	Value []*RecipientUserContract `json:"value,omitempty"`
6589}
6590
6591// MarshalJSON implements the json.Marshaller interface for type RecipientUserCollection.
6592func (r RecipientUserCollection) MarshalJSON() ([]byte, error) {
6593	objectMap := make(map[string]interface{})
6594	populate(objectMap, "count", r.Count)
6595	populate(objectMap, "nextLink", r.NextLink)
6596	populate(objectMap, "value", r.Value)
6597	return json.Marshal(objectMap)
6598}
6599
6600// RecipientUserContract - Recipient User details.
6601type RecipientUserContract struct {
6602	Resource
6603	// Recipient User entity contract properties.
6604	Properties *RecipientUsersContractProperties `json:"properties,omitempty"`
6605}
6606
6607// MarshalJSON implements the json.Marshaller interface for type RecipientUserContract.
6608func (r RecipientUserContract) MarshalJSON() ([]byte, error) {
6609	objectMap := r.Resource.marshalInternal()
6610	populate(objectMap, "properties", r.Properties)
6611	return json.Marshal(objectMap)
6612}
6613
6614// RecipientUsersContractProperties - Recipient User Contract Properties.
6615type RecipientUsersContractProperties struct {
6616	// API Management UserId subscribed to notification.
6617	UserID *string `json:"userId,omitempty"`
6618}
6619
6620// RecipientsContractProperties - Notification Parameter contract.
6621type RecipientsContractProperties struct {
6622	// List of Emails subscribed for the notification.
6623	Emails []*string `json:"emails,omitempty"`
6624
6625	// List of Users subscribed for the notification.
6626	Users []*string `json:"users,omitempty"`
6627}
6628
6629// MarshalJSON implements the json.Marshaller interface for type RecipientsContractProperties.
6630func (r RecipientsContractProperties) MarshalJSON() ([]byte, error) {
6631	objectMap := make(map[string]interface{})
6632	populate(objectMap, "emails", r.Emails)
6633	populate(objectMap, "users", r.Users)
6634	return json.Marshal(objectMap)
6635}
6636
6637// RegionContract - Region profile.
6638type RegionContract struct {
6639	// whether Region is deleted.
6640	IsDeleted *bool `json:"isDeleted,omitempty"`
6641
6642	// whether Region is the master region.
6643	IsMasterRegion *bool `json:"isMasterRegion,omitempty"`
6644
6645	// READ-ONLY; Region name.
6646	Name *string `json:"name,omitempty" azure:"ro"`
6647}
6648
6649// RegionListByServiceOptions contains the optional parameters for the Region.ListByService method.
6650type RegionListByServiceOptions struct {
6651	// placeholder for future optional parameters
6652}
6653
6654// RegionListResult - Lists Regions operation response details.
6655type RegionListResult struct {
6656	// Total record count number across all pages.
6657	Count *int64 `json:"count,omitempty"`
6658
6659	// Next page link if any.
6660	NextLink *string `json:"nextLink,omitempty"`
6661
6662	// Lists of Regions.
6663	Value []*RegionContract `json:"value,omitempty"`
6664}
6665
6666// MarshalJSON implements the json.Marshaller interface for type RegionListResult.
6667func (r RegionListResult) MarshalJSON() ([]byte, error) {
6668	objectMap := make(map[string]interface{})
6669	populate(objectMap, "count", r.Count)
6670	populate(objectMap, "nextLink", r.NextLink)
6671	populate(objectMap, "value", r.Value)
6672	return json.Marshal(objectMap)
6673}
6674
6675// RegistrationDelegationSettingsProperties - User registration delegation settings properties.
6676type RegistrationDelegationSettingsProperties struct {
6677	// Enable or disable delegation for user registration.
6678	Enabled *bool `json:"enabled,omitempty"`
6679}
6680
6681// ReportCollection - Paged Report records list representation.
6682type ReportCollection struct {
6683	// Total record count number across all pages.
6684	Count *int64 `json:"count,omitempty"`
6685
6686	// Next page link if any.
6687	NextLink *string `json:"nextLink,omitempty"`
6688
6689	// Page values.
6690	Value []*ReportRecordContract `json:"value,omitempty"`
6691}
6692
6693// MarshalJSON implements the json.Marshaller interface for type ReportCollection.
6694func (r ReportCollection) MarshalJSON() ([]byte, error) {
6695	objectMap := make(map[string]interface{})
6696	populate(objectMap, "count", r.Count)
6697	populate(objectMap, "nextLink", r.NextLink)
6698	populate(objectMap, "value", r.Value)
6699	return json.Marshal(objectMap)
6700}
6701
6702// ReportRecordContract - Report data.
6703type ReportRecordContract struct {
6704	// API identifier path. /apis/{apiId}
6705	APIID *string `json:"apiId,omitempty"`
6706
6707	// API region identifier.
6708	APIRegion *string `json:"apiRegion,omitempty"`
6709
6710	// Average time it took to process request.
6711	APITimeAvg *float64 `json:"apiTimeAvg,omitempty"`
6712
6713	// Maximum time it took to process request.
6714	APITimeMax *float64 `json:"apiTimeMax,omitempty"`
6715
6716	// Minimum time it took to process request.
6717	APITimeMin *float64 `json:"apiTimeMin,omitempty"`
6718
6719	// Bandwidth consumed.
6720	Bandwidth *int64 `json:"bandwidth,omitempty"`
6721
6722	// Number of times when content was served from cache policy.
6723	CacheHitCount *int32 `json:"cacheHitCount,omitempty"`
6724
6725	// Number of times content was fetched from backend.
6726	CacheMissCount *int32 `json:"cacheMissCount,omitempty"`
6727
6728	// Number of calls blocked due to invalid credentials. This includes calls returning HttpStatusCode.Unauthorized and HttpStatusCode.Forbidden and HttpStatusCode.TooManyRequests
6729	CallCountBlocked *int32 `json:"callCountBlocked,omitempty"`
6730
6731	// Number of calls failed due to proxy or backend errors. This includes calls returning HttpStatusCode.BadRequest(400) and any Code between HttpStatusCode.InternalServerError
6732	// (500) and 600
6733	CallCountFailed *int32 `json:"callCountFailed,omitempty"`
6734
6735	// Number of other calls.
6736	CallCountOther *int32 `json:"callCountOther,omitempty"`
6737
6738	// Number of successful calls. This includes calls returning HttpStatusCode <= 301 and HttpStatusCode.NotModified and HttpStatusCode.TemporaryRedirect
6739	CallCountSuccess *int32 `json:"callCountSuccess,omitempty"`
6740
6741	// Total number of calls.
6742	CallCountTotal *int32 `json:"callCountTotal,omitempty"`
6743
6744	// Country to which this record data is related.
6745	Country *string `json:"country,omitempty"`
6746
6747	// Length of aggregation period. Interval must be multiple of 15 minutes and may not be zero. The value should be in ISO 8601 format (http://en.wikipedia.org/wiki/ISO_8601#Durations).
6748	Interval *string `json:"interval,omitempty"`
6749
6750	// Name depending on report endpoint specifies product, API, operation or developer name.
6751	Name *string `json:"name,omitempty"`
6752
6753	// Operation identifier path. /apis/{apiId}/operations/{operationId}
6754	OperationID *string `json:"operationId,omitempty"`
6755
6756	// Country region to which this record data is related.
6757	Region *string `json:"region,omitempty"`
6758
6759	// Average time it took to process request on backend.
6760	ServiceTimeAvg *float64 `json:"serviceTimeAvg,omitempty"`
6761
6762	// Maximum time it took to process request on backend.
6763	ServiceTimeMax *float64 `json:"serviceTimeMax,omitempty"`
6764
6765	// Minimum time it took to process request on backend.
6766	ServiceTimeMin *float64 `json:"serviceTimeMin,omitempty"`
6767
6768	// Subscription identifier path. /subscriptions/{subscriptionId}
6769	SubscriptionID *string `json:"subscriptionId,omitempty"`
6770
6771	// Start of aggregation period. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
6772	Timestamp *time.Time `json:"timestamp,omitempty"`
6773
6774	// Zip code to which this record data is related.
6775	Zip *string `json:"zip,omitempty"`
6776
6777	// READ-ONLY; Product identifier path. /products/{productId}
6778	ProductID *string `json:"productId,omitempty" azure:"ro"`
6779
6780	// READ-ONLY; User identifier path. /users/{userId}
6781	UserID *string `json:"userId,omitempty" azure:"ro"`
6782}
6783
6784// MarshalJSON implements the json.Marshaller interface for type ReportRecordContract.
6785func (r ReportRecordContract) MarshalJSON() ([]byte, error) {
6786	objectMap := make(map[string]interface{})
6787	populate(objectMap, "apiId", r.APIID)
6788	populate(objectMap, "apiRegion", r.APIRegion)
6789	populate(objectMap, "apiTimeAvg", r.APITimeAvg)
6790	populate(objectMap, "apiTimeMax", r.APITimeMax)
6791	populate(objectMap, "apiTimeMin", r.APITimeMin)
6792	populate(objectMap, "bandwidth", r.Bandwidth)
6793	populate(objectMap, "cacheHitCount", r.CacheHitCount)
6794	populate(objectMap, "cacheMissCount", r.CacheMissCount)
6795	populate(objectMap, "callCountBlocked", r.CallCountBlocked)
6796	populate(objectMap, "callCountFailed", r.CallCountFailed)
6797	populate(objectMap, "callCountOther", r.CallCountOther)
6798	populate(objectMap, "callCountSuccess", r.CallCountSuccess)
6799	populate(objectMap, "callCountTotal", r.CallCountTotal)
6800	populate(objectMap, "country", r.Country)
6801	populate(objectMap, "interval", r.Interval)
6802	populate(objectMap, "name", r.Name)
6803	populate(objectMap, "operationId", r.OperationID)
6804	populate(objectMap, "productId", r.ProductID)
6805	populate(objectMap, "region", r.Region)
6806	populate(objectMap, "serviceTimeAvg", r.ServiceTimeAvg)
6807	populate(objectMap, "serviceTimeMax", r.ServiceTimeMax)
6808	populate(objectMap, "serviceTimeMin", r.ServiceTimeMin)
6809	populate(objectMap, "subscriptionId", r.SubscriptionID)
6810	populate(objectMap, "timestamp", (*timeRFC3339)(r.Timestamp))
6811	populate(objectMap, "userId", r.UserID)
6812	populate(objectMap, "zip", r.Zip)
6813	return json.Marshal(objectMap)
6814}
6815
6816// UnmarshalJSON implements the json.Unmarshaller interface for type ReportRecordContract.
6817func (r *ReportRecordContract) UnmarshalJSON(data []byte) error {
6818	var rawMsg map[string]json.RawMessage
6819	if err := json.Unmarshal(data, &rawMsg); err != nil {
6820		return err
6821	}
6822	for key, val := range rawMsg {
6823		var err error
6824		switch key {
6825		case "apiId":
6826			err = unpopulate(val, &r.APIID)
6827			delete(rawMsg, key)
6828		case "apiRegion":
6829			err = unpopulate(val, &r.APIRegion)
6830			delete(rawMsg, key)
6831		case "apiTimeAvg":
6832			err = unpopulate(val, &r.APITimeAvg)
6833			delete(rawMsg, key)
6834		case "apiTimeMax":
6835			err = unpopulate(val, &r.APITimeMax)
6836			delete(rawMsg, key)
6837		case "apiTimeMin":
6838			err = unpopulate(val, &r.APITimeMin)
6839			delete(rawMsg, key)
6840		case "bandwidth":
6841			err = unpopulate(val, &r.Bandwidth)
6842			delete(rawMsg, key)
6843		case "cacheHitCount":
6844			err = unpopulate(val, &r.CacheHitCount)
6845			delete(rawMsg, key)
6846		case "cacheMissCount":
6847			err = unpopulate(val, &r.CacheMissCount)
6848			delete(rawMsg, key)
6849		case "callCountBlocked":
6850			err = unpopulate(val, &r.CallCountBlocked)
6851			delete(rawMsg, key)
6852		case "callCountFailed":
6853			err = unpopulate(val, &r.CallCountFailed)
6854			delete(rawMsg, key)
6855		case "callCountOther":
6856			err = unpopulate(val, &r.CallCountOther)
6857			delete(rawMsg, key)
6858		case "callCountSuccess":
6859			err = unpopulate(val, &r.CallCountSuccess)
6860			delete(rawMsg, key)
6861		case "callCountTotal":
6862			err = unpopulate(val, &r.CallCountTotal)
6863			delete(rawMsg, key)
6864		case "country":
6865			err = unpopulate(val, &r.Country)
6866			delete(rawMsg, key)
6867		case "interval":
6868			err = unpopulate(val, &r.Interval)
6869			delete(rawMsg, key)
6870		case "name":
6871			err = unpopulate(val, &r.Name)
6872			delete(rawMsg, key)
6873		case "operationId":
6874			err = unpopulate(val, &r.OperationID)
6875			delete(rawMsg, key)
6876		case "productId":
6877			err = unpopulate(val, &r.ProductID)
6878			delete(rawMsg, key)
6879		case "region":
6880			err = unpopulate(val, &r.Region)
6881			delete(rawMsg, key)
6882		case "serviceTimeAvg":
6883			err = unpopulate(val, &r.ServiceTimeAvg)
6884			delete(rawMsg, key)
6885		case "serviceTimeMax":
6886			err = unpopulate(val, &r.ServiceTimeMax)
6887			delete(rawMsg, key)
6888		case "serviceTimeMin":
6889			err = unpopulate(val, &r.ServiceTimeMin)
6890			delete(rawMsg, key)
6891		case "subscriptionId":
6892			err = unpopulate(val, &r.SubscriptionID)
6893			delete(rawMsg, key)
6894		case "timestamp":
6895			var aux timeRFC3339
6896			err = unpopulate(val, &aux)
6897			r.Timestamp = (*time.Time)(&aux)
6898			delete(rawMsg, key)
6899		case "userId":
6900			err = unpopulate(val, &r.UserID)
6901			delete(rawMsg, key)
6902		case "zip":
6903			err = unpopulate(val, &r.Zip)
6904			delete(rawMsg, key)
6905		}
6906		if err != nil {
6907			return err
6908		}
6909	}
6910	return nil
6911}
6912
6913// ReportsListByAPIOptions contains the optional parameters for the Reports.ListByAPI method.
6914type ReportsListByAPIOptions struct {
6915	// OData order by query option.
6916	Orderby *string
6917	// Number of records to skip.
6918	Skip *int32
6919	// Number of records to return.
6920	Top *int32
6921}
6922
6923// ReportsListByGeoOptions contains the optional parameters for the Reports.ListByGeo method.
6924type ReportsListByGeoOptions struct {
6925	// Number of records to skip.
6926	Skip *int32
6927	// Number of records to return.
6928	Top *int32
6929}
6930
6931// ReportsListByOperationOptions contains the optional parameters for the Reports.ListByOperation method.
6932type ReportsListByOperationOptions struct {
6933	// OData order by query option.
6934	Orderby *string
6935	// Number of records to skip.
6936	Skip *int32
6937	// Number of records to return.
6938	Top *int32
6939}
6940
6941// ReportsListByProductOptions contains the optional parameters for the Reports.ListByProduct method.
6942type ReportsListByProductOptions struct {
6943	// OData order by query option.
6944	Orderby *string
6945	// Number of records to skip.
6946	Skip *int32
6947	// Number of records to return.
6948	Top *int32
6949}
6950
6951// ReportsListByRequestOptions contains the optional parameters for the Reports.ListByRequest method.
6952type ReportsListByRequestOptions struct {
6953	// Number of records to skip.
6954	Skip *int32
6955	// Number of records to return.
6956	Top *int32
6957}
6958
6959// ReportsListBySubscriptionOptions contains the optional parameters for the Reports.ListBySubscription method.
6960type ReportsListBySubscriptionOptions struct {
6961	// OData order by query option.
6962	Orderby *string
6963	// Number of records to skip.
6964	Skip *int32
6965	// Number of records to return.
6966	Top *int32
6967}
6968
6969// ReportsListByTimeOptions contains the optional parameters for the Reports.ListByTime method.
6970type ReportsListByTimeOptions struct {
6971	// OData order by query option.
6972	Orderby *string
6973	// Number of records to skip.
6974	Skip *int32
6975	// Number of records to return.
6976	Top *int32
6977}
6978
6979// ReportsListByUserOptions contains the optional parameters for the Reports.ListByUser method.
6980type ReportsListByUserOptions struct {
6981	// OData order by query option.
6982	Orderby *string
6983	// Number of records to skip.
6984	Skip *int32
6985	// Number of records to return.
6986	Top *int32
6987}
6988
6989// RepresentationContract - Operation request/response representation details.
6990type RepresentationContract struct {
6991	// REQUIRED; Specifies a registered or custom content type for this representation, e.g. application/xml.
6992	ContentType *string `json:"contentType,omitempty"`
6993
6994	// Collection of form parameters. Required if 'contentType' value is either 'application/x-www-form-urlencoded' or 'multipart/form-data'..
6995	FormParameters []*ParameterContract `json:"formParameters,omitempty"`
6996
6997	// An example of the representation.
6998	Sample *string `json:"sample,omitempty"`
6999
7000	// Schema identifier. Applicable only if 'contentType' value is neither 'application/x-www-form-urlencoded' nor 'multipart/form-data'.
7001	SchemaID *string `json:"schemaId,omitempty"`
7002
7003	// Type name defined by the schema. Applicable only if 'contentType' value is neither 'application/x-www-form-urlencoded' nor 'multipart/form-data'.
7004	TypeName *string `json:"typeName,omitempty"`
7005}
7006
7007// MarshalJSON implements the json.Marshaller interface for type RepresentationContract.
7008func (r RepresentationContract) MarshalJSON() ([]byte, error) {
7009	objectMap := make(map[string]interface{})
7010	populate(objectMap, "contentType", r.ContentType)
7011	populate(objectMap, "formParameters", r.FormParameters)
7012	populate(objectMap, "sample", r.Sample)
7013	populate(objectMap, "schemaId", r.SchemaID)
7014	populate(objectMap, "typeName", r.TypeName)
7015	return json.Marshal(objectMap)
7016}
7017
7018// RequestContract - Operation request details.
7019type RequestContract struct {
7020	// Operation request description.
7021	Description *string `json:"description,omitempty"`
7022
7023	// Collection of operation request headers.
7024	Headers []*ParameterContract `json:"headers,omitempty"`
7025
7026	// Collection of operation request query parameters.
7027	QueryParameters []*ParameterContract `json:"queryParameters,omitempty"`
7028
7029	// Collection of operation request representations.
7030	Representations []*RepresentationContract `json:"representations,omitempty"`
7031}
7032
7033// MarshalJSON implements the json.Marshaller interface for type RequestContract.
7034func (r RequestContract) MarshalJSON() ([]byte, error) {
7035	objectMap := make(map[string]interface{})
7036	populate(objectMap, "description", r.Description)
7037	populate(objectMap, "headers", r.Headers)
7038	populate(objectMap, "queryParameters", r.QueryParameters)
7039	populate(objectMap, "representations", r.Representations)
7040	return json.Marshal(objectMap)
7041}
7042
7043// RequestReportCollection - Paged Report records list representation.
7044type RequestReportCollection struct {
7045	// Total record count number across all pages.
7046	Count *int64 `json:"count,omitempty"`
7047
7048	// Page values.
7049	Value []*RequestReportRecordContract `json:"value,omitempty"`
7050}
7051
7052// MarshalJSON implements the json.Marshaller interface for type RequestReportCollection.
7053func (r RequestReportCollection) MarshalJSON() ([]byte, error) {
7054	objectMap := make(map[string]interface{})
7055	populate(objectMap, "count", r.Count)
7056	populate(objectMap, "value", r.Value)
7057	return json.Marshal(objectMap)
7058}
7059
7060// RequestReportRecordContract - Request Report data.
7061type RequestReportRecordContract struct {
7062	// API identifier path. /apis/{apiId}
7063	APIID *string `json:"apiId,omitempty"`
7064
7065	// Azure region where the gateway that processed this request is located.
7066	APIRegion *string `json:"apiRegion,omitempty"`
7067
7068	// The total time it took to process this request.
7069	APITime *float64 `json:"apiTime,omitempty"`
7070
7071	// The HTTP status code received by the gateway as a result of forwarding this request to the backend.
7072	BackendResponseCode *string `json:"backendResponseCode,omitempty"`
7073
7074	// Specifies if response cache was involved in generating the response. If the value is none, the cache was not used. If the value is hit, cached response
7075	// was returned. If the value is miss, the cache
7076	// was used but lookup resulted in a miss and request was fulfilled by the backend.
7077	Cache *string `json:"cache,omitempty"`
7078
7079	// The client IP address associated with this request.
7080	IPAddress *string `json:"ipAddress,omitempty"`
7081
7082	// The HTTP method associated with this request..
7083	Method *string `json:"method,omitempty"`
7084
7085	// Operation identifier path. /apis/{apiId}/operations/{operationId}
7086	OperationID *string `json:"operationId,omitempty"`
7087
7088	// Request Identifier.
7089	RequestID *string `json:"requestId,omitempty"`
7090
7091	// The size of this request..
7092	RequestSize *int32 `json:"requestSize,omitempty"`
7093
7094	// The HTTP status code returned by the gateway.
7095	ResponseCode *int32 `json:"responseCode,omitempty"`
7096
7097	// The size of the response returned by the gateway.
7098	ResponseSize *int32 `json:"responseSize,omitempty"`
7099
7100	// he time it took to forward this request to the backend and get the response back.
7101	ServiceTime *float64 `json:"serviceTime,omitempty"`
7102
7103	// Subscription identifier path. /subscriptions/{subscriptionId}
7104	SubscriptionID *string `json:"subscriptionId,omitempty"`
7105
7106	// The date and time when this request was received by the gateway in ISO 8601 format.
7107	Timestamp *time.Time `json:"timestamp,omitempty"`
7108
7109	// The full URL associated with this request.
7110	URL *string `json:"url,omitempty"`
7111
7112	// READ-ONLY; Product identifier path. /products/{productId}
7113	ProductID *string `json:"productId,omitempty" azure:"ro"`
7114
7115	// READ-ONLY; User identifier path. /users/{userId}
7116	UserID *string `json:"userId,omitempty" azure:"ro"`
7117}
7118
7119// MarshalJSON implements the json.Marshaller interface for type RequestReportRecordContract.
7120func (r RequestReportRecordContract) MarshalJSON() ([]byte, error) {
7121	objectMap := make(map[string]interface{})
7122	populate(objectMap, "apiId", r.APIID)
7123	populate(objectMap, "apiRegion", r.APIRegion)
7124	populate(objectMap, "apiTime", r.APITime)
7125	populate(objectMap, "backendResponseCode", r.BackendResponseCode)
7126	populate(objectMap, "cache", r.Cache)
7127	populate(objectMap, "ipAddress", r.IPAddress)
7128	populate(objectMap, "method", r.Method)
7129	populate(objectMap, "operationId", r.OperationID)
7130	populate(objectMap, "productId", r.ProductID)
7131	populate(objectMap, "requestId", r.RequestID)
7132	populate(objectMap, "requestSize", r.RequestSize)
7133	populate(objectMap, "responseCode", r.ResponseCode)
7134	populate(objectMap, "responseSize", r.ResponseSize)
7135	populate(objectMap, "serviceTime", r.ServiceTime)
7136	populate(objectMap, "subscriptionId", r.SubscriptionID)
7137	populate(objectMap, "timestamp", (*timeRFC3339)(r.Timestamp))
7138	populate(objectMap, "url", r.URL)
7139	populate(objectMap, "userId", r.UserID)
7140	return json.Marshal(objectMap)
7141}
7142
7143// UnmarshalJSON implements the json.Unmarshaller interface for type RequestReportRecordContract.
7144func (r *RequestReportRecordContract) UnmarshalJSON(data []byte) error {
7145	var rawMsg map[string]json.RawMessage
7146	if err := json.Unmarshal(data, &rawMsg); err != nil {
7147		return err
7148	}
7149	for key, val := range rawMsg {
7150		var err error
7151		switch key {
7152		case "apiId":
7153			err = unpopulate(val, &r.APIID)
7154			delete(rawMsg, key)
7155		case "apiRegion":
7156			err = unpopulate(val, &r.APIRegion)
7157			delete(rawMsg, key)
7158		case "apiTime":
7159			err = unpopulate(val, &r.APITime)
7160			delete(rawMsg, key)
7161		case "backendResponseCode":
7162			err = unpopulate(val, &r.BackendResponseCode)
7163			delete(rawMsg, key)
7164		case "cache":
7165			err = unpopulate(val, &r.Cache)
7166			delete(rawMsg, key)
7167		case "ipAddress":
7168			err = unpopulate(val, &r.IPAddress)
7169			delete(rawMsg, key)
7170		case "method":
7171			err = unpopulate(val, &r.Method)
7172			delete(rawMsg, key)
7173		case "operationId":
7174			err = unpopulate(val, &r.OperationID)
7175			delete(rawMsg, key)
7176		case "productId":
7177			err = unpopulate(val, &r.ProductID)
7178			delete(rawMsg, key)
7179		case "requestId":
7180			err = unpopulate(val, &r.RequestID)
7181			delete(rawMsg, key)
7182		case "requestSize":
7183			err = unpopulate(val, &r.RequestSize)
7184			delete(rawMsg, key)
7185		case "responseCode":
7186			err = unpopulate(val, &r.ResponseCode)
7187			delete(rawMsg, key)
7188		case "responseSize":
7189			err = unpopulate(val, &r.ResponseSize)
7190			delete(rawMsg, key)
7191		case "serviceTime":
7192			err = unpopulate(val, &r.ServiceTime)
7193			delete(rawMsg, key)
7194		case "subscriptionId":
7195			err = unpopulate(val, &r.SubscriptionID)
7196			delete(rawMsg, key)
7197		case "timestamp":
7198			var aux timeRFC3339
7199			err = unpopulate(val, &aux)
7200			r.Timestamp = (*time.Time)(&aux)
7201			delete(rawMsg, key)
7202		case "url":
7203			err = unpopulate(val, &r.URL)
7204			delete(rawMsg, key)
7205		case "userId":
7206			err = unpopulate(val, &r.UserID)
7207			delete(rawMsg, key)
7208		}
7209		if err != nil {
7210			return err
7211		}
7212	}
7213	return nil
7214}
7215
7216// Resource - The Resource definition.
7217type Resource struct {
7218	// READ-ONLY; Resource ID.
7219	ID *string `json:"id,omitempty" azure:"ro"`
7220
7221	// READ-ONLY; Resource name.
7222	Name *string `json:"name,omitempty" azure:"ro"`
7223
7224	// READ-ONLY; Resource type for API Management resource.
7225	Type *string `json:"type,omitempty" azure:"ro"`
7226}
7227
7228// MarshalJSON implements the json.Marshaller interface for type Resource.
7229func (r Resource) MarshalJSON() ([]byte, error) {
7230	objectMap := r.marshalInternal()
7231	return json.Marshal(objectMap)
7232}
7233
7234func (r Resource) marshalInternal() map[string]interface{} {
7235	objectMap := make(map[string]interface{})
7236	populate(objectMap, "id", r.ID)
7237	populate(objectMap, "name", r.Name)
7238	populate(objectMap, "type", r.Type)
7239	return objectMap
7240}
7241
7242// ResourceLocationDataContract - Resource location data properties.
7243type ResourceLocationDataContract struct {
7244	// REQUIRED; A canonical name for the geographic or physical location.
7245	Name *string `json:"name,omitempty"`
7246
7247	// The city or locality where the resource is located.
7248	City *string `json:"city,omitempty"`
7249
7250	// The country or region where the resource is located.
7251	CountryOrRegion *string `json:"countryOrRegion,omitempty"`
7252
7253	// The district, state, or province where the resource is located.
7254	District *string `json:"district,omitempty"`
7255}
7256
7257// ResourceSKU - Describes an available API Management SKU.
7258type ResourceSKU struct {
7259	// Name of the Sku.
7260	Name *SKUType `json:"name,omitempty"`
7261}
7262
7263// ResourceSKUCapacity - Describes scaling information of a SKU.
7264type ResourceSKUCapacity struct {
7265	// READ-ONLY; The default capacity.
7266	Default *int32 `json:"default,omitempty" azure:"ro"`
7267
7268	// READ-ONLY; The maximum capacity that can be set.
7269	Maximum *int32 `json:"maximum,omitempty" azure:"ro"`
7270
7271	// READ-ONLY; The minimum capacity.
7272	Minimum *int32 `json:"minimum,omitempty" azure:"ro"`
7273
7274	// READ-ONLY; The scale type applicable to the sku.
7275	ScaleType *ResourceSKUCapacityScaleType `json:"scaleType,omitempty" azure:"ro"`
7276}
7277
7278// ResourceSKUResult - Describes an available API Management service SKU.
7279type ResourceSKUResult struct {
7280	// READ-ONLY; Specifies the number of API Management units.
7281	Capacity *ResourceSKUCapacity `json:"capacity,omitempty" azure:"ro"`
7282
7283	// READ-ONLY; The type of resource the SKU applies to.
7284	ResourceType *string `json:"resourceType,omitempty" azure:"ro"`
7285
7286	// READ-ONLY; Specifies API Management SKU.
7287	SKU *ResourceSKU `json:"sku,omitempty" azure:"ro"`
7288}
7289
7290// ResourceSKUResults - The API Management service SKUs operation response.
7291type ResourceSKUResults struct {
7292	// REQUIRED; The list of skus available for the service.
7293	Value []*ResourceSKUResult `json:"value,omitempty"`
7294
7295	// The uri to fetch the next page of API Management service Skus.
7296	NextLink *string `json:"nextLink,omitempty"`
7297}
7298
7299// MarshalJSON implements the json.Marshaller interface for type ResourceSKUResults.
7300func (r ResourceSKUResults) MarshalJSON() ([]byte, error) {
7301	objectMap := make(map[string]interface{})
7302	populate(objectMap, "nextLink", r.NextLink)
7303	populate(objectMap, "value", r.Value)
7304	return json.Marshal(objectMap)
7305}
7306
7307// ResponseContract - Operation response details.
7308type ResponseContract struct {
7309	// REQUIRED; Operation response HTTP status code.
7310	StatusCode *int32 `json:"statusCode,omitempty"`
7311
7312	// Operation response description.
7313	Description *string `json:"description,omitempty"`
7314
7315	// Collection of operation response headers.
7316	Headers []*ParameterContract `json:"headers,omitempty"`
7317
7318	// Collection of operation response representations.
7319	Representations []*RepresentationContract `json:"representations,omitempty"`
7320}
7321
7322// MarshalJSON implements the json.Marshaller interface for type ResponseContract.
7323func (r ResponseContract) MarshalJSON() ([]byte, error) {
7324	objectMap := make(map[string]interface{})
7325	populate(objectMap, "description", r.Description)
7326	populate(objectMap, "headers", r.Headers)
7327	populate(objectMap, "representations", r.Representations)
7328	populate(objectMap, "statusCode", r.StatusCode)
7329	return json.Marshal(objectMap)
7330}
7331
7332// SamplingSettings - Sampling settings for Diagnostic.
7333type SamplingSettings struct {
7334	// Rate of sampling for fixed-rate sampling.
7335	Percentage *float64 `json:"percentage,omitempty"`
7336
7337	// Sampling type.
7338	SamplingType *SamplingType `json:"samplingType,omitempty"`
7339}
7340
7341// SaveConfigurationParameter - Save Tenant Configuration Contract details.
7342type SaveConfigurationParameter struct {
7343	// Properties of the Save Configuration Parameters.
7344	Properties *SaveConfigurationParameterProperties `json:"properties,omitempty"`
7345}
7346
7347// SaveConfigurationParameterProperties - Parameters supplied to the Save Tenant Configuration operation.
7348type SaveConfigurationParameterProperties struct {
7349	// REQUIRED; The name of the Git branch in which to commit the current configuration snapshot.
7350	Branch *string `json:"branch,omitempty"`
7351
7352	// The value if true, the current configuration database is committed to the Git repository, even if the Git repository has newer changes that would be
7353	// overwritten.
7354	Force *bool `json:"force,omitempty"`
7355}
7356
7357// SchemaCollection - The response of the list schema operation.
7358type SchemaCollection struct {
7359	// Total record count number.
7360	Count *int64 `json:"count,omitempty"`
7361
7362	// READ-ONLY; Next page link if any.
7363	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
7364
7365	// READ-ONLY; Api Schema Contract value.
7366	Value []*SchemaContract `json:"value,omitempty" azure:"ro"`
7367}
7368
7369// MarshalJSON implements the json.Marshaller interface for type SchemaCollection.
7370func (s SchemaCollection) MarshalJSON() ([]byte, error) {
7371	objectMap := make(map[string]interface{})
7372	populate(objectMap, "count", s.Count)
7373	populate(objectMap, "nextLink", s.NextLink)
7374	populate(objectMap, "value", s.Value)
7375	return json.Marshal(objectMap)
7376}
7377
7378// SchemaContract - Schema Contract details.
7379type SchemaContract struct {
7380	Resource
7381	// Properties of the Schema.
7382	Properties *SchemaContractProperties `json:"properties,omitempty"`
7383}
7384
7385// MarshalJSON implements the json.Marshaller interface for type SchemaContract.
7386func (s SchemaContract) MarshalJSON() ([]byte, error) {
7387	objectMap := s.Resource.marshalInternal()
7388	populate(objectMap, "properties", s.Properties)
7389	return json.Marshal(objectMap)
7390}
7391
7392// SchemaContractProperties - API Schema create or update contract Properties.
7393type SchemaContractProperties struct {
7394	// REQUIRED; Must be a valid a media type used in a Content-Type header as defined in the RFC 2616. Media type of the schema document (e.g. application/json,
7395	// application/xml).
7396	// - Swagger Schema use application/vnd.ms-azure-apim.swagger.definitions+json
7397	// - WSDL Schema use application/vnd.ms-azure-apim.xsd+xml
7398	// - OpenApi Schema use application/vnd.oai.openapi.components+json
7399	// - WADL Schema use application/vnd.ms-azure-apim.wadl.grammars+xml.
7400	ContentType *string `json:"contentType,omitempty"`
7401
7402	// Create or update Properties of the Schema Document.
7403	Document *SchemaDocumentProperties `json:"document,omitempty"`
7404}
7405
7406// SchemaDocumentProperties - Schema Document Properties.
7407type SchemaDocumentProperties struct {
7408	// Types definitions. Used for Swagger/OpenAPI schemas only, null otherwise.
7409	Definitions map[string]interface{} `json:"definitions,omitempty"`
7410
7411	// Json escaped string defining the document representing the Schema. Used for schemas other than Swagger/OpenAPI.
7412	Value *string `json:"value,omitempty"`
7413}
7414
7415// SignInSettingsCreateOrUpdateOptions contains the optional parameters for the SignInSettings.CreateOrUpdate method.
7416type SignInSettingsCreateOrUpdateOptions struct {
7417	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
7418	IfMatch *string
7419}
7420
7421// SignInSettingsGetEntityTagOptions contains the optional parameters for the SignInSettings.GetEntityTag method.
7422type SignInSettingsGetEntityTagOptions struct {
7423	// placeholder for future optional parameters
7424}
7425
7426// SignInSettingsGetOptions contains the optional parameters for the SignInSettings.Get method.
7427type SignInSettingsGetOptions struct {
7428	// placeholder for future optional parameters
7429}
7430
7431// SignInSettingsUpdateOptions contains the optional parameters for the SignInSettings.Update method.
7432type SignInSettingsUpdateOptions struct {
7433	// placeholder for future optional parameters
7434}
7435
7436// SignUpSettingsCreateOrUpdateOptions contains the optional parameters for the SignUpSettings.CreateOrUpdate method.
7437type SignUpSettingsCreateOrUpdateOptions struct {
7438	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
7439	IfMatch *string
7440}
7441
7442// SignUpSettingsGetEntityTagOptions contains the optional parameters for the SignUpSettings.GetEntityTag method.
7443type SignUpSettingsGetEntityTagOptions struct {
7444	// placeholder for future optional parameters
7445}
7446
7447// SignUpSettingsGetOptions contains the optional parameters for the SignUpSettings.Get method.
7448type SignUpSettingsGetOptions struct {
7449	// placeholder for future optional parameters
7450}
7451
7452// SignUpSettingsUpdateOptions contains the optional parameters for the SignUpSettings.Update method.
7453type SignUpSettingsUpdateOptions struct {
7454	// placeholder for future optional parameters
7455}
7456
7457// SubscriptionCollection - Paged Subscriptions list representation.
7458type SubscriptionCollection struct {
7459	// Total record count number across all pages.
7460	Count *int64 `json:"count,omitempty"`
7461
7462	// Next page link if any.
7463	NextLink *string `json:"nextLink,omitempty"`
7464
7465	// Page values.
7466	Value []*SubscriptionContract `json:"value,omitempty"`
7467}
7468
7469// MarshalJSON implements the json.Marshaller interface for type SubscriptionCollection.
7470func (s SubscriptionCollection) MarshalJSON() ([]byte, error) {
7471	objectMap := make(map[string]interface{})
7472	populate(objectMap, "count", s.Count)
7473	populate(objectMap, "nextLink", s.NextLink)
7474	populate(objectMap, "value", s.Value)
7475	return json.Marshal(objectMap)
7476}
7477
7478// SubscriptionContract - Subscription details.
7479type SubscriptionContract struct {
7480	Resource
7481	// Subscription contract properties.
7482	Properties *SubscriptionContractProperties `json:"properties,omitempty"`
7483}
7484
7485// MarshalJSON implements the json.Marshaller interface for type SubscriptionContract.
7486func (s SubscriptionContract) MarshalJSON() ([]byte, error) {
7487	objectMap := s.Resource.marshalInternal()
7488	populate(objectMap, "properties", s.Properties)
7489	return json.Marshal(objectMap)
7490}
7491
7492// SubscriptionContractProperties - Subscription details.
7493type SubscriptionContractProperties struct {
7494	// REQUIRED; Scope like /products/{productId} or /apis or /apis/{apiId}.
7495	Scope *string `json:"scope,omitempty"`
7496
7497	// REQUIRED; Subscription state. Possible states are * active – the subscription is active, * suspended – the subscription is blocked, and the subscriber
7498	// cannot call any APIs of the product, * submitted – the
7499	// subscription request has been made by the developer, but has not yet been approved or rejected, * rejected – the subscription request has been denied
7500	// by an administrator, * cancelled – the
7501	// subscription has been cancelled by the developer or administrator, * expired – the subscription reached its expiration date and was deactivated.
7502	State *SubscriptionState `json:"state,omitempty"`
7503
7504	// Determines whether tracing is enabled
7505	AllowTracing *bool `json:"allowTracing,omitempty"`
7506
7507	// The name of the subscription, or null if the subscription has no name.
7508	DisplayName *string `json:"displayName,omitempty"`
7509
7510	// Date when subscription was cancelled or expired. The setting is for audit purposes only and the subscription is not automatically cancelled. The subscription
7511	// lifecycle can be managed by using the
7512	// state property. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
7513	EndDate *time.Time `json:"endDate,omitempty"`
7514
7515	// Subscription expiration date. The setting is for audit purposes only and the subscription is not automatically expired. The subscription lifecycle can
7516	// be managed by using the state property. The date
7517	// conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
7518	ExpirationDate *time.Time `json:"expirationDate,omitempty"`
7519
7520	// Upcoming subscription expiration notification date. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
7521	NotificationDate *time.Time `json:"notificationDate,omitempty"`
7522
7523	// The user resource identifier of the subscription owner. The value is a valid relative URL in the format of /users/{userId} where {userId} is a user identifier.
7524	OwnerID *string `json:"ownerId,omitempty"`
7525
7526	// Subscription primary key. This property will not be filled on 'GET' operations! Use '/listSecrets' POST request to get the value.
7527	PrimaryKey *string `json:"primaryKey,omitempty"`
7528
7529	// Subscription secondary key. This property will not be filled on 'GET' operations! Use '/listSecrets' POST request to get the value.
7530	SecondaryKey *string `json:"secondaryKey,omitempty"`
7531
7532	// Subscription activation date. The setting is for audit purposes only and the subscription is not automatically activated. The subscription lifecycle
7533	// can be managed by using the state property. The
7534	// date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
7535	StartDate *time.Time `json:"startDate,omitempty"`
7536
7537	// Optional subscription comment added by an administrator when the state is changed to the 'rejected'.
7538	StateComment *string `json:"stateComment,omitempty"`
7539
7540	// READ-ONLY; Subscription creation date. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
7541	CreatedDate *time.Time `json:"createdDate,omitempty" azure:"ro"`
7542}
7543
7544// MarshalJSON implements the json.Marshaller interface for type SubscriptionContractProperties.
7545func (s SubscriptionContractProperties) MarshalJSON() ([]byte, error) {
7546	objectMap := make(map[string]interface{})
7547	populate(objectMap, "allowTracing", s.AllowTracing)
7548	populate(objectMap, "createdDate", (*timeRFC3339)(s.CreatedDate))
7549	populate(objectMap, "displayName", s.DisplayName)
7550	populate(objectMap, "endDate", (*timeRFC3339)(s.EndDate))
7551	populate(objectMap, "expirationDate", (*timeRFC3339)(s.ExpirationDate))
7552	populate(objectMap, "notificationDate", (*timeRFC3339)(s.NotificationDate))
7553	populate(objectMap, "ownerId", s.OwnerID)
7554	populate(objectMap, "primaryKey", s.PrimaryKey)
7555	populate(objectMap, "scope", s.Scope)
7556	populate(objectMap, "secondaryKey", s.SecondaryKey)
7557	populate(objectMap, "startDate", (*timeRFC3339)(s.StartDate))
7558	populate(objectMap, "state", s.State)
7559	populate(objectMap, "stateComment", s.StateComment)
7560	return json.Marshal(objectMap)
7561}
7562
7563// UnmarshalJSON implements the json.Unmarshaller interface for type SubscriptionContractProperties.
7564func (s *SubscriptionContractProperties) UnmarshalJSON(data []byte) error {
7565	var rawMsg map[string]json.RawMessage
7566	if err := json.Unmarshal(data, &rawMsg); err != nil {
7567		return err
7568	}
7569	for key, val := range rawMsg {
7570		var err error
7571		switch key {
7572		case "allowTracing":
7573			err = unpopulate(val, &s.AllowTracing)
7574			delete(rawMsg, key)
7575		case "createdDate":
7576			var aux timeRFC3339
7577			err = unpopulate(val, &aux)
7578			s.CreatedDate = (*time.Time)(&aux)
7579			delete(rawMsg, key)
7580		case "displayName":
7581			err = unpopulate(val, &s.DisplayName)
7582			delete(rawMsg, key)
7583		case "endDate":
7584			var aux timeRFC3339
7585			err = unpopulate(val, &aux)
7586			s.EndDate = (*time.Time)(&aux)
7587			delete(rawMsg, key)
7588		case "expirationDate":
7589			var aux timeRFC3339
7590			err = unpopulate(val, &aux)
7591			s.ExpirationDate = (*time.Time)(&aux)
7592			delete(rawMsg, key)
7593		case "notificationDate":
7594			var aux timeRFC3339
7595			err = unpopulate(val, &aux)
7596			s.NotificationDate = (*time.Time)(&aux)
7597			delete(rawMsg, key)
7598		case "ownerId":
7599			err = unpopulate(val, &s.OwnerID)
7600			delete(rawMsg, key)
7601		case "primaryKey":
7602			err = unpopulate(val, &s.PrimaryKey)
7603			delete(rawMsg, key)
7604		case "scope":
7605			err = unpopulate(val, &s.Scope)
7606			delete(rawMsg, key)
7607		case "secondaryKey":
7608			err = unpopulate(val, &s.SecondaryKey)
7609			delete(rawMsg, key)
7610		case "startDate":
7611			var aux timeRFC3339
7612			err = unpopulate(val, &aux)
7613			s.StartDate = (*time.Time)(&aux)
7614			delete(rawMsg, key)
7615		case "state":
7616			err = unpopulate(val, &s.State)
7617			delete(rawMsg, key)
7618		case "stateComment":
7619			err = unpopulate(val, &s.StateComment)
7620			delete(rawMsg, key)
7621		}
7622		if err != nil {
7623			return err
7624		}
7625	}
7626	return nil
7627}
7628
7629// SubscriptionCreateOrUpdateOptions contains the optional parameters for the Subscription.CreateOrUpdate method.
7630type SubscriptionCreateOrUpdateOptions struct {
7631	// Determines the type of application which send the create user request. Default is legacy publisher portal.
7632	AppType *AppType
7633	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
7634	IfMatch *string
7635	// Notify change in Subscription State.
7636	// - If false, do not send any email notification for change of state of subscription
7637	// - If true, send email notification of change of state of subscription
7638	Notify *bool
7639}
7640
7641// SubscriptionCreateParameterProperties - Parameters supplied to the Create subscription operation.
7642type SubscriptionCreateParameterProperties struct {
7643	// REQUIRED; Subscription name.
7644	DisplayName *string `json:"displayName,omitempty"`
7645
7646	// REQUIRED; Scope like /products/{productId} or /apis or /apis/{apiId}.
7647	Scope *string `json:"scope,omitempty"`
7648
7649	// Determines whether tracing can be enabled
7650	AllowTracing *bool `json:"allowTracing,omitempty"`
7651
7652	// User (user id path) for whom subscription is being created in form /users/{userId}
7653	OwnerID *string `json:"ownerId,omitempty"`
7654
7655	// Primary subscription key. If not specified during request key will be generated automatically.
7656	PrimaryKey *string `json:"primaryKey,omitempty"`
7657
7658	// Secondary subscription key. If not specified during request key will be generated automatically.
7659	SecondaryKey *string `json:"secondaryKey,omitempty"`
7660
7661	// Initial subscription state. If no value is specified, subscription is created with Submitted state. Possible states are * active – the subscription is
7662	// active, * suspended – the subscription is
7663	// blocked, and the subscriber cannot call any APIs of the product, * submitted – the subscription request has been made by the developer, but has not yet
7664	// been approved or rejected, * rejected – the
7665	// subscription request has been denied by an administrator, * cancelled – the subscription has been cancelled by the developer or administrator, * expired
7666	// – the subscription reached its expiration date
7667	// and was deactivated.
7668	State *SubscriptionState `json:"state,omitempty"`
7669}
7670
7671// SubscriptionCreateParameters - Subscription create details.
7672type SubscriptionCreateParameters struct {
7673	// Subscription contract properties.
7674	Properties *SubscriptionCreateParameterProperties `json:"properties,omitempty"`
7675}
7676
7677// SubscriptionDeleteOptions contains the optional parameters for the Subscription.Delete method.
7678type SubscriptionDeleteOptions struct {
7679	// placeholder for future optional parameters
7680}
7681
7682// SubscriptionGetEntityTagOptions contains the optional parameters for the Subscription.GetEntityTag method.
7683type SubscriptionGetEntityTagOptions struct {
7684	// placeholder for future optional parameters
7685}
7686
7687// SubscriptionGetOptions contains the optional parameters for the Subscription.Get method.
7688type SubscriptionGetOptions struct {
7689	// placeholder for future optional parameters
7690}
7691
7692// SubscriptionKeyParameterNamesContract - Subscription key parameter names details.
7693type SubscriptionKeyParameterNamesContract struct {
7694	// Subscription key header name.
7695	Header *string `json:"header,omitempty"`
7696
7697	// Subscription key query string parameter name.
7698	Query *string `json:"query,omitempty"`
7699}
7700
7701// SubscriptionKeysContract - Subscription keys.
7702type SubscriptionKeysContract struct {
7703	// Subscription primary key.
7704	PrimaryKey *string `json:"primaryKey,omitempty"`
7705
7706	// Subscription secondary key.
7707	SecondaryKey *string `json:"secondaryKey,omitempty"`
7708}
7709
7710// SubscriptionListOptions contains the optional parameters for the Subscription.List method.
7711type SubscriptionListOptions struct {
7712	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
7713	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| displayName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
7714	// endswith |</br>| stateComment | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| ownerId | filter | ge, le, eq,
7715	// ne, gt, lt | substringof, contains, startswith, endswith |</br>| scope | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith
7716	// |</br>| userId | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| productId | filter | ge, le, eq, ne, gt, lt |
7717	// substringof, contains, startswith, endswith |</br>| state | filter | eq | |</br>| user | expand | | |</br>
7718	Filter *string
7719	// Number of records to skip.
7720	Skip *int32
7721	// Number of records to return.
7722	Top *int32
7723}
7724
7725// SubscriptionListSecretsOptions contains the optional parameters for the Subscription.ListSecrets method.
7726type SubscriptionListSecretsOptions struct {
7727	// placeholder for future optional parameters
7728}
7729
7730// SubscriptionRegeneratePrimaryKeyOptions contains the optional parameters for the Subscription.RegeneratePrimaryKey method.
7731type SubscriptionRegeneratePrimaryKeyOptions struct {
7732	// placeholder for future optional parameters
7733}
7734
7735// SubscriptionRegenerateSecondaryKeyOptions contains the optional parameters for the Subscription.RegenerateSecondaryKey method.
7736type SubscriptionRegenerateSecondaryKeyOptions struct {
7737	// placeholder for future optional parameters
7738}
7739
7740// SubscriptionUpdateOptions contains the optional parameters for the Subscription.Update method.
7741type SubscriptionUpdateOptions struct {
7742	// Determines the type of application which send the create user request. Default is legacy publisher portal.
7743	AppType *AppType
7744	// Notify change in Subscription State.
7745	// - If false, do not send any email notification for change of state of subscription
7746	// - If true, send email notification of change of state of subscription
7747	Notify *bool
7748}
7749
7750// SubscriptionUpdateParameterProperties - Parameters supplied to the Update subscription operation.
7751type SubscriptionUpdateParameterProperties struct {
7752	// Determines whether tracing can be enabled
7753	AllowTracing *bool `json:"allowTracing,omitempty"`
7754
7755	// Subscription name.
7756	DisplayName *string `json:"displayName,omitempty"`
7757
7758	// Subscription expiration date. The setting is for audit purposes only and the subscription is not automatically expired. The subscription lifecycle can
7759	// be managed by using the state property. The date
7760	// conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
7761	ExpirationDate *time.Time `json:"expirationDate,omitempty"`
7762
7763	// User identifier path: /users/{userId}
7764	OwnerID *string `json:"ownerId,omitempty"`
7765
7766	// Primary subscription key.
7767	PrimaryKey *string `json:"primaryKey,omitempty"`
7768
7769	// Scope like /products/{productId} or /apis or /apis/{apiId}
7770	Scope *string `json:"scope,omitempty"`
7771
7772	// Secondary subscription key.
7773	SecondaryKey *string `json:"secondaryKey,omitempty"`
7774
7775	// Subscription state. Possible states are * active – the subscription is active, * suspended – the subscription is blocked, and the subscriber cannot call
7776	// any APIs of the product, * submitted – the
7777	// subscription request has been made by the developer, but has not yet been approved or rejected, * rejected – the subscription request has been denied
7778	// by an administrator, * cancelled – the
7779	// subscription has been cancelled by the developer or administrator, * expired – the subscription reached its expiration date and was deactivated.
7780	State *SubscriptionState `json:"state,omitempty"`
7781
7782	// Comments describing subscription state change by the administrator when the state is changed to the 'rejected'.
7783	StateComment *string `json:"stateComment,omitempty"`
7784}
7785
7786// MarshalJSON implements the json.Marshaller interface for type SubscriptionUpdateParameterProperties.
7787func (s SubscriptionUpdateParameterProperties) MarshalJSON() ([]byte, error) {
7788	objectMap := make(map[string]interface{})
7789	populate(objectMap, "allowTracing", s.AllowTracing)
7790	populate(objectMap, "displayName", s.DisplayName)
7791	populate(objectMap, "expirationDate", (*timeRFC3339)(s.ExpirationDate))
7792	populate(objectMap, "ownerId", s.OwnerID)
7793	populate(objectMap, "primaryKey", s.PrimaryKey)
7794	populate(objectMap, "scope", s.Scope)
7795	populate(objectMap, "secondaryKey", s.SecondaryKey)
7796	populate(objectMap, "state", s.State)
7797	populate(objectMap, "stateComment", s.StateComment)
7798	return json.Marshal(objectMap)
7799}
7800
7801// UnmarshalJSON implements the json.Unmarshaller interface for type SubscriptionUpdateParameterProperties.
7802func (s *SubscriptionUpdateParameterProperties) UnmarshalJSON(data []byte) error {
7803	var rawMsg map[string]json.RawMessage
7804	if err := json.Unmarshal(data, &rawMsg); err != nil {
7805		return err
7806	}
7807	for key, val := range rawMsg {
7808		var err error
7809		switch key {
7810		case "allowTracing":
7811			err = unpopulate(val, &s.AllowTracing)
7812			delete(rawMsg, key)
7813		case "displayName":
7814			err = unpopulate(val, &s.DisplayName)
7815			delete(rawMsg, key)
7816		case "expirationDate":
7817			var aux timeRFC3339
7818			err = unpopulate(val, &aux)
7819			s.ExpirationDate = (*time.Time)(&aux)
7820			delete(rawMsg, key)
7821		case "ownerId":
7822			err = unpopulate(val, &s.OwnerID)
7823			delete(rawMsg, key)
7824		case "primaryKey":
7825			err = unpopulate(val, &s.PrimaryKey)
7826			delete(rawMsg, key)
7827		case "scope":
7828			err = unpopulate(val, &s.Scope)
7829			delete(rawMsg, key)
7830		case "secondaryKey":
7831			err = unpopulate(val, &s.SecondaryKey)
7832			delete(rawMsg, key)
7833		case "state":
7834			err = unpopulate(val, &s.State)
7835			delete(rawMsg, key)
7836		case "stateComment":
7837			err = unpopulate(val, &s.StateComment)
7838			delete(rawMsg, key)
7839		}
7840		if err != nil {
7841			return err
7842		}
7843	}
7844	return nil
7845}
7846
7847// SubscriptionUpdateParameters - Subscription update details.
7848type SubscriptionUpdateParameters struct {
7849	// Subscription Update contract properties.
7850	Properties *SubscriptionUpdateParameterProperties `json:"properties,omitempty"`
7851}
7852
7853// MarshalJSON implements the json.Marshaller interface for type SubscriptionUpdateParameters.
7854func (s SubscriptionUpdateParameters) MarshalJSON() ([]byte, error) {
7855	objectMap := make(map[string]interface{})
7856	populate(objectMap, "properties", s.Properties)
7857	return json.Marshal(objectMap)
7858}
7859
7860// SubscriptionsDelegationSettingsProperties - Subscriptions delegation settings properties.
7861type SubscriptionsDelegationSettingsProperties struct {
7862	// Enable or disable delegation for subscriptions.
7863	Enabled *bool `json:"enabled,omitempty"`
7864}
7865
7866// TagAssignToAPIOptions contains the optional parameters for the Tag.AssignToAPI method.
7867type TagAssignToAPIOptions struct {
7868	// placeholder for future optional parameters
7869}
7870
7871// TagAssignToOperationOptions contains the optional parameters for the Tag.AssignToOperation method.
7872type TagAssignToOperationOptions struct {
7873	// placeholder for future optional parameters
7874}
7875
7876// TagAssignToProductOptions contains the optional parameters for the Tag.AssignToProduct method.
7877type TagAssignToProductOptions struct {
7878	// placeholder for future optional parameters
7879}
7880
7881// TagCollection - Paged Tag list representation.
7882type TagCollection struct {
7883	// Total record count number across all pages.
7884	Count *int64 `json:"count,omitempty"`
7885
7886	// Next page link if any.
7887	NextLink *string `json:"nextLink,omitempty"`
7888
7889	// Page values.
7890	Value []*TagContract `json:"value,omitempty"`
7891}
7892
7893// MarshalJSON implements the json.Marshaller interface for type TagCollection.
7894func (t TagCollection) MarshalJSON() ([]byte, error) {
7895	objectMap := make(map[string]interface{})
7896	populate(objectMap, "count", t.Count)
7897	populate(objectMap, "nextLink", t.NextLink)
7898	populate(objectMap, "value", t.Value)
7899	return json.Marshal(objectMap)
7900}
7901
7902// TagContract - Tag Contract details.
7903type TagContract struct {
7904	Resource
7905	// Tag entity contract properties.
7906	Properties *TagContractProperties `json:"properties,omitempty"`
7907}
7908
7909// MarshalJSON implements the json.Marshaller interface for type TagContract.
7910func (t TagContract) MarshalJSON() ([]byte, error) {
7911	objectMap := t.Resource.marshalInternal()
7912	populate(objectMap, "properties", t.Properties)
7913	return json.Marshal(objectMap)
7914}
7915
7916// TagContractProperties - Tag contract Properties.
7917type TagContractProperties struct {
7918	// REQUIRED; Tag name.
7919	DisplayName *string `json:"displayName,omitempty"`
7920}
7921
7922// TagCreateOrUpdateOptions contains the optional parameters for the Tag.CreateOrUpdate method.
7923type TagCreateOrUpdateOptions struct {
7924	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
7925	IfMatch *string
7926}
7927
7928// TagCreateUpdateParameters - Parameters supplied to Create/Update Tag operations.
7929type TagCreateUpdateParameters struct {
7930	// Properties supplied to Create Tag operation.
7931	Properties *TagContractProperties `json:"properties,omitempty"`
7932}
7933
7934// MarshalJSON implements the json.Marshaller interface for type TagCreateUpdateParameters.
7935func (t TagCreateUpdateParameters) MarshalJSON() ([]byte, error) {
7936	objectMap := make(map[string]interface{})
7937	populate(objectMap, "properties", t.Properties)
7938	return json.Marshal(objectMap)
7939}
7940
7941// TagDeleteOptions contains the optional parameters for the Tag.Delete method.
7942type TagDeleteOptions struct {
7943	// placeholder for future optional parameters
7944}
7945
7946// TagDescriptionBaseProperties - Parameters supplied to the Create TagDescription operation.
7947type TagDescriptionBaseProperties struct {
7948	// Description of the Tag.
7949	Description *string `json:"description,omitempty"`
7950
7951	// Description of the external resources describing the tag.
7952	ExternalDocsDescription *string `json:"externalDocsDescription,omitempty"`
7953
7954	// Absolute URL of external resources describing the tag.
7955	ExternalDocsURL *string `json:"externalDocsUrl,omitempty"`
7956}
7957
7958// TagDescriptionCollection - Paged TagDescription list representation.
7959type TagDescriptionCollection struct {
7960	// Total record count number across all pages.
7961	Count *int64 `json:"count,omitempty"`
7962
7963	// Next page link if any.
7964	NextLink *string `json:"nextLink,omitempty"`
7965
7966	// Page values.
7967	Value []*TagDescriptionContract `json:"value,omitempty"`
7968}
7969
7970// MarshalJSON implements the json.Marshaller interface for type TagDescriptionCollection.
7971func (t TagDescriptionCollection) MarshalJSON() ([]byte, error) {
7972	objectMap := make(map[string]interface{})
7973	populate(objectMap, "count", t.Count)
7974	populate(objectMap, "nextLink", t.NextLink)
7975	populate(objectMap, "value", t.Value)
7976	return json.Marshal(objectMap)
7977}
7978
7979// TagDescriptionContract - Contract details.
7980type TagDescriptionContract struct {
7981	Resource
7982	// TagDescription entity contract properties.
7983	Properties *TagDescriptionContractProperties `json:"properties,omitempty"`
7984}
7985
7986// MarshalJSON implements the json.Marshaller interface for type TagDescriptionContract.
7987func (t TagDescriptionContract) MarshalJSON() ([]byte, error) {
7988	objectMap := t.Resource.marshalInternal()
7989	populate(objectMap, "properties", t.Properties)
7990	return json.Marshal(objectMap)
7991}
7992
7993// TagDescriptionContractProperties - TagDescription contract Properties.
7994type TagDescriptionContractProperties struct {
7995	TagDescriptionBaseProperties
7996	// Tag name.
7997	DisplayName *string `json:"displayName,omitempty"`
7998
7999	// Identifier of the tag in the form of /tags/{tagId}
8000	TagID *string `json:"tagId,omitempty"`
8001}
8002
8003// TagDescriptionCreateParameters - Parameters supplied to the Create TagDescription operation.
8004type TagDescriptionCreateParameters struct {
8005	// Properties supplied to Create TagDescription operation.
8006	Properties *TagDescriptionBaseProperties `json:"properties,omitempty"`
8007}
8008
8009// TagDetachFromAPIOptions contains the optional parameters for the Tag.DetachFromAPI method.
8010type TagDetachFromAPIOptions struct {
8011	// placeholder for future optional parameters
8012}
8013
8014// TagDetachFromOperationOptions contains the optional parameters for the Tag.DetachFromOperation method.
8015type TagDetachFromOperationOptions struct {
8016	// placeholder for future optional parameters
8017}
8018
8019// TagDetachFromProductOptions contains the optional parameters for the Tag.DetachFromProduct method.
8020type TagDetachFromProductOptions struct {
8021	// placeholder for future optional parameters
8022}
8023
8024// TagGetByAPIOptions contains the optional parameters for the Tag.GetByAPI method.
8025type TagGetByAPIOptions struct {
8026	// placeholder for future optional parameters
8027}
8028
8029// TagGetByOperationOptions contains the optional parameters for the Tag.GetByOperation method.
8030type TagGetByOperationOptions struct {
8031	// placeholder for future optional parameters
8032}
8033
8034// TagGetByProductOptions contains the optional parameters for the Tag.GetByProduct method.
8035type TagGetByProductOptions struct {
8036	// placeholder for future optional parameters
8037}
8038
8039// TagGetEntityStateByAPIOptions contains the optional parameters for the Tag.GetEntityStateByAPI method.
8040type TagGetEntityStateByAPIOptions struct {
8041	// placeholder for future optional parameters
8042}
8043
8044// TagGetEntityStateByOperationOptions contains the optional parameters for the Tag.GetEntityStateByOperation method.
8045type TagGetEntityStateByOperationOptions struct {
8046	// placeholder for future optional parameters
8047}
8048
8049// TagGetEntityStateByProductOptions contains the optional parameters for the Tag.GetEntityStateByProduct method.
8050type TagGetEntityStateByProductOptions struct {
8051	// placeholder for future optional parameters
8052}
8053
8054// TagGetEntityStateOptions contains the optional parameters for the Tag.GetEntityState method.
8055type TagGetEntityStateOptions struct {
8056	// placeholder for future optional parameters
8057}
8058
8059// TagGetOptions contains the optional parameters for the Tag.Get method.
8060type TagGetOptions struct {
8061	// placeholder for future optional parameters
8062}
8063
8064// TagListByAPIOptions contains the optional parameters for the Tag.ListByAPI method.
8065type TagListByAPIOptions struct {
8066	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| displayName | filter
8067	// | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| name | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
8068	// endswith |</br>
8069	Filter *string
8070	// Number of records to skip.
8071	Skip *int32
8072	// Number of records to return.
8073	Top *int32
8074}
8075
8076// TagListByOperationOptions contains the optional parameters for the Tag.ListByOperation method.
8077type TagListByOperationOptions struct {
8078	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| displayName | filter
8079	// | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| name | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
8080	// endswith |</br>
8081	Filter *string
8082	// Number of records to skip.
8083	Skip *int32
8084	// Number of records to return.
8085	Top *int32
8086}
8087
8088// TagListByProductOptions contains the optional parameters for the Tag.ListByProduct method.
8089type TagListByProductOptions struct {
8090	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| displayName | filter
8091	// | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| name | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
8092	// endswith |</br>
8093	Filter *string
8094	// Number of records to skip.
8095	Skip *int32
8096	// Number of records to return.
8097	Top *int32
8098}
8099
8100// TagListByServiceOptions contains the optional parameters for the Tag.ListByService method.
8101type TagListByServiceOptions struct {
8102	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
8103	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| displayName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
8104	// endswith |</br>
8105	Filter *string
8106	// Scope like 'apis', 'products' or 'apis/{apiId}
8107	Scope *string
8108	// Number of records to skip.
8109	Skip *int32
8110	// Number of records to return.
8111	Top *int32
8112}
8113
8114// TagResourceCollection - Paged Tag list representation.
8115type TagResourceCollection struct {
8116	// Total record count number across all pages.
8117	Count *int64 `json:"count,omitempty"`
8118
8119	// Next page link if any.
8120	NextLink *string `json:"nextLink,omitempty"`
8121
8122	// Page values.
8123	Value []*TagResourceContract `json:"value,omitempty"`
8124}
8125
8126// MarshalJSON implements the json.Marshaller interface for type TagResourceCollection.
8127func (t TagResourceCollection) MarshalJSON() ([]byte, error) {
8128	objectMap := make(map[string]interface{})
8129	populate(objectMap, "count", t.Count)
8130	populate(objectMap, "nextLink", t.NextLink)
8131	populate(objectMap, "value", t.Value)
8132	return json.Marshal(objectMap)
8133}
8134
8135// TagResourceContract - TagResource contract properties.
8136type TagResourceContract struct {
8137	// REQUIRED; Tag associated with the resource.
8138	Tag *TagResourceContractProperties `json:"tag,omitempty"`
8139
8140	// Api associated with the tag.
8141	API *APITagResourceContractProperties `json:"api,omitempty"`
8142
8143	// Operation associated with the tag.
8144	Operation *OperationTagResourceContractProperties `json:"operation,omitempty"`
8145
8146	// Product associated with the tag.
8147	Product *ProductTagResourceContractProperties `json:"product,omitempty"`
8148}
8149
8150// TagResourceContractProperties - Contract defining the Tag property in the Tag Resource Contract
8151type TagResourceContractProperties struct {
8152	// Tag identifier
8153	ID *string `json:"id,omitempty"`
8154
8155	// Tag Name
8156	Name *string `json:"name,omitempty"`
8157}
8158
8159// TagResourceListByServiceOptions contains the optional parameters for the TagResource.ListByService method.
8160type TagResourceListByServiceOptions struct {
8161	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| aid | filter | ge,
8162	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| name | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
8163	// endswith |</br>| displayName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| apiName | filter | ge, le, eq, ne,
8164	// gt, lt | substringof, contains, startswith, endswith |</br>| apiRevision | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith
8165	// |</br>| path | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| description | filter | ge, le, eq, ne, gt, lt |
8166	// substringof, contains, startswith, endswith |</br>| serviceUrl | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>|
8167	// method | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| urlTemplate | filter | ge, le, eq, ne, gt, lt | substringof,
8168	// contains, startswith, endswith |</br>| terms | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| state | filter |
8169	// eq | |</br>| isCurrent | filter | eq | |</br>
8170	Filter *string
8171	// Number of records to skip.
8172	Skip *int32
8173	// Number of records to return.
8174	Top *int32
8175}
8176
8177// TagUpdateOptions contains the optional parameters for the Tag.Update method.
8178type TagUpdateOptions struct {
8179	// placeholder for future optional parameters
8180}
8181
8182// TenantAccessCreateOptions contains the optional parameters for the TenantAccess.Create method.
8183type TenantAccessCreateOptions struct {
8184	// placeholder for future optional parameters
8185}
8186
8187// TenantAccessGetEntityTagOptions contains the optional parameters for the TenantAccess.GetEntityTag method.
8188type TenantAccessGetEntityTagOptions struct {
8189	// placeholder for future optional parameters
8190}
8191
8192// TenantAccessGetOptions contains the optional parameters for the TenantAccess.Get method.
8193type TenantAccessGetOptions struct {
8194	// placeholder for future optional parameters
8195}
8196
8197// TenantAccessGitRegeneratePrimaryKeyOptions contains the optional parameters for the TenantAccessGit.RegeneratePrimaryKey method.
8198type TenantAccessGitRegeneratePrimaryKeyOptions struct {
8199	// placeholder for future optional parameters
8200}
8201
8202// TenantAccessGitRegenerateSecondaryKeyOptions contains the optional parameters for the TenantAccessGit.RegenerateSecondaryKey method.
8203type TenantAccessGitRegenerateSecondaryKeyOptions struct {
8204	// placeholder for future optional parameters
8205}
8206
8207// TenantAccessListByServiceOptions contains the optional parameters for the TenantAccess.ListByService method.
8208type TenantAccessListByServiceOptions struct {
8209	// Not used
8210	Filter *string
8211}
8212
8213// TenantAccessListSecretsOptions contains the optional parameters for the TenantAccess.ListSecrets method.
8214type TenantAccessListSecretsOptions struct {
8215	// placeholder for future optional parameters
8216}
8217
8218// TenantAccessRegeneratePrimaryKeyOptions contains the optional parameters for the TenantAccess.RegeneratePrimaryKey method.
8219type TenantAccessRegeneratePrimaryKeyOptions struct {
8220	// placeholder for future optional parameters
8221}
8222
8223// TenantAccessRegenerateSecondaryKeyOptions contains the optional parameters for the TenantAccess.RegenerateSecondaryKey method.
8224type TenantAccessRegenerateSecondaryKeyOptions struct {
8225	// placeholder for future optional parameters
8226}
8227
8228// TenantAccessUpdateOptions contains the optional parameters for the TenantAccess.Update method.
8229type TenantAccessUpdateOptions struct {
8230	// placeholder for future optional parameters
8231}
8232
8233// TenantConfigurationBeginDeployOptions contains the optional parameters for the TenantConfiguration.BeginDeploy method.
8234type TenantConfigurationBeginDeployOptions struct {
8235	// placeholder for future optional parameters
8236}
8237
8238// TenantConfigurationBeginSaveOptions contains the optional parameters for the TenantConfiguration.BeginSave method.
8239type TenantConfigurationBeginSaveOptions struct {
8240	// placeholder for future optional parameters
8241}
8242
8243// TenantConfigurationBeginValidateOptions contains the optional parameters for the TenantConfiguration.BeginValidate method.
8244type TenantConfigurationBeginValidateOptions struct {
8245	// placeholder for future optional parameters
8246}
8247
8248// TenantConfigurationGetSyncStateOptions contains the optional parameters for the TenantConfiguration.GetSyncState method.
8249type TenantConfigurationGetSyncStateOptions struct {
8250	// placeholder for future optional parameters
8251}
8252
8253// TenantConfigurationSyncStateContract - Result of Tenant Configuration Sync State.
8254type TenantConfigurationSyncStateContract struct {
8255	// Properties returned Tenant Configuration Sync State check.
8256	Properties *TenantConfigurationSyncStateContractProperties `json:"properties,omitempty"`
8257}
8258
8259// TenantConfigurationSyncStateContractProperties - Tenant Configuration Synchronization State.
8260type TenantConfigurationSyncStateContractProperties struct {
8261	// The name of Git branch.
8262	Branch *string `json:"branch,omitempty"`
8263
8264	// The latest commit Id.
8265	CommitID *string `json:"commitId,omitempty"`
8266
8267	// The date of the latest configuration change. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
8268	ConfigurationChangeDate *time.Time `json:"configurationChangeDate,omitempty"`
8269
8270	// value indicating if last sync was save (true) or deploy (false) operation.
8271	IsExport *bool `json:"isExport,omitempty"`
8272
8273	// value indicating whether Git configuration access is enabled.
8274	IsGitEnabled *bool `json:"isGitEnabled,omitempty"`
8275
8276	// value indicating if last synchronization was later than the configuration change.
8277	IsSynced *bool `json:"isSynced,omitempty"`
8278
8279	// Most recent tenant configuration operation identifier
8280	LastOperationID *string `json:"lastOperationId,omitempty"`
8281
8282	// The date of the latest synchronization. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
8283	SyncDate *time.Time `json:"syncDate,omitempty"`
8284}
8285
8286// MarshalJSON implements the json.Marshaller interface for type TenantConfigurationSyncStateContractProperties.
8287func (t TenantConfigurationSyncStateContractProperties) MarshalJSON() ([]byte, error) {
8288	objectMap := make(map[string]interface{})
8289	populate(objectMap, "branch", t.Branch)
8290	populate(objectMap, "commitId", t.CommitID)
8291	populate(objectMap, "configurationChangeDate", (*timeRFC3339)(t.ConfigurationChangeDate))
8292	populate(objectMap, "isExport", t.IsExport)
8293	populate(objectMap, "isGitEnabled", t.IsGitEnabled)
8294	populate(objectMap, "isSynced", t.IsSynced)
8295	populate(objectMap, "lastOperationId", t.LastOperationID)
8296	populate(objectMap, "syncDate", (*timeRFC3339)(t.SyncDate))
8297	return json.Marshal(objectMap)
8298}
8299
8300// UnmarshalJSON implements the json.Unmarshaller interface for type TenantConfigurationSyncStateContractProperties.
8301func (t *TenantConfigurationSyncStateContractProperties) UnmarshalJSON(data []byte) error {
8302	var rawMsg map[string]json.RawMessage
8303	if err := json.Unmarshal(data, &rawMsg); err != nil {
8304		return err
8305	}
8306	for key, val := range rawMsg {
8307		var err error
8308		switch key {
8309		case "branch":
8310			err = unpopulate(val, &t.Branch)
8311			delete(rawMsg, key)
8312		case "commitId":
8313			err = unpopulate(val, &t.CommitID)
8314			delete(rawMsg, key)
8315		case "configurationChangeDate":
8316			var aux timeRFC3339
8317			err = unpopulate(val, &aux)
8318			t.ConfigurationChangeDate = (*time.Time)(&aux)
8319			delete(rawMsg, key)
8320		case "isExport":
8321			err = unpopulate(val, &t.IsExport)
8322			delete(rawMsg, key)
8323		case "isGitEnabled":
8324			err = unpopulate(val, &t.IsGitEnabled)
8325			delete(rawMsg, key)
8326		case "isSynced":
8327			err = unpopulate(val, &t.IsSynced)
8328			delete(rawMsg, key)
8329		case "lastOperationId":
8330			err = unpopulate(val, &t.LastOperationID)
8331			delete(rawMsg, key)
8332		case "syncDate":
8333			var aux timeRFC3339
8334			err = unpopulate(val, &aux)
8335			t.SyncDate = (*time.Time)(&aux)
8336			delete(rawMsg, key)
8337		}
8338		if err != nil {
8339			return err
8340		}
8341	}
8342	return nil
8343}
8344
8345// TenantSettingsCollection - Paged AccessInformation list representation.
8346type TenantSettingsCollection struct {
8347	// READ-ONLY; Next page link if any.
8348	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
8349
8350	// READ-ONLY; Page values.
8351	Value []*TenantSettingsContract `json:"value,omitempty" azure:"ro"`
8352}
8353
8354// MarshalJSON implements the json.Marshaller interface for type TenantSettingsCollection.
8355func (t TenantSettingsCollection) MarshalJSON() ([]byte, error) {
8356	objectMap := make(map[string]interface{})
8357	populate(objectMap, "nextLink", t.NextLink)
8358	populate(objectMap, "value", t.Value)
8359	return json.Marshal(objectMap)
8360}
8361
8362// TenantSettingsContract - Tenant Settings.
8363type TenantSettingsContract struct {
8364	Resource
8365	// TenantSettings entity contract properties.
8366	Properties *TenantSettingsContractProperties `json:"properties,omitempty"`
8367}
8368
8369// MarshalJSON implements the json.Marshaller interface for type TenantSettingsContract.
8370func (t TenantSettingsContract) MarshalJSON() ([]byte, error) {
8371	objectMap := t.Resource.marshalInternal()
8372	populate(objectMap, "properties", t.Properties)
8373	return json.Marshal(objectMap)
8374}
8375
8376// TenantSettingsContractProperties - Tenant access information contract of the API Management service.
8377type TenantSettingsContractProperties struct {
8378	// Tenant settings
8379	Settings map[string]*string `json:"settings,omitempty"`
8380}
8381
8382// MarshalJSON implements the json.Marshaller interface for type TenantSettingsContractProperties.
8383func (t TenantSettingsContractProperties) MarshalJSON() ([]byte, error) {
8384	objectMap := make(map[string]interface{})
8385	populate(objectMap, "settings", t.Settings)
8386	return json.Marshal(objectMap)
8387}
8388
8389// TenantSettingsGetOptions contains the optional parameters for the TenantSettings.Get method.
8390type TenantSettingsGetOptions struct {
8391	// placeholder for future optional parameters
8392}
8393
8394// TenantSettingsListByServiceOptions contains the optional parameters for the TenantSettings.ListByService method.
8395type TenantSettingsListByServiceOptions struct {
8396	// Not used
8397	Filter *string
8398}
8399
8400// TermsOfServiceProperties - Terms of service contract properties.
8401type TermsOfServiceProperties struct {
8402	// Ask user for consent to the terms of service.
8403	ConsentRequired *bool `json:"consentRequired,omitempty"`
8404
8405	// Display terms of service during a sign-up process.
8406	Enabled *bool `json:"enabled,omitempty"`
8407
8408	// A terms of service text.
8409	Text *string `json:"text,omitempty"`
8410}
8411
8412// TokenBodyParameterContract - OAuth acquire token request body parameter (www-url-form-encoded).
8413type TokenBodyParameterContract struct {
8414	// REQUIRED; body parameter name.
8415	Name *string `json:"name,omitempty"`
8416
8417	// REQUIRED; body parameter value.
8418	Value *string `json:"value,omitempty"`
8419}
8420
8421// UserCollection - Paged Users list representation.
8422type UserCollection struct {
8423	// Total record count number across all pages.
8424	Count *int64 `json:"count,omitempty"`
8425
8426	// Next page link if any.
8427	NextLink *string `json:"nextLink,omitempty"`
8428
8429	// Page values.
8430	Value []*UserContract `json:"value,omitempty"`
8431}
8432
8433// MarshalJSON implements the json.Marshaller interface for type UserCollection.
8434func (u UserCollection) MarshalJSON() ([]byte, error) {
8435	objectMap := make(map[string]interface{})
8436	populate(objectMap, "count", u.Count)
8437	populate(objectMap, "nextLink", u.NextLink)
8438	populate(objectMap, "value", u.Value)
8439	return json.Marshal(objectMap)
8440}
8441
8442// UserConfirmationPasswordSendOptions contains the optional parameters for the UserConfirmationPassword.Send method.
8443type UserConfirmationPasswordSendOptions struct {
8444	// Determines the type of application which send the create user request. Default is legacy publisher portal.
8445	AppType *AppType
8446}
8447
8448// UserContract - User details.
8449type UserContract struct {
8450	Resource
8451	// User entity contract properties.
8452	Properties *UserContractProperties `json:"properties,omitempty"`
8453}
8454
8455// MarshalJSON implements the json.Marshaller interface for type UserContract.
8456func (u UserContract) MarshalJSON() ([]byte, error) {
8457	objectMap := u.Resource.marshalInternal()
8458	populate(objectMap, "properties", u.Properties)
8459	return json.Marshal(objectMap)
8460}
8461
8462// UserContractProperties - User profile.
8463type UserContractProperties struct {
8464	UserEntityBaseParameters
8465	// Email address.
8466	Email *string `json:"email,omitempty"`
8467
8468	// First name.
8469	FirstName *string `json:"firstName,omitempty"`
8470
8471	// Last name.
8472	LastName *string `json:"lastName,omitempty"`
8473
8474	// Date of user registration. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ as specified by the ISO 8601 standard.
8475	RegistrationDate *time.Time `json:"registrationDate,omitempty"`
8476
8477	// READ-ONLY; Collection of groups user is part of.
8478	Groups []*GroupContractProperties `json:"groups,omitempty" azure:"ro"`
8479}
8480
8481// MarshalJSON implements the json.Marshaller interface for type UserContractProperties.
8482func (u UserContractProperties) MarshalJSON() ([]byte, error) {
8483	objectMap := u.UserEntityBaseParameters.marshalInternal()
8484	populate(objectMap, "email", u.Email)
8485	populate(objectMap, "firstName", u.FirstName)
8486	populate(objectMap, "groups", u.Groups)
8487	populate(objectMap, "lastName", u.LastName)
8488	populate(objectMap, "registrationDate", (*timeRFC3339)(u.RegistrationDate))
8489	return json.Marshal(objectMap)
8490}
8491
8492// UnmarshalJSON implements the json.Unmarshaller interface for type UserContractProperties.
8493func (u *UserContractProperties) UnmarshalJSON(data []byte) error {
8494	var rawMsg map[string]json.RawMessage
8495	if err := json.Unmarshal(data, &rawMsg); err != nil {
8496		return err
8497	}
8498	for key, val := range rawMsg {
8499		var err error
8500		switch key {
8501		case "email":
8502			err = unpopulate(val, &u.Email)
8503			delete(rawMsg, key)
8504		case "firstName":
8505			err = unpopulate(val, &u.FirstName)
8506			delete(rawMsg, key)
8507		case "groups":
8508			err = unpopulate(val, &u.Groups)
8509			delete(rawMsg, key)
8510		case "lastName":
8511			err = unpopulate(val, &u.LastName)
8512			delete(rawMsg, key)
8513		case "registrationDate":
8514			var aux timeRFC3339
8515			err = unpopulate(val, &aux)
8516			u.RegistrationDate = (*time.Time)(&aux)
8517			delete(rawMsg, key)
8518		}
8519		if err != nil {
8520			return err
8521		}
8522	}
8523	return u.UserEntityBaseParameters.unmarshalInternal(rawMsg)
8524}
8525
8526// UserCreateOrUpdateOptions contains the optional parameters for the User.CreateOrUpdate method.
8527type UserCreateOrUpdateOptions struct {
8528	// ETag of the Entity. Not required when creating an entity, but required when updating an entity.
8529	IfMatch *string
8530	// Send an Email notification to the User.
8531	Notify *bool
8532}
8533
8534// UserCreateParameterProperties - Parameters supplied to the Create User operation.
8535type UserCreateParameterProperties struct {
8536	UserEntityBaseParameters
8537	// REQUIRED; Email address. Must not be empty and must be unique within the service instance.
8538	Email *string `json:"email,omitempty"`
8539
8540	// REQUIRED; First name.
8541	FirstName *string `json:"firstName,omitempty"`
8542
8543	// REQUIRED; Last name.
8544	LastName *string `json:"lastName,omitempty"`
8545
8546	// Determines the type of application which send the create user request. Default is legacy portal.
8547	AppType *AppType `json:"appType,omitempty"`
8548
8549	// Determines the type of confirmation e-mail that will be sent to the newly created user.
8550	Confirmation *Confirmation `json:"confirmation,omitempty"`
8551
8552	// User Password. If no value is provided, a default password is generated.
8553	Password *string `json:"password,omitempty"`
8554}
8555
8556// MarshalJSON implements the json.Marshaller interface for type UserCreateParameterProperties.
8557func (u UserCreateParameterProperties) MarshalJSON() ([]byte, error) {
8558	objectMap := u.UserEntityBaseParameters.marshalInternal()
8559	populate(objectMap, "appType", u.AppType)
8560	populate(objectMap, "confirmation", u.Confirmation)
8561	populate(objectMap, "email", u.Email)
8562	populate(objectMap, "firstName", u.FirstName)
8563	populate(objectMap, "lastName", u.LastName)
8564	populate(objectMap, "password", u.Password)
8565	return json.Marshal(objectMap)
8566}
8567
8568// UnmarshalJSON implements the json.Unmarshaller interface for type UserCreateParameterProperties.
8569func (u *UserCreateParameterProperties) UnmarshalJSON(data []byte) error {
8570	var rawMsg map[string]json.RawMessage
8571	if err := json.Unmarshal(data, &rawMsg); err != nil {
8572		return err
8573	}
8574	for key, val := range rawMsg {
8575		var err error
8576		switch key {
8577		case "appType":
8578			err = unpopulate(val, &u.AppType)
8579			delete(rawMsg, key)
8580		case "confirmation":
8581			err = unpopulate(val, &u.Confirmation)
8582			delete(rawMsg, key)
8583		case "email":
8584			err = unpopulate(val, &u.Email)
8585			delete(rawMsg, key)
8586		case "firstName":
8587			err = unpopulate(val, &u.FirstName)
8588			delete(rawMsg, key)
8589		case "lastName":
8590			err = unpopulate(val, &u.LastName)
8591			delete(rawMsg, key)
8592		case "password":
8593			err = unpopulate(val, &u.Password)
8594			delete(rawMsg, key)
8595		}
8596		if err != nil {
8597			return err
8598		}
8599	}
8600	return u.UserEntityBaseParameters.unmarshalInternal(rawMsg)
8601}
8602
8603// UserCreateParameters - User create details.
8604type UserCreateParameters struct {
8605	// User entity create contract properties.
8606	Properties *UserCreateParameterProperties `json:"properties,omitempty"`
8607}
8608
8609// UserDeleteOptions contains the optional parameters for the User.Delete method.
8610type UserDeleteOptions struct {
8611	// Determines the type of application which send the create user request. Default is legacy publisher portal.
8612	AppType *AppType
8613	// Whether to delete user's subscription or not.
8614	DeleteSubscriptions *bool
8615	// Send an Account Closed Email notification to the User.
8616	Notify *bool
8617}
8618
8619// UserEntityBaseParameters - User Entity Base Parameters set.
8620type UserEntityBaseParameters struct {
8621	// Collection of user identities.
8622	Identities []*UserIdentityContract `json:"identities,omitempty"`
8623
8624	// Optional note about a user set by the administrator.
8625	Note *string `json:"note,omitempty"`
8626
8627	// Account state. Specifies whether the user is active or not. Blocked users are unable to sign into the developer portal or call any APIs of subscribed
8628	// products. Default state is Active.
8629	State *UserState `json:"state,omitempty"`
8630}
8631
8632// MarshalJSON implements the json.Marshaller interface for type UserEntityBaseParameters.
8633func (u UserEntityBaseParameters) MarshalJSON() ([]byte, error) {
8634	objectMap := u.marshalInternal()
8635	return json.Marshal(objectMap)
8636}
8637
8638// UnmarshalJSON implements the json.Unmarshaller interface for type UserEntityBaseParameters.
8639func (u *UserEntityBaseParameters) UnmarshalJSON(data []byte) error {
8640	var rawMsg map[string]json.RawMessage
8641	if err := json.Unmarshal(data, &rawMsg); err != nil {
8642		return err
8643	}
8644	return u.unmarshalInternal(rawMsg)
8645}
8646
8647func (u UserEntityBaseParameters) marshalInternal() map[string]interface{} {
8648	objectMap := make(map[string]interface{})
8649	populate(objectMap, "identities", u.Identities)
8650	populate(objectMap, "note", u.Note)
8651	populate(objectMap, "state", u.State)
8652	return objectMap
8653}
8654
8655func (u *UserEntityBaseParameters) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
8656	for key, val := range rawMsg {
8657		var err error
8658		switch key {
8659		case "identities":
8660			err = unpopulate(val, &u.Identities)
8661			delete(rawMsg, key)
8662		case "note":
8663			err = unpopulate(val, &u.Note)
8664			delete(rawMsg, key)
8665		case "state":
8666			err = unpopulate(val, &u.State)
8667			delete(rawMsg, key)
8668		}
8669		if err != nil {
8670			return err
8671		}
8672	}
8673	return nil
8674}
8675
8676// UserGenerateSsoURLOptions contains the optional parameters for the User.GenerateSsoURL method.
8677type UserGenerateSsoURLOptions struct {
8678	// placeholder for future optional parameters
8679}
8680
8681// UserGetEntityTagOptions contains the optional parameters for the User.GetEntityTag method.
8682type UserGetEntityTagOptions struct {
8683	// placeholder for future optional parameters
8684}
8685
8686// UserGetOptions contains the optional parameters for the User.Get method.
8687type UserGetOptions struct {
8688	// placeholder for future optional parameters
8689}
8690
8691// UserGetSharedAccessTokenOptions contains the optional parameters for the User.GetSharedAccessToken method.
8692type UserGetSharedAccessTokenOptions struct {
8693	// placeholder for future optional parameters
8694}
8695
8696// UserGroupListOptions contains the optional parameters for the UserGroup.List method.
8697type UserGroupListOptions struct {
8698	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|------------------------|-----------------------------------|</br>|
8699	// name | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| displayName | filter | ge, le, eq, ne, gt, lt | substringof,
8700	// contains, startswith, endswith |</br>| description | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>
8701	Filter *string
8702	// Number of records to skip.
8703	Skip *int32
8704	// Number of records to return.
8705	Top *int32
8706}
8707
8708// UserIdentitiesListOptions contains the optional parameters for the UserIdentities.List method.
8709type UserIdentitiesListOptions struct {
8710	// placeholder for future optional parameters
8711}
8712
8713// UserIdentityCollection - List of Users Identity list representation.
8714type UserIdentityCollection struct {
8715	// Total record count number across all pages.
8716	Count *int64 `json:"count,omitempty"`
8717
8718	// Next page link if any.
8719	NextLink *string `json:"nextLink,omitempty"`
8720
8721	// User Identity values.
8722	Value []*UserIdentityContract `json:"value,omitempty"`
8723}
8724
8725// MarshalJSON implements the json.Marshaller interface for type UserIdentityCollection.
8726func (u UserIdentityCollection) MarshalJSON() ([]byte, error) {
8727	objectMap := make(map[string]interface{})
8728	populate(objectMap, "count", u.Count)
8729	populate(objectMap, "nextLink", u.NextLink)
8730	populate(objectMap, "value", u.Value)
8731	return json.Marshal(objectMap)
8732}
8733
8734// UserIdentityContract - User identity details.
8735type UserIdentityContract struct {
8736	// Identifier value within provider.
8737	ID *string `json:"id,omitempty"`
8738
8739	// Identity provider name.
8740	Provider *string `json:"provider,omitempty"`
8741}
8742
8743type UserIdentityProperties struct {
8744	// The client id of user assigned identity.
8745	ClientID *string `json:"clientId,omitempty"`
8746
8747	// The principal id of user assigned identity.
8748	PrincipalID *string `json:"principalId,omitempty"`
8749}
8750
8751// UserListByServiceOptions contains the optional parameters for the User.ListByService method.
8752type UserListByServiceOptions struct {
8753	// Detailed Group in response.
8754	ExpandGroups *bool
8755	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|-------------|-------------|-------------|</br>| name | filter | ge,
8756	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| firstName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
8757	// endswith |</br>| lastName | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| email | filter | ge, le, eq, ne, gt,
8758	// lt | substringof, contains, startswith, endswith |</br>| state | filter | eq | |</br>| registrationDate | filter | ge, le, eq, ne, gt, lt | |</br>| note
8759	// | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>| groups | expand | | |</br>
8760	Filter *string
8761	// Number of records to skip.
8762	Skip *int32
8763	// Number of records to return.
8764	Top *int32
8765}
8766
8767// UserSubscriptionGetOptions contains the optional parameters for the UserSubscription.Get method.
8768type UserSubscriptionGetOptions struct {
8769	// placeholder for future optional parameters
8770}
8771
8772// UserSubscriptionListOptions contains the optional parameters for the UserSubscription.List method.
8773type UserSubscriptionListOptions struct {
8774	// | Field | Usage | Supported operators | Supported functions |</br>|-------------|------------------------|-----------------------------------|</br>|name
8775	// | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>|displayName | filter | ge, le, eq, ne, gt, lt | substringof, contains,
8776	// startswith, endswith |</br>|stateComment | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>|ownerId | filter | ge,
8777	// le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>|scope | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith,
8778	// endswith |</br>|userId | filter | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |</br>|productId | filter | ge, le, eq, ne, gt,
8779	// lt | substringof, contains, startswith, endswith |</br>
8780	Filter *string
8781	// Number of records to skip.
8782	Skip *int32
8783	// Number of records to return.
8784	Top *int32
8785}
8786
8787// UserTokenParameterProperties - Parameters supplied to the Get User Token operation.
8788type UserTokenParameterProperties struct {
8789	// REQUIRED; The Expiry time of the Token. Maximum token expiry time is set to 30 days. The date conforms to the following format: yyyy-MM-ddTHH:mm:ssZ
8790	// as specified by the ISO 8601 standard.
8791	Expiry *time.Time `json:"expiry,omitempty"`
8792
8793	// REQUIRED; The Key to be used to generate token for user.
8794	KeyType *KeyType `json:"keyType,omitempty"`
8795}
8796
8797// MarshalJSON implements the json.Marshaller interface for type UserTokenParameterProperties.
8798func (u UserTokenParameterProperties) MarshalJSON() ([]byte, error) {
8799	objectMap := make(map[string]interface{})
8800	populate(objectMap, "expiry", (*timeRFC3339)(u.Expiry))
8801	populate(objectMap, "keyType", u.KeyType)
8802	return json.Marshal(objectMap)
8803}
8804
8805// UnmarshalJSON implements the json.Unmarshaller interface for type UserTokenParameterProperties.
8806func (u *UserTokenParameterProperties) UnmarshalJSON(data []byte) error {
8807	var rawMsg map[string]json.RawMessage
8808	if err := json.Unmarshal(data, &rawMsg); err != nil {
8809		return err
8810	}
8811	for key, val := range rawMsg {
8812		var err error
8813		switch key {
8814		case "expiry":
8815			var aux timeRFC3339
8816			err = unpopulate(val, &aux)
8817			u.Expiry = (*time.Time)(&aux)
8818			delete(rawMsg, key)
8819		case "keyType":
8820			err = unpopulate(val, &u.KeyType)
8821			delete(rawMsg, key)
8822		}
8823		if err != nil {
8824			return err
8825		}
8826	}
8827	return nil
8828}
8829
8830// UserTokenParameters - Get User Token parameters.
8831type UserTokenParameters struct {
8832	// User Token Parameter contract properties.
8833	Properties *UserTokenParameterProperties `json:"properties,omitempty"`
8834}
8835
8836// UserTokenResult - Get User Token response details.
8837type UserTokenResult struct {
8838	// Shared Access Authorization token for the User.
8839	Value *string `json:"value,omitempty"`
8840}
8841
8842// UserUpdateOptions contains the optional parameters for the User.Update method.
8843type UserUpdateOptions struct {
8844	// placeholder for future optional parameters
8845}
8846
8847// UserUpdateParameters - User update parameters.
8848type UserUpdateParameters struct {
8849	// User entity update contract properties.
8850	Properties *UserUpdateParametersProperties `json:"properties,omitempty"`
8851}
8852
8853// MarshalJSON implements the json.Marshaller interface for type UserUpdateParameters.
8854func (u UserUpdateParameters) MarshalJSON() ([]byte, error) {
8855	objectMap := make(map[string]interface{})
8856	populate(objectMap, "properties", u.Properties)
8857	return json.Marshal(objectMap)
8858}
8859
8860// UserUpdateParametersProperties - Parameters supplied to the Update User operation.
8861type UserUpdateParametersProperties struct {
8862	UserEntityBaseParameters
8863	// Email address. Must not be empty and must be unique within the service instance.
8864	Email *string `json:"email,omitempty"`
8865
8866	// First name.
8867	FirstName *string `json:"firstName,omitempty"`
8868
8869	// Last name.
8870	LastName *string `json:"lastName,omitempty"`
8871
8872	// User Password.
8873	Password *string `json:"password,omitempty"`
8874}
8875
8876// MarshalJSON implements the json.Marshaller interface for type UserUpdateParametersProperties.
8877func (u UserUpdateParametersProperties) MarshalJSON() ([]byte, error) {
8878	objectMap := u.UserEntityBaseParameters.marshalInternal()
8879	populate(objectMap, "email", u.Email)
8880	populate(objectMap, "firstName", u.FirstName)
8881	populate(objectMap, "lastName", u.LastName)
8882	populate(objectMap, "password", u.Password)
8883	return json.Marshal(objectMap)
8884}
8885
8886// UnmarshalJSON implements the json.Unmarshaller interface for type UserUpdateParametersProperties.
8887func (u *UserUpdateParametersProperties) UnmarshalJSON(data []byte) error {
8888	var rawMsg map[string]json.RawMessage
8889	if err := json.Unmarshal(data, &rawMsg); err != nil {
8890		return err
8891	}
8892	for key, val := range rawMsg {
8893		var err error
8894		switch key {
8895		case "email":
8896			err = unpopulate(val, &u.Email)
8897			delete(rawMsg, key)
8898		case "firstName":
8899			err = unpopulate(val, &u.FirstName)
8900			delete(rawMsg, key)
8901		case "lastName":
8902			err = unpopulate(val, &u.LastName)
8903			delete(rawMsg, key)
8904		case "password":
8905			err = unpopulate(val, &u.Password)
8906			delete(rawMsg, key)
8907		}
8908		if err != nil {
8909			return err
8910		}
8911	}
8912	return u.UserEntityBaseParameters.unmarshalInternal(rawMsg)
8913}
8914
8915// VirtualNetworkConfiguration - Configuration of a virtual network to which API Management service is deployed.
8916type VirtualNetworkConfiguration struct {
8917	// The full resource ID of a subnet in a virtual network to deploy the API Management service in.
8918	SubnetResourceID *string `json:"subnetResourceId,omitempty"`
8919
8920	// READ-ONLY; The name of the subnet.
8921	Subnetname *string `json:"subnetname,omitempty" azure:"ro"`
8922
8923	// READ-ONLY; The virtual network ID. This is typically a GUID. Expect a null GUID by default.
8924	Vnetid *string `json:"vnetid,omitempty" azure:"ro"`
8925}
8926
8927// X509CertificateName - Properties of server X509Names.
8928type X509CertificateName struct {
8929	// Thumbprint for the Issuer of the Certificate.
8930	IssuerCertificateThumbprint *string `json:"issuerCertificateThumbprint,omitempty"`
8931
8932	// Common Name of the Certificate.
8933	Name *string `json:"name,omitempty"`
8934}
8935
8936func populate(m map[string]interface{}, k string, v interface{}) {
8937	if v == nil {
8938		return
8939	} else if azcore.IsNullValue(v) {
8940		m[k] = nil
8941	} else if !reflect.ValueOf(v).IsNil() {
8942		m[k] = v
8943	}
8944}
8945
8946func unpopulate(data json.RawMessage, v interface{}) error {
8947	if data == nil {
8948		return nil
8949	}
8950	return json.Unmarshal(data, v)
8951}
8952