1package policyinsights
2
3// Copyright (c) Microsoft and contributors.  All rights reserved.
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13//
14// See the License for the specific language governing permissions and
15// limitations under the License.
16//
17// Code generated by Microsoft (R) AutoRest Code Generator.
18// Changes may cause incorrect behavior and will be lost if the code is regenerated.
19
20import (
21	"encoding/json"
22	"github.com/Azure/go-autorest/autorest"
23	"github.com/Azure/go-autorest/autorest/date"
24)
25
26// The package's fully qualified name.
27const fqdn = "github.com/Azure/azure-sdk-for-go/services/policyinsights/mgmt/2018-04-04/policyinsights"
28
29// PolicyStatesResource enumerates the values for policy states resource.
30type PolicyStatesResource string
31
32const (
33	// Default ...
34	Default PolicyStatesResource = "default"
35	// Latest ...
36	Latest PolicyStatesResource = "latest"
37)
38
39// PossiblePolicyStatesResourceValues returns an array of possible values for the PolicyStatesResource const type.
40func PossiblePolicyStatesResourceValues() []PolicyStatesResource {
41	return []PolicyStatesResource{Default, Latest}
42}
43
44// Operation operation definition.
45type Operation struct {
46	// Name - Operation name.
47	Name *string `json:"name,omitempty"`
48	// Display - Display metadata associated with the operation.
49	Display *OperationDisplay `json:"display,omitempty"`
50}
51
52// OperationDisplay display metadata associated with the operation.
53type OperationDisplay struct {
54	// Provider - Resource provider name.
55	Provider *string `json:"provider,omitempty"`
56	// Resource - Resource name on which the operation is performed.
57	Resource *string `json:"resource,omitempty"`
58	// Operation - Operation name.
59	Operation *string `json:"operation,omitempty"`
60	// Description - Operation description.
61	Description *string `json:"description,omitempty"`
62}
63
64// OperationsListResults list of available operations.
65type OperationsListResults struct {
66	autorest.Response `json:"-"`
67	// OdataCount - OData entity count; represents the number of operations returned.
68	OdataCount *int32 `json:"@odata.count,omitempty"`
69	// Value - List of available operations.
70	Value *[]Operation `json:"value,omitempty"`
71}
72
73// PolicyAssignmentSummary policy assignment summary.
74type PolicyAssignmentSummary struct {
75	// PolicyAssignmentID - Policy assignment ID.
76	PolicyAssignmentID *string `json:"policyAssignmentId,omitempty"`
77	// PolicySetDefinitionID - Policy set definition ID, if the policy assignment is for a policy set.
78	PolicySetDefinitionID *string `json:"policySetDefinitionId,omitempty"`
79	// Results - Non-compliance summary for the policy assignment.
80	Results *SummaryResults `json:"results,omitempty"`
81	// PolicyDefinitions - Policy definitions summary.
82	PolicyDefinitions *[]PolicyDefinitionSummary `json:"policyDefinitions,omitempty"`
83}
84
85// PolicyDefinitionSummary policy definition summary.
86type PolicyDefinitionSummary struct {
87	// PolicyDefinitionID - Policy definition ID.
88	PolicyDefinitionID *string `json:"policyDefinitionId,omitempty"`
89	// PolicyDefinitionReferenceID - Policy definition reference ID.
90	PolicyDefinitionReferenceID *string `json:"policyDefinitionReferenceId,omitempty"`
91	// Effect - Policy effect, i.e. policy definition action.
92	Effect *string `json:"effect,omitempty"`
93	// Results - Non-compliance summary for the policy definition.
94	Results *SummaryResults `json:"results,omitempty"`
95}
96
97// PolicyEvent policy event record.
98type PolicyEvent struct {
99	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
100	AdditionalProperties map[string]interface{} `json:""`
101	// OdataID - OData entity ID; always set to null since policy event records do not have an entity ID.
102	OdataID *string `json:"@odata.id,omitempty"`
103	// OdataContext - OData context string; used by OData clients to resolve type information based on metadata.
104	OdataContext *string `json:"@odata.context,omitempty"`
105	// Timestamp - Timestamp for the policy event record.
106	Timestamp *date.Time `json:"timestamp,omitempty"`
107	// ResourceID - Resource ID.
108	ResourceID *string `json:"resourceId,omitempty"`
109	// PolicyAssignmentID - Policy assignment ID.
110	PolicyAssignmentID *string `json:"policyAssignmentId,omitempty"`
111	// PolicyDefinitionID - Policy definition ID.
112	PolicyDefinitionID *string `json:"policyDefinitionId,omitempty"`
113	// EffectiveParameters - Effective parameters for the policy assignment.
114	EffectiveParameters *string `json:"effectiveParameters,omitempty"`
115	// IsCompliant - Flag which states whether the resource is compliant against the policy assignment it was evaluated against.
116	IsCompliant *bool `json:"isCompliant,omitempty"`
117	// SubscriptionID - Subscription ID.
118	SubscriptionID *string `json:"subscriptionId,omitempty"`
119	// ResourceType - Resource type.
120	ResourceType *string `json:"resourceType,omitempty"`
121	// ResourceLocation - Resource location.
122	ResourceLocation *string `json:"resourceLocation,omitempty"`
123	// ResourceGroup - Resource group name.
124	ResourceGroup *string `json:"resourceGroup,omitempty"`
125	// ResourceTags - List of resource tags.
126	ResourceTags *string `json:"resourceTags,omitempty"`
127	// PolicyAssignmentName - Policy assignment name.
128	PolicyAssignmentName *string `json:"policyAssignmentName,omitempty"`
129	// PolicyAssignmentOwner - Policy assignment owner.
130	PolicyAssignmentOwner *string `json:"policyAssignmentOwner,omitempty"`
131	// PolicyAssignmentParameters - Policy assignment parameters.
132	PolicyAssignmentParameters *string `json:"policyAssignmentParameters,omitempty"`
133	// PolicyAssignmentScope - Policy assignment scope.
134	PolicyAssignmentScope *string `json:"policyAssignmentScope,omitempty"`
135	// PolicyDefinitionName - Policy definition name.
136	PolicyDefinitionName *string `json:"policyDefinitionName,omitempty"`
137	// PolicyDefinitionAction - Policy definition action, i.e. effect.
138	PolicyDefinitionAction *string `json:"policyDefinitionAction,omitempty"`
139	// PolicyDefinitionCategory - Policy definition category.
140	PolicyDefinitionCategory *string `json:"policyDefinitionCategory,omitempty"`
141	// PolicySetDefinitionID - Policy set definition ID, if the policy assignment is for a policy set.
142	PolicySetDefinitionID *string `json:"policySetDefinitionId,omitempty"`
143	// PolicySetDefinitionName - Policy set definition name, if the policy assignment is for a policy set.
144	PolicySetDefinitionName *string `json:"policySetDefinitionName,omitempty"`
145	// PolicySetDefinitionOwner - Policy set definition owner, if the policy assignment is for a policy set.
146	PolicySetDefinitionOwner *string `json:"policySetDefinitionOwner,omitempty"`
147	// PolicySetDefinitionCategory - Policy set definition category, if the policy assignment is for a policy set.
148	PolicySetDefinitionCategory *string `json:"policySetDefinitionCategory,omitempty"`
149	// PolicySetDefinitionParameters - Policy set definition parameters, if the policy assignment is for a policy set.
150	PolicySetDefinitionParameters *string `json:"policySetDefinitionParameters,omitempty"`
151	// ManagementGroupIds - Comma separated list of management group IDs, which represent the hierarchy of the management groups the resource is under.
152	ManagementGroupIds *string `json:"managementGroupIds,omitempty"`
153	// PolicyDefinitionReferenceID - Reference ID for the policy definition inside the policy set, if the policy assignment is for a policy set.
154	PolicyDefinitionReferenceID *string `json:"policyDefinitionReferenceId,omitempty"`
155	// TenantID - Tenant ID for the policy event record.
156	TenantID *string `json:"tenantId,omitempty"`
157	// PrincipalOid - Principal object ID for the user who initiated the resource operation that triggered the policy event.
158	PrincipalOid *string `json:"principalOid,omitempty"`
159}
160
161// MarshalJSON is the custom marshaler for PolicyEvent.
162func (peVar PolicyEvent) MarshalJSON() ([]byte, error) {
163	objectMap := make(map[string]interface{})
164	if peVar.OdataID != nil {
165		objectMap["@odata.id"] = peVar.OdataID
166	}
167	if peVar.OdataContext != nil {
168		objectMap["@odata.context"] = peVar.OdataContext
169	}
170	if peVar.Timestamp != nil {
171		objectMap["timestamp"] = peVar.Timestamp
172	}
173	if peVar.ResourceID != nil {
174		objectMap["resourceId"] = peVar.ResourceID
175	}
176	if peVar.PolicyAssignmentID != nil {
177		objectMap["policyAssignmentId"] = peVar.PolicyAssignmentID
178	}
179	if peVar.PolicyDefinitionID != nil {
180		objectMap["policyDefinitionId"] = peVar.PolicyDefinitionID
181	}
182	if peVar.EffectiveParameters != nil {
183		objectMap["effectiveParameters"] = peVar.EffectiveParameters
184	}
185	if peVar.IsCompliant != nil {
186		objectMap["isCompliant"] = peVar.IsCompliant
187	}
188	if peVar.SubscriptionID != nil {
189		objectMap["subscriptionId"] = peVar.SubscriptionID
190	}
191	if peVar.ResourceType != nil {
192		objectMap["resourceType"] = peVar.ResourceType
193	}
194	if peVar.ResourceLocation != nil {
195		objectMap["resourceLocation"] = peVar.ResourceLocation
196	}
197	if peVar.ResourceGroup != nil {
198		objectMap["resourceGroup"] = peVar.ResourceGroup
199	}
200	if peVar.ResourceTags != nil {
201		objectMap["resourceTags"] = peVar.ResourceTags
202	}
203	if peVar.PolicyAssignmentName != nil {
204		objectMap["policyAssignmentName"] = peVar.PolicyAssignmentName
205	}
206	if peVar.PolicyAssignmentOwner != nil {
207		objectMap["policyAssignmentOwner"] = peVar.PolicyAssignmentOwner
208	}
209	if peVar.PolicyAssignmentParameters != nil {
210		objectMap["policyAssignmentParameters"] = peVar.PolicyAssignmentParameters
211	}
212	if peVar.PolicyAssignmentScope != nil {
213		objectMap["policyAssignmentScope"] = peVar.PolicyAssignmentScope
214	}
215	if peVar.PolicyDefinitionName != nil {
216		objectMap["policyDefinitionName"] = peVar.PolicyDefinitionName
217	}
218	if peVar.PolicyDefinitionAction != nil {
219		objectMap["policyDefinitionAction"] = peVar.PolicyDefinitionAction
220	}
221	if peVar.PolicyDefinitionCategory != nil {
222		objectMap["policyDefinitionCategory"] = peVar.PolicyDefinitionCategory
223	}
224	if peVar.PolicySetDefinitionID != nil {
225		objectMap["policySetDefinitionId"] = peVar.PolicySetDefinitionID
226	}
227	if peVar.PolicySetDefinitionName != nil {
228		objectMap["policySetDefinitionName"] = peVar.PolicySetDefinitionName
229	}
230	if peVar.PolicySetDefinitionOwner != nil {
231		objectMap["policySetDefinitionOwner"] = peVar.PolicySetDefinitionOwner
232	}
233	if peVar.PolicySetDefinitionCategory != nil {
234		objectMap["policySetDefinitionCategory"] = peVar.PolicySetDefinitionCategory
235	}
236	if peVar.PolicySetDefinitionParameters != nil {
237		objectMap["policySetDefinitionParameters"] = peVar.PolicySetDefinitionParameters
238	}
239	if peVar.ManagementGroupIds != nil {
240		objectMap["managementGroupIds"] = peVar.ManagementGroupIds
241	}
242	if peVar.PolicyDefinitionReferenceID != nil {
243		objectMap["policyDefinitionReferenceId"] = peVar.PolicyDefinitionReferenceID
244	}
245	if peVar.TenantID != nil {
246		objectMap["tenantId"] = peVar.TenantID
247	}
248	if peVar.PrincipalOid != nil {
249		objectMap["principalOid"] = peVar.PrincipalOid
250	}
251	for k, v := range peVar.AdditionalProperties {
252		objectMap[k] = v
253	}
254	return json.Marshal(objectMap)
255}
256
257// UnmarshalJSON is the custom unmarshaler for PolicyEvent struct.
258func (peVar *PolicyEvent) UnmarshalJSON(body []byte) error {
259	var m map[string]*json.RawMessage
260	err := json.Unmarshal(body, &m)
261	if err != nil {
262		return err
263	}
264	for k, v := range m {
265		switch k {
266		default:
267			if v != nil {
268				var additionalProperties interface{}
269				err = json.Unmarshal(*v, &additionalProperties)
270				if err != nil {
271					return err
272				}
273				if peVar.AdditionalProperties == nil {
274					peVar.AdditionalProperties = make(map[string]interface{})
275				}
276				peVar.AdditionalProperties[k] = additionalProperties
277			}
278		case "@odata.id":
279			if v != nil {
280				var odataID string
281				err = json.Unmarshal(*v, &odataID)
282				if err != nil {
283					return err
284				}
285				peVar.OdataID = &odataID
286			}
287		case "@odata.context":
288			if v != nil {
289				var odataContext string
290				err = json.Unmarshal(*v, &odataContext)
291				if err != nil {
292					return err
293				}
294				peVar.OdataContext = &odataContext
295			}
296		case "timestamp":
297			if v != nil {
298				var timestamp date.Time
299				err = json.Unmarshal(*v, &timestamp)
300				if err != nil {
301					return err
302				}
303				peVar.Timestamp = &timestamp
304			}
305		case "resourceId":
306			if v != nil {
307				var resourceID string
308				err = json.Unmarshal(*v, &resourceID)
309				if err != nil {
310					return err
311				}
312				peVar.ResourceID = &resourceID
313			}
314		case "policyAssignmentId":
315			if v != nil {
316				var policyAssignmentID string
317				err = json.Unmarshal(*v, &policyAssignmentID)
318				if err != nil {
319					return err
320				}
321				peVar.PolicyAssignmentID = &policyAssignmentID
322			}
323		case "policyDefinitionId":
324			if v != nil {
325				var policyDefinitionID string
326				err = json.Unmarshal(*v, &policyDefinitionID)
327				if err != nil {
328					return err
329				}
330				peVar.PolicyDefinitionID = &policyDefinitionID
331			}
332		case "effectiveParameters":
333			if v != nil {
334				var effectiveParameters string
335				err = json.Unmarshal(*v, &effectiveParameters)
336				if err != nil {
337					return err
338				}
339				peVar.EffectiveParameters = &effectiveParameters
340			}
341		case "isCompliant":
342			if v != nil {
343				var isCompliant bool
344				err = json.Unmarshal(*v, &isCompliant)
345				if err != nil {
346					return err
347				}
348				peVar.IsCompliant = &isCompliant
349			}
350		case "subscriptionId":
351			if v != nil {
352				var subscriptionID string
353				err = json.Unmarshal(*v, &subscriptionID)
354				if err != nil {
355					return err
356				}
357				peVar.SubscriptionID = &subscriptionID
358			}
359		case "resourceType":
360			if v != nil {
361				var resourceType string
362				err = json.Unmarshal(*v, &resourceType)
363				if err != nil {
364					return err
365				}
366				peVar.ResourceType = &resourceType
367			}
368		case "resourceLocation":
369			if v != nil {
370				var resourceLocation string
371				err = json.Unmarshal(*v, &resourceLocation)
372				if err != nil {
373					return err
374				}
375				peVar.ResourceLocation = &resourceLocation
376			}
377		case "resourceGroup":
378			if v != nil {
379				var resourceGroup string
380				err = json.Unmarshal(*v, &resourceGroup)
381				if err != nil {
382					return err
383				}
384				peVar.ResourceGroup = &resourceGroup
385			}
386		case "resourceTags":
387			if v != nil {
388				var resourceTags string
389				err = json.Unmarshal(*v, &resourceTags)
390				if err != nil {
391					return err
392				}
393				peVar.ResourceTags = &resourceTags
394			}
395		case "policyAssignmentName":
396			if v != nil {
397				var policyAssignmentName string
398				err = json.Unmarshal(*v, &policyAssignmentName)
399				if err != nil {
400					return err
401				}
402				peVar.PolicyAssignmentName = &policyAssignmentName
403			}
404		case "policyAssignmentOwner":
405			if v != nil {
406				var policyAssignmentOwner string
407				err = json.Unmarshal(*v, &policyAssignmentOwner)
408				if err != nil {
409					return err
410				}
411				peVar.PolicyAssignmentOwner = &policyAssignmentOwner
412			}
413		case "policyAssignmentParameters":
414			if v != nil {
415				var policyAssignmentParameters string
416				err = json.Unmarshal(*v, &policyAssignmentParameters)
417				if err != nil {
418					return err
419				}
420				peVar.PolicyAssignmentParameters = &policyAssignmentParameters
421			}
422		case "policyAssignmentScope":
423			if v != nil {
424				var policyAssignmentScope string
425				err = json.Unmarshal(*v, &policyAssignmentScope)
426				if err != nil {
427					return err
428				}
429				peVar.PolicyAssignmentScope = &policyAssignmentScope
430			}
431		case "policyDefinitionName":
432			if v != nil {
433				var policyDefinitionName string
434				err = json.Unmarshal(*v, &policyDefinitionName)
435				if err != nil {
436					return err
437				}
438				peVar.PolicyDefinitionName = &policyDefinitionName
439			}
440		case "policyDefinitionAction":
441			if v != nil {
442				var policyDefinitionAction string
443				err = json.Unmarshal(*v, &policyDefinitionAction)
444				if err != nil {
445					return err
446				}
447				peVar.PolicyDefinitionAction = &policyDefinitionAction
448			}
449		case "policyDefinitionCategory":
450			if v != nil {
451				var policyDefinitionCategory string
452				err = json.Unmarshal(*v, &policyDefinitionCategory)
453				if err != nil {
454					return err
455				}
456				peVar.PolicyDefinitionCategory = &policyDefinitionCategory
457			}
458		case "policySetDefinitionId":
459			if v != nil {
460				var policySetDefinitionID string
461				err = json.Unmarshal(*v, &policySetDefinitionID)
462				if err != nil {
463					return err
464				}
465				peVar.PolicySetDefinitionID = &policySetDefinitionID
466			}
467		case "policySetDefinitionName":
468			if v != nil {
469				var policySetDefinitionName string
470				err = json.Unmarshal(*v, &policySetDefinitionName)
471				if err != nil {
472					return err
473				}
474				peVar.PolicySetDefinitionName = &policySetDefinitionName
475			}
476		case "policySetDefinitionOwner":
477			if v != nil {
478				var policySetDefinitionOwner string
479				err = json.Unmarshal(*v, &policySetDefinitionOwner)
480				if err != nil {
481					return err
482				}
483				peVar.PolicySetDefinitionOwner = &policySetDefinitionOwner
484			}
485		case "policySetDefinitionCategory":
486			if v != nil {
487				var policySetDefinitionCategory string
488				err = json.Unmarshal(*v, &policySetDefinitionCategory)
489				if err != nil {
490					return err
491				}
492				peVar.PolicySetDefinitionCategory = &policySetDefinitionCategory
493			}
494		case "policySetDefinitionParameters":
495			if v != nil {
496				var policySetDefinitionParameters string
497				err = json.Unmarshal(*v, &policySetDefinitionParameters)
498				if err != nil {
499					return err
500				}
501				peVar.PolicySetDefinitionParameters = &policySetDefinitionParameters
502			}
503		case "managementGroupIds":
504			if v != nil {
505				var managementGroupIds string
506				err = json.Unmarshal(*v, &managementGroupIds)
507				if err != nil {
508					return err
509				}
510				peVar.ManagementGroupIds = &managementGroupIds
511			}
512		case "policyDefinitionReferenceId":
513			if v != nil {
514				var policyDefinitionReferenceID string
515				err = json.Unmarshal(*v, &policyDefinitionReferenceID)
516				if err != nil {
517					return err
518				}
519				peVar.PolicyDefinitionReferenceID = &policyDefinitionReferenceID
520			}
521		case "tenantId":
522			if v != nil {
523				var tenantID string
524				err = json.Unmarshal(*v, &tenantID)
525				if err != nil {
526					return err
527				}
528				peVar.TenantID = &tenantID
529			}
530		case "principalOid":
531			if v != nil {
532				var principalOid string
533				err = json.Unmarshal(*v, &principalOid)
534				if err != nil {
535					return err
536				}
537				peVar.PrincipalOid = &principalOid
538			}
539		}
540	}
541
542	return nil
543}
544
545// PolicyEventsQueryResults query results.
546type PolicyEventsQueryResults struct {
547	autorest.Response `json:"-"`
548	// OdataContext - OData context string; used by OData clients to resolve type information based on metadata.
549	OdataContext *string `json:"@odata.context,omitempty"`
550	// OdataCount - OData entity count; represents the number of policy event records returned.
551	OdataCount *int32 `json:"@odata.count,omitempty"`
552	// Value - Query results.
553	Value *[]PolicyEvent `json:"value,omitempty"`
554}
555
556// PolicyState policy state record.
557type PolicyState struct {
558	// AdditionalProperties - Unmatched properties from the message are deserialized this collection
559	AdditionalProperties map[string]interface{} `json:""`
560	// OdataID - OData entity ID; always set to null since policy state records do not have an entity ID.
561	OdataID *string `json:"@odata.id,omitempty"`
562	// OdataContext - OData context string; used by OData clients to resolve type information based on metadata.
563	OdataContext *string `json:"@odata.context,omitempty"`
564	// Timestamp - Timestamp for the policy state record.
565	Timestamp *date.Time `json:"timestamp,omitempty"`
566	// ResourceID - Resource ID.
567	ResourceID *string `json:"resourceId,omitempty"`
568	// PolicyAssignmentID - Policy assignment ID.
569	PolicyAssignmentID *string `json:"policyAssignmentId,omitempty"`
570	// PolicyDefinitionID - Policy definition ID.
571	PolicyDefinitionID *string `json:"policyDefinitionId,omitempty"`
572	// EffectiveParameters - Effective parameters for the policy assignment.
573	EffectiveParameters *string `json:"effectiveParameters,omitempty"`
574	// IsCompliant - Flag which states whether the resource is compliant against the policy assignment it was evaluated against.
575	IsCompliant *bool `json:"isCompliant,omitempty"`
576	// SubscriptionID - Subscription ID.
577	SubscriptionID *string `json:"subscriptionId,omitempty"`
578	// ResourceType - Resource type.
579	ResourceType *string `json:"resourceType,omitempty"`
580	// ResourceLocation - Resource location.
581	ResourceLocation *string `json:"resourceLocation,omitempty"`
582	// ResourceGroup - Resource group name.
583	ResourceGroup *string `json:"resourceGroup,omitempty"`
584	// ResourceTags - List of resource tags.
585	ResourceTags *string `json:"resourceTags,omitempty"`
586	// PolicyAssignmentName - Policy assignment name.
587	PolicyAssignmentName *string `json:"policyAssignmentName,omitempty"`
588	// PolicyAssignmentOwner - Policy assignment owner.
589	PolicyAssignmentOwner *string `json:"policyAssignmentOwner,omitempty"`
590	// PolicyAssignmentParameters - Policy assignment parameters.
591	PolicyAssignmentParameters *string `json:"policyAssignmentParameters,omitempty"`
592	// PolicyAssignmentScope - Policy assignment scope.
593	PolicyAssignmentScope *string `json:"policyAssignmentScope,omitempty"`
594	// PolicyDefinitionName - Policy definition name.
595	PolicyDefinitionName *string `json:"policyDefinitionName,omitempty"`
596	// PolicyDefinitionAction - Policy definition action, i.e. effect.
597	PolicyDefinitionAction *string `json:"policyDefinitionAction,omitempty"`
598	// PolicyDefinitionCategory - Policy definition category.
599	PolicyDefinitionCategory *string `json:"policyDefinitionCategory,omitempty"`
600	// PolicySetDefinitionID - Policy set definition ID, if the policy assignment is for a policy set.
601	PolicySetDefinitionID *string `json:"policySetDefinitionId,omitempty"`
602	// PolicySetDefinitionName - Policy set definition name, if the policy assignment is for a policy set.
603	PolicySetDefinitionName *string `json:"policySetDefinitionName,omitempty"`
604	// PolicySetDefinitionOwner - Policy set definition owner, if the policy assignment is for a policy set.
605	PolicySetDefinitionOwner *string `json:"policySetDefinitionOwner,omitempty"`
606	// PolicySetDefinitionCategory - Policy set definition category, if the policy assignment is for a policy set.
607	PolicySetDefinitionCategory *string `json:"policySetDefinitionCategory,omitempty"`
608	// PolicySetDefinitionParameters - Policy set definition parameters, if the policy assignment is for a policy set.
609	PolicySetDefinitionParameters *string `json:"policySetDefinitionParameters,omitempty"`
610	// ManagementGroupIds - Comma separated list of management group IDs, which represent the hierarchy of the management groups the resource is under.
611	ManagementGroupIds *string `json:"managementGroupIds,omitempty"`
612	// PolicyDefinitionReferenceID - Reference ID for the policy definition inside the policy set, if the policy assignment is for a policy set.
613	PolicyDefinitionReferenceID *string `json:"policyDefinitionReferenceId,omitempty"`
614}
615
616// MarshalJSON is the custom marshaler for PolicyState.
617func (ps PolicyState) MarshalJSON() ([]byte, error) {
618	objectMap := make(map[string]interface{})
619	if ps.OdataID != nil {
620		objectMap["@odata.id"] = ps.OdataID
621	}
622	if ps.OdataContext != nil {
623		objectMap["@odata.context"] = ps.OdataContext
624	}
625	if ps.Timestamp != nil {
626		objectMap["timestamp"] = ps.Timestamp
627	}
628	if ps.ResourceID != nil {
629		objectMap["resourceId"] = ps.ResourceID
630	}
631	if ps.PolicyAssignmentID != nil {
632		objectMap["policyAssignmentId"] = ps.PolicyAssignmentID
633	}
634	if ps.PolicyDefinitionID != nil {
635		objectMap["policyDefinitionId"] = ps.PolicyDefinitionID
636	}
637	if ps.EffectiveParameters != nil {
638		objectMap["effectiveParameters"] = ps.EffectiveParameters
639	}
640	if ps.IsCompliant != nil {
641		objectMap["isCompliant"] = ps.IsCompliant
642	}
643	if ps.SubscriptionID != nil {
644		objectMap["subscriptionId"] = ps.SubscriptionID
645	}
646	if ps.ResourceType != nil {
647		objectMap["resourceType"] = ps.ResourceType
648	}
649	if ps.ResourceLocation != nil {
650		objectMap["resourceLocation"] = ps.ResourceLocation
651	}
652	if ps.ResourceGroup != nil {
653		objectMap["resourceGroup"] = ps.ResourceGroup
654	}
655	if ps.ResourceTags != nil {
656		objectMap["resourceTags"] = ps.ResourceTags
657	}
658	if ps.PolicyAssignmentName != nil {
659		objectMap["policyAssignmentName"] = ps.PolicyAssignmentName
660	}
661	if ps.PolicyAssignmentOwner != nil {
662		objectMap["policyAssignmentOwner"] = ps.PolicyAssignmentOwner
663	}
664	if ps.PolicyAssignmentParameters != nil {
665		objectMap["policyAssignmentParameters"] = ps.PolicyAssignmentParameters
666	}
667	if ps.PolicyAssignmentScope != nil {
668		objectMap["policyAssignmentScope"] = ps.PolicyAssignmentScope
669	}
670	if ps.PolicyDefinitionName != nil {
671		objectMap["policyDefinitionName"] = ps.PolicyDefinitionName
672	}
673	if ps.PolicyDefinitionAction != nil {
674		objectMap["policyDefinitionAction"] = ps.PolicyDefinitionAction
675	}
676	if ps.PolicyDefinitionCategory != nil {
677		objectMap["policyDefinitionCategory"] = ps.PolicyDefinitionCategory
678	}
679	if ps.PolicySetDefinitionID != nil {
680		objectMap["policySetDefinitionId"] = ps.PolicySetDefinitionID
681	}
682	if ps.PolicySetDefinitionName != nil {
683		objectMap["policySetDefinitionName"] = ps.PolicySetDefinitionName
684	}
685	if ps.PolicySetDefinitionOwner != nil {
686		objectMap["policySetDefinitionOwner"] = ps.PolicySetDefinitionOwner
687	}
688	if ps.PolicySetDefinitionCategory != nil {
689		objectMap["policySetDefinitionCategory"] = ps.PolicySetDefinitionCategory
690	}
691	if ps.PolicySetDefinitionParameters != nil {
692		objectMap["policySetDefinitionParameters"] = ps.PolicySetDefinitionParameters
693	}
694	if ps.ManagementGroupIds != nil {
695		objectMap["managementGroupIds"] = ps.ManagementGroupIds
696	}
697	if ps.PolicyDefinitionReferenceID != nil {
698		objectMap["policyDefinitionReferenceId"] = ps.PolicyDefinitionReferenceID
699	}
700	for k, v := range ps.AdditionalProperties {
701		objectMap[k] = v
702	}
703	return json.Marshal(objectMap)
704}
705
706// UnmarshalJSON is the custom unmarshaler for PolicyState struct.
707func (ps *PolicyState) UnmarshalJSON(body []byte) error {
708	var m map[string]*json.RawMessage
709	err := json.Unmarshal(body, &m)
710	if err != nil {
711		return err
712	}
713	for k, v := range m {
714		switch k {
715		default:
716			if v != nil {
717				var additionalProperties interface{}
718				err = json.Unmarshal(*v, &additionalProperties)
719				if err != nil {
720					return err
721				}
722				if ps.AdditionalProperties == nil {
723					ps.AdditionalProperties = make(map[string]interface{})
724				}
725				ps.AdditionalProperties[k] = additionalProperties
726			}
727		case "@odata.id":
728			if v != nil {
729				var odataID string
730				err = json.Unmarshal(*v, &odataID)
731				if err != nil {
732					return err
733				}
734				ps.OdataID = &odataID
735			}
736		case "@odata.context":
737			if v != nil {
738				var odataContext string
739				err = json.Unmarshal(*v, &odataContext)
740				if err != nil {
741					return err
742				}
743				ps.OdataContext = &odataContext
744			}
745		case "timestamp":
746			if v != nil {
747				var timestamp date.Time
748				err = json.Unmarshal(*v, &timestamp)
749				if err != nil {
750					return err
751				}
752				ps.Timestamp = &timestamp
753			}
754		case "resourceId":
755			if v != nil {
756				var resourceID string
757				err = json.Unmarshal(*v, &resourceID)
758				if err != nil {
759					return err
760				}
761				ps.ResourceID = &resourceID
762			}
763		case "policyAssignmentId":
764			if v != nil {
765				var policyAssignmentID string
766				err = json.Unmarshal(*v, &policyAssignmentID)
767				if err != nil {
768					return err
769				}
770				ps.PolicyAssignmentID = &policyAssignmentID
771			}
772		case "policyDefinitionId":
773			if v != nil {
774				var policyDefinitionID string
775				err = json.Unmarshal(*v, &policyDefinitionID)
776				if err != nil {
777					return err
778				}
779				ps.PolicyDefinitionID = &policyDefinitionID
780			}
781		case "effectiveParameters":
782			if v != nil {
783				var effectiveParameters string
784				err = json.Unmarshal(*v, &effectiveParameters)
785				if err != nil {
786					return err
787				}
788				ps.EffectiveParameters = &effectiveParameters
789			}
790		case "isCompliant":
791			if v != nil {
792				var isCompliant bool
793				err = json.Unmarshal(*v, &isCompliant)
794				if err != nil {
795					return err
796				}
797				ps.IsCompliant = &isCompliant
798			}
799		case "subscriptionId":
800			if v != nil {
801				var subscriptionID string
802				err = json.Unmarshal(*v, &subscriptionID)
803				if err != nil {
804					return err
805				}
806				ps.SubscriptionID = &subscriptionID
807			}
808		case "resourceType":
809			if v != nil {
810				var resourceType string
811				err = json.Unmarshal(*v, &resourceType)
812				if err != nil {
813					return err
814				}
815				ps.ResourceType = &resourceType
816			}
817		case "resourceLocation":
818			if v != nil {
819				var resourceLocation string
820				err = json.Unmarshal(*v, &resourceLocation)
821				if err != nil {
822					return err
823				}
824				ps.ResourceLocation = &resourceLocation
825			}
826		case "resourceGroup":
827			if v != nil {
828				var resourceGroup string
829				err = json.Unmarshal(*v, &resourceGroup)
830				if err != nil {
831					return err
832				}
833				ps.ResourceGroup = &resourceGroup
834			}
835		case "resourceTags":
836			if v != nil {
837				var resourceTags string
838				err = json.Unmarshal(*v, &resourceTags)
839				if err != nil {
840					return err
841				}
842				ps.ResourceTags = &resourceTags
843			}
844		case "policyAssignmentName":
845			if v != nil {
846				var policyAssignmentName string
847				err = json.Unmarshal(*v, &policyAssignmentName)
848				if err != nil {
849					return err
850				}
851				ps.PolicyAssignmentName = &policyAssignmentName
852			}
853		case "policyAssignmentOwner":
854			if v != nil {
855				var policyAssignmentOwner string
856				err = json.Unmarshal(*v, &policyAssignmentOwner)
857				if err != nil {
858					return err
859				}
860				ps.PolicyAssignmentOwner = &policyAssignmentOwner
861			}
862		case "policyAssignmentParameters":
863			if v != nil {
864				var policyAssignmentParameters string
865				err = json.Unmarshal(*v, &policyAssignmentParameters)
866				if err != nil {
867					return err
868				}
869				ps.PolicyAssignmentParameters = &policyAssignmentParameters
870			}
871		case "policyAssignmentScope":
872			if v != nil {
873				var policyAssignmentScope string
874				err = json.Unmarshal(*v, &policyAssignmentScope)
875				if err != nil {
876					return err
877				}
878				ps.PolicyAssignmentScope = &policyAssignmentScope
879			}
880		case "policyDefinitionName":
881			if v != nil {
882				var policyDefinitionName string
883				err = json.Unmarshal(*v, &policyDefinitionName)
884				if err != nil {
885					return err
886				}
887				ps.PolicyDefinitionName = &policyDefinitionName
888			}
889		case "policyDefinitionAction":
890			if v != nil {
891				var policyDefinitionAction string
892				err = json.Unmarshal(*v, &policyDefinitionAction)
893				if err != nil {
894					return err
895				}
896				ps.PolicyDefinitionAction = &policyDefinitionAction
897			}
898		case "policyDefinitionCategory":
899			if v != nil {
900				var policyDefinitionCategory string
901				err = json.Unmarshal(*v, &policyDefinitionCategory)
902				if err != nil {
903					return err
904				}
905				ps.PolicyDefinitionCategory = &policyDefinitionCategory
906			}
907		case "policySetDefinitionId":
908			if v != nil {
909				var policySetDefinitionID string
910				err = json.Unmarshal(*v, &policySetDefinitionID)
911				if err != nil {
912					return err
913				}
914				ps.PolicySetDefinitionID = &policySetDefinitionID
915			}
916		case "policySetDefinitionName":
917			if v != nil {
918				var policySetDefinitionName string
919				err = json.Unmarshal(*v, &policySetDefinitionName)
920				if err != nil {
921					return err
922				}
923				ps.PolicySetDefinitionName = &policySetDefinitionName
924			}
925		case "policySetDefinitionOwner":
926			if v != nil {
927				var policySetDefinitionOwner string
928				err = json.Unmarshal(*v, &policySetDefinitionOwner)
929				if err != nil {
930					return err
931				}
932				ps.PolicySetDefinitionOwner = &policySetDefinitionOwner
933			}
934		case "policySetDefinitionCategory":
935			if v != nil {
936				var policySetDefinitionCategory string
937				err = json.Unmarshal(*v, &policySetDefinitionCategory)
938				if err != nil {
939					return err
940				}
941				ps.PolicySetDefinitionCategory = &policySetDefinitionCategory
942			}
943		case "policySetDefinitionParameters":
944			if v != nil {
945				var policySetDefinitionParameters string
946				err = json.Unmarshal(*v, &policySetDefinitionParameters)
947				if err != nil {
948					return err
949				}
950				ps.PolicySetDefinitionParameters = &policySetDefinitionParameters
951			}
952		case "managementGroupIds":
953			if v != nil {
954				var managementGroupIds string
955				err = json.Unmarshal(*v, &managementGroupIds)
956				if err != nil {
957					return err
958				}
959				ps.ManagementGroupIds = &managementGroupIds
960			}
961		case "policyDefinitionReferenceId":
962			if v != nil {
963				var policyDefinitionReferenceID string
964				err = json.Unmarshal(*v, &policyDefinitionReferenceID)
965				if err != nil {
966					return err
967				}
968				ps.PolicyDefinitionReferenceID = &policyDefinitionReferenceID
969			}
970		}
971	}
972
973	return nil
974}
975
976// PolicyStatesQueryResults query results.
977type PolicyStatesQueryResults struct {
978	autorest.Response `json:"-"`
979	// OdataContext - OData context string; used by OData clients to resolve type information based on metadata.
980	OdataContext *string `json:"@odata.context,omitempty"`
981	// OdataCount - OData entity count; represents the number of policy state records returned.
982	OdataCount *int32 `json:"@odata.count,omitempty"`
983	// Value - Query results.
984	Value *[]PolicyState `json:"value,omitempty"`
985}
986
987// QueryFailure error response.
988type QueryFailure struct {
989	// Error - Error definition.
990	Error *QueryFailureError `json:"error,omitempty"`
991}
992
993// QueryFailureError error definition.
994type QueryFailureError struct {
995	// Code - READ-ONLY; Service specific error code which serves as the substatus for the HTTP error code.
996	Code *string `json:"code,omitempty"`
997	// Message - READ-ONLY; Description of the error.
998	Message *string `json:"message,omitempty"`
999}
1000
1001// String ...
1002type String struct {
1003	autorest.Response `json:"-"`
1004	Value             *string `json:"value,omitempty"`
1005}
1006
1007// SummarizeResults summarize action results.
1008type SummarizeResults struct {
1009	autorest.Response `json:"-"`
1010	// OdataContext - OData context string; used by OData clients to resolve type information based on metadata.
1011	OdataContext *string `json:"@odata.context,omitempty"`
1012	// OdataCount - OData entity count; represents the number of summaries returned; always set to 1.
1013	OdataCount *int32 `json:"@odata.count,omitempty"`
1014	// Value - Summarize action results.
1015	Value *[]Summary `json:"value,omitempty"`
1016}
1017
1018// Summary summary results.
1019type Summary struct {
1020	// OdataID - OData entity ID; always set to null since summaries do not have an entity ID.
1021	OdataID *string `json:"@odata.id,omitempty"`
1022	// OdataContext - OData context string; used by OData clients to resolve type information based on metadata.
1023	OdataContext *string `json:"@odata.context,omitempty"`
1024	// Results - Non-compliance summary for all policy assignments.
1025	Results *SummaryResults `json:"results,omitempty"`
1026	// PolicyAssignments - Policy assignments summary.
1027	PolicyAssignments *[]PolicyAssignmentSummary `json:"policyAssignments,omitempty"`
1028}
1029
1030// SummaryResults non-compliance summary on a particular summary level.
1031type SummaryResults struct {
1032	// QueryResultsURI - HTTP POST URI for queryResults action on Microsoft.PolicyInsights to retrieve raw results for the non-compliance summary.
1033	QueryResultsURI *string `json:"queryResultsUri,omitempty"`
1034	// NonCompliantResources - Number of non-compliant resources.
1035	NonCompliantResources *int32 `json:"nonCompliantResources,omitempty"`
1036	// NonCompliantPolicies - Number of non-compliant policies.
1037	NonCompliantPolicies *int32 `json:"nonCompliantPolicies,omitempty"`
1038}
1039