// Code generated by msgraph-generate.go DO NOT EDIT.

package msgraph

import "time"

// GovernanceCriteria undocumented
type GovernanceCriteria struct {
	// Object is the base model of GovernanceCriteria
	Object
}

// GovernanceNotificationPolicy undocumented
type GovernanceNotificationPolicy struct {
	// Object is the base model of GovernanceNotificationPolicy
	Object
	// NotificationTemplates undocumented
	NotificationTemplates []GovernanceNotificationTemplate `json:"notificationTemplates,omitempty"`
	// EnabledTemplateTypes undocumented
	EnabledTemplateTypes []string `json:"enabledTemplateTypes,omitempty"`
}

// GovernanceNotificationTemplate undocumented
type GovernanceNotificationTemplate struct {
	// Object is the base model of GovernanceNotificationTemplate
	Object
	// ID undocumented
	ID *string `json:"id,omitempty"`
	// Type undocumented
	Type *string `json:"type,omitempty"`
	// Source undocumented
	Source *string `json:"source,omitempty"`
	// Version undocumented
	Version *string `json:"version,omitempty"`
	// Culture undocumented
	Culture *string `json:"culture,omitempty"`
}

// GovernancePermission undocumented
type GovernancePermission struct {
	// Object is the base model of GovernancePermission
	Object
	// AccessLevel undocumented
	AccessLevel *string `json:"accessLevel,omitempty"`
	// IsActive undocumented
	IsActive *bool `json:"isActive,omitempty"`
	// IsEligible undocumented
	IsEligible *bool `json:"isEligible,omitempty"`
}

// GovernancePolicy undocumented
type GovernancePolicy struct {
	// Object is the base model of GovernancePolicy
	Object
	// DecisionMakerCriteria undocumented
	DecisionMakerCriteria []GovernanceCriteria `json:"decisionMakerCriteria,omitempty"`
	// NotificationPolicy undocumented
	NotificationPolicy *GovernanceNotificationPolicy `json:"notificationPolicy,omitempty"`
}

// GovernancePolicyTemplate undocumented
type GovernancePolicyTemplate struct {
	// Entity is the base model of GovernancePolicyTemplate
	Entity
	// DisplayName undocumented
	DisplayName *string `json:"displayName,omitempty"`
	// Policy undocumented
	Policy *GovernancePolicy `json:"policy,omitempty"`
	// Settings undocumented
	Settings *BusinessFlowSettings `json:"settings,omitempty"`
}

// GovernanceResource undocumented
type GovernanceResource struct {
	// Entity is the base model of GovernanceResource
	Entity
	// ExternalID undocumented
	ExternalID *string `json:"externalId,omitempty"`
	// Type undocumented
	Type *string `json:"type,omitempty"`
	// DisplayName undocumented
	DisplayName *string `json:"displayName,omitempty"`
	// Status undocumented
	Status *string `json:"status,omitempty"`
	// RegisteredDateTime undocumented
	RegisteredDateTime *time.Time `json:"registeredDateTime,omitempty"`
	// RegisteredRoot undocumented
	RegisteredRoot *string `json:"registeredRoot,omitempty"`
	// Parent undocumented
	Parent *GovernanceResource `json:"parent,omitempty"`
	// RoleDefinitions undocumented
	RoleDefinitions []GovernanceRoleDefinition `json:"roleDefinitions,omitempty"`
	// RoleAssignments undocumented
	RoleAssignments []GovernanceRoleAssignment `json:"roleAssignments,omitempty"`
	// RoleAssignmentRequests undocumented
	RoleAssignmentRequests []GovernanceRoleAssignmentRequestObject `json:"roleAssignmentRequests,omitempty"`
	// RoleSettings undocumented
	RoleSettings []GovernanceRoleSetting `json:"roleSettings,omitempty"`
}

// GovernanceRoleAssignment undocumented
type GovernanceRoleAssignment struct {
	// Entity is the base model of GovernanceRoleAssignment
	Entity
	// ResourceID undocumented
	ResourceID *string `json:"resourceId,omitempty"`
	// RoleDefinitionID undocumented
	RoleDefinitionID *string `json:"roleDefinitionId,omitempty"`
	// SubjectID undocumented
	SubjectID *string `json:"subjectId,omitempty"`
	// LinkedEligibleRoleAssignmentID undocumented
	LinkedEligibleRoleAssignmentID *string `json:"linkedEligibleRoleAssignmentId,omitempty"`
	// ExternalID undocumented
	ExternalID *string `json:"externalId,omitempty"`
	// StartDateTime undocumented
	StartDateTime *time.Time `json:"startDateTime,omitempty"`
	// EndDateTime undocumented
	EndDateTime *time.Time `json:"endDateTime,omitempty"`
	// MemberType undocumented
	MemberType *string `json:"memberType,omitempty"`
	// AssignmentState undocumented
	AssignmentState *string `json:"assignmentState,omitempty"`
	// Status undocumented
	Status *string `json:"status,omitempty"`
	// Resource undocumented
	Resource *GovernanceResource `json:"resource,omitempty"`
	// RoleDefinition undocumented
	RoleDefinition *GovernanceRoleDefinition `json:"roleDefinition,omitempty"`
	// Subject undocumented
	Subject *GovernanceSubject `json:"subject,omitempty"`
	// LinkedEligibleRoleAssignment undocumented
	LinkedEligibleRoleAssignment *GovernanceRoleAssignment `json:"linkedEligibleRoleAssignment,omitempty"`
}

// GovernanceRoleAssignmentRequestObject undocumented
type GovernanceRoleAssignmentRequestObject struct {
	// Entity is the base model of GovernanceRoleAssignmentRequestObject
	Entity
	// ResourceID undocumented
	ResourceID *string `json:"resourceId,omitempty"`
	// RoleDefinitionID undocumented
	RoleDefinitionID *string `json:"roleDefinitionId,omitempty"`
	// SubjectID undocumented
	SubjectID *string `json:"subjectId,omitempty"`
	// LinkedEligibleRoleAssignmentID undocumented
	LinkedEligibleRoleAssignmentID *string `json:"linkedEligibleRoleAssignmentId,omitempty"`
	// Type undocumented
	Type *string `json:"type,omitempty"`
	// AssignmentState undocumented
	AssignmentState *string `json:"assignmentState,omitempty"`
	// RequestedDateTime undocumented
	RequestedDateTime *time.Time `json:"requestedDateTime,omitempty"`
	// Reason undocumented
	Reason *string `json:"reason,omitempty"`
	// Status undocumented
	Status *GovernanceRoleAssignmentRequestStatus `json:"status,omitempty"`
	// Schedule undocumented
	Schedule *GovernanceSchedule `json:"schedule,omitempty"`
	// Resource undocumented
	Resource *GovernanceResource `json:"resource,omitempty"`
	// RoleDefinition undocumented
	RoleDefinition *GovernanceRoleDefinition `json:"roleDefinition,omitempty"`
	// Subject undocumented
	Subject *GovernanceSubject `json:"subject,omitempty"`
}

// GovernanceRoleAssignmentRequestStatus undocumented
type GovernanceRoleAssignmentRequestStatus struct {
	// Object is the base model of GovernanceRoleAssignmentRequestStatus
	Object
	// Status undocumented
	Status *string `json:"status,omitempty"`
	// SubStatus undocumented
	SubStatus *string `json:"subStatus,omitempty"`
	// StatusDetails undocumented
	StatusDetails []KeyValue `json:"statusDetails,omitempty"`
}

// GovernanceRoleDefinition undocumented
type GovernanceRoleDefinition struct {
	// Entity is the base model of GovernanceRoleDefinition
	Entity
	// ResourceID undocumented
	ResourceID *string `json:"resourceId,omitempty"`
	// ExternalID undocumented
	ExternalID *string `json:"externalId,omitempty"`
	// TemplateID undocumented
	TemplateID *string `json:"templateId,omitempty"`
	// DisplayName undocumented
	DisplayName *string `json:"displayName,omitempty"`
	// Resource undocumented
	Resource *GovernanceResource `json:"resource,omitempty"`
	// RoleSetting undocumented
	RoleSetting *GovernanceRoleSetting `json:"roleSetting,omitempty"`
}

// GovernanceRoleSetting undocumented
type GovernanceRoleSetting struct {
	// Entity is the base model of GovernanceRoleSetting
	Entity
	// ResourceID undocumented
	ResourceID *string `json:"resourceId,omitempty"`
	// RoleDefinitionID undocumented
	RoleDefinitionID *string `json:"roleDefinitionId,omitempty"`
	// IsDefault undocumented
	IsDefault *bool `json:"isDefault,omitempty"`
	// LastUpdatedDateTime undocumented
	LastUpdatedDateTime *time.Time `json:"lastUpdatedDateTime,omitempty"`
	// LastUpdatedBy undocumented
	LastUpdatedBy *string `json:"lastUpdatedBy,omitempty"`
	// AdminEligibleSettings undocumented
	AdminEligibleSettings []GovernanceRuleSetting `json:"adminEligibleSettings,omitempty"`
	// AdminMemberSettings undocumented
	AdminMemberSettings []GovernanceRuleSetting `json:"adminMemberSettings,omitempty"`
	// UserEligibleSettings undocumented
	UserEligibleSettings []GovernanceRuleSetting `json:"userEligibleSettings,omitempty"`
	// UserMemberSettings undocumented
	UserMemberSettings []GovernanceRuleSetting `json:"userMemberSettings,omitempty"`
	// RoleDefinition undocumented
	RoleDefinition *GovernanceRoleDefinition `json:"roleDefinition,omitempty"`
	// Resource undocumented
	Resource *GovernanceResource `json:"resource,omitempty"`
}

// GovernanceRuleSetting undocumented
type GovernanceRuleSetting struct {
	// Object is the base model of GovernanceRuleSetting
	Object
	// RuleIdentifier undocumented
	RuleIdentifier *string `json:"ruleIdentifier,omitempty"`
	// Setting undocumented
	Setting *string `json:"setting,omitempty"`
}

// GovernanceSchedule undocumented
type GovernanceSchedule struct {
	// Object is the base model of GovernanceSchedule
	Object
	// Type undocumented
	Type *string `json:"type,omitempty"`
	// StartDateTime undocumented
	StartDateTime *time.Time `json:"startDateTime,omitempty"`
	// EndDateTime undocumented
	EndDateTime *time.Time `json:"endDateTime,omitempty"`
	// Duration undocumented
	Duration *Duration `json:"duration,omitempty"`
}

// GovernanceSubject undocumented
type GovernanceSubject struct {
	// Entity is the base model of GovernanceSubject
	Entity
	// Type undocumented
	Type *string `json:"type,omitempty"`
	// DisplayName undocumented
	DisplayName *string `json:"displayName,omitempty"`
	// PrincipalName undocumented
	PrincipalName *string `json:"principalName,omitempty"`
	// Email undocumented
	Email *string `json:"email,omitempty"`
}