// Code generated by msgraph.go/gen DO NOT EDIT.

package msgraph

import "time"

// Synchronization undocumented
type Synchronization struct {
	// Entity is the base model of Synchronization
	Entity
	// Secrets undocumented
	Secrets []SynchronizationSecretKeyStringValuePair `json:"secrets,omitempty"`
	// Jobs undocumented
	Jobs []SynchronizationJob `json:"jobs,omitempty"`
	// Templates undocumented
	Templates []SynchronizationTemplate `json:"templates,omitempty"`
}

// SynchronizationError undocumented
type SynchronizationError struct {
	// Object is the base model of SynchronizationError
	Object
	// Code undocumented
	Code *string `json:"code,omitempty"`
	// Message undocumented
	Message *string `json:"message,omitempty"`
	// TenantActionable undocumented
	TenantActionable *bool `json:"tenantActionable,omitempty"`
}

// SynchronizationJob undocumented
type SynchronizationJob struct {
	// Entity is the base model of SynchronizationJob
	Entity
	// TemplateID undocumented
	TemplateID *string `json:"templateId,omitempty"`
	// Schedule undocumented
	Schedule *SynchronizationSchedule `json:"schedule,omitempty"`
	// Status undocumented
	Status *SynchronizationStatus `json:"status,omitempty"`
	// SynchronizationJobSettings undocumented
	SynchronizationJobSettings []KeyValuePair `json:"synchronizationJobSettings,omitempty"`
	// Schema undocumented
	Schema *SynchronizationSchema `json:"schema,omitempty"`
}

// SynchronizationJobRestartCriteria undocumented
type SynchronizationJobRestartCriteria struct {
	// Object is the base model of SynchronizationJobRestartCriteria
	Object
	// ResetScope undocumented
	ResetScope *SynchronizationJobRestartScope `json:"resetScope,omitempty"`
}

// SynchronizationProgress undocumented
type SynchronizationProgress struct {
	// Object is the base model of SynchronizationProgress
	Object
	// CompletedUnits undocumented
	CompletedUnits *int `json:"completedUnits,omitempty"`
	// ProgressObservationDateTime undocumented
	ProgressObservationDateTime *time.Time `json:"progressObservationDateTime,omitempty"`
	// TotalUnits undocumented
	TotalUnits *int `json:"totalUnits,omitempty"`
	// Units undocumented
	Units *string `json:"units,omitempty"`
}

// SynchronizationQuarantine undocumented
type SynchronizationQuarantine struct {
	// Object is the base model of SynchronizationQuarantine
	Object
	// CurrentBegan undocumented
	CurrentBegan *time.Time `json:"currentBegan,omitempty"`
	// NextAttempt undocumented
	NextAttempt *time.Time `json:"nextAttempt,omitempty"`
	// Reason undocumented
	Reason *QuarantineReason `json:"reason,omitempty"`
	// SeriesBegan undocumented
	SeriesBegan *time.Time `json:"seriesBegan,omitempty"`
	// SeriesCount undocumented
	SeriesCount *int `json:"seriesCount,omitempty"`
}

// SynchronizationRule undocumented
type SynchronizationRule struct {
	// Object is the base model of SynchronizationRule
	Object
	// Editable undocumented
	Editable *bool `json:"editable,omitempty"`
	// ID undocumented
	ID *string `json:"id,omitempty"`
	// Metadata undocumented
	Metadata []StringKeyStringValuePair `json:"metadata,omitempty"`
	// Name undocumented
	Name *string `json:"name,omitempty"`
	// ObjectMappings undocumented
	ObjectMappings []ObjectMapping `json:"objectMappings,omitempty"`
	// Priority undocumented
	Priority *int `json:"priority,omitempty"`
	// SourceDirectoryName undocumented
	SourceDirectoryName *string `json:"sourceDirectoryName,omitempty"`
	// TargetDirectoryName undocumented
	TargetDirectoryName *string `json:"targetDirectoryName,omitempty"`
}

// SynchronizationSchedule undocumented
type SynchronizationSchedule struct {
	// Object is the base model of SynchronizationSchedule
	Object
	// Expiration undocumented
	Expiration *time.Time `json:"expiration,omitempty"`
	// Interval undocumented
	Interval *Duration `json:"interval,omitempty"`
	// State undocumented
	State *SynchronizationScheduleState `json:"state,omitempty"`
}

// SynchronizationSchema undocumented
type SynchronizationSchema struct {
	// Entity is the base model of SynchronizationSchema
	Entity
	// ProvisioningTaskIdentifier undocumented
	ProvisioningTaskIdentifier *string `json:"provisioningTaskIdentifier,omitempty"`
	// SynchronizationRules undocumented
	SynchronizationRules []SynchronizationRule `json:"synchronizationRules,omitempty"`
	// Version undocumented
	Version *string `json:"version,omitempty"`
	// Directories undocumented
	Directories []DirectoryDefinition `json:"directories,omitempty"`
}

// SynchronizationSecretKeyStringValuePair undocumented
type SynchronizationSecretKeyStringValuePair struct {
	// Object is the base model of SynchronizationSecretKeyStringValuePair
	Object
	// Key undocumented
	Key *SynchronizationSecret `json:"key,omitempty"`
	// Value undocumented
	Value *string `json:"value,omitempty"`
}

// SynchronizationStatus undocumented
type SynchronizationStatus struct {
	// Object is the base model of SynchronizationStatus
	Object
	// CountSuccessiveCompleteFailures undocumented
	CountSuccessiveCompleteFailures *int `json:"countSuccessiveCompleteFailures,omitempty"`
	// EscrowsPruned undocumented
	EscrowsPruned *bool `json:"escrowsPruned,omitempty"`
	// Code undocumented
	Code *SynchronizationStatusCode `json:"code,omitempty"`
	// LastExecution undocumented
	LastExecution *SynchronizationTaskExecution `json:"lastExecution,omitempty"`
	// LastSuccessfulExecution undocumented
	LastSuccessfulExecution *SynchronizationTaskExecution `json:"lastSuccessfulExecution,omitempty"`
	// LastSuccessfulExecutionWithExports undocumented
	LastSuccessfulExecutionWithExports *SynchronizationTaskExecution `json:"lastSuccessfulExecutionWithExports,omitempty"`
	// Progress undocumented
	Progress []SynchronizationProgress `json:"progress,omitempty"`
	// Quarantine undocumented
	Quarantine *SynchronizationQuarantine `json:"quarantine,omitempty"`
	// SteadyStateFirstAchievedTime undocumented
	SteadyStateFirstAchievedTime *time.Time `json:"steadyStateFirstAchievedTime,omitempty"`
	// SteadyStateLastAchievedTime undocumented
	SteadyStateLastAchievedTime *time.Time `json:"steadyStateLastAchievedTime,omitempty"`
	// SynchronizedEntryCountByType undocumented
	SynchronizedEntryCountByType []StringKeyLongValuePair `json:"synchronizedEntryCountByType,omitempty"`
	// TroubleshootingURL undocumented
	TroubleshootingURL *string `json:"troubleshootingUrl,omitempty"`
}

// SynchronizationTaskExecution undocumented
type SynchronizationTaskExecution struct {
	// Object is the base model of SynchronizationTaskExecution
	Object
	// ActivityIdentifier undocumented
	ActivityIdentifier *string `json:"activityIdentifier,omitempty"`
	// CountEntitled undocumented
	CountEntitled *int `json:"countEntitled,omitempty"`
	// CountEntitledForProvisioning undocumented
	CountEntitledForProvisioning *int `json:"countEntitledForProvisioning,omitempty"`
	// CountEscrowed undocumented
	CountEscrowed *int `json:"countEscrowed,omitempty"`
	// CountEscrowedRaw undocumented
	CountEscrowedRaw *int `json:"countEscrowedRaw,omitempty"`
	// CountExported undocumented
	CountExported *int `json:"countExported,omitempty"`
	// CountExports undocumented
	CountExports *int `json:"countExports,omitempty"`
	// CountImported undocumented
	CountImported *int `json:"countImported,omitempty"`
	// CountImportedDeltas undocumented
	CountImportedDeltas *int `json:"countImportedDeltas,omitempty"`
	// CountImportedReferenceDeltas undocumented
	CountImportedReferenceDeltas *int `json:"countImportedReferenceDeltas,omitempty"`
	// State undocumented
	State *SynchronizationTaskExecutionResult `json:"state,omitempty"`
	// Error undocumented
	Error *SynchronizationError `json:"error,omitempty"`
	// TimeBegan undocumented
	TimeBegan *time.Time `json:"timeBegan,omitempty"`
	// TimeEnded undocumented
	TimeEnded *time.Time `json:"timeEnded,omitempty"`
}

// SynchronizationTemplate undocumented
type SynchronizationTemplate struct {
	// Entity is the base model of SynchronizationTemplate
	Entity
	// ApplicationID undocumented
	ApplicationID *UUID `json:"applicationId,omitempty"`
	// Default undocumented
	Default *bool `json:"default,omitempty"`
	// Description undocumented
	Description *string `json:"description,omitempty"`
	// Discoverable undocumented
	Discoverable *bool `json:"discoverable,omitempty"`
	// FactoryTag undocumented
	FactoryTag *string `json:"factoryTag,omitempty"`
	// Metadata undocumented
	Metadata []MetadataEntry `json:"metadata,omitempty"`
	// Schema undocumented
	Schema *SynchronizationSchema `json:"schema,omitempty"`
}
