package cluster import ( "encoding/json" "time" "github.com/example/remote-access-platform/backend/internal/platform/clusterauth" ) const ( PlatformRoleAdmin = "platform_admin" PlatformRoleRecoveryAdmin = "platform_recovery_admin" ClusterStatusActive = "active" ClusterStatusDisabled = "disabled" JoinRequestStatusPending = "pending" JoinRequestStatusApproved = "approved" JoinRequestStatusRejected = "rejected" NodeRegistrationPending = "pending" NodeRegistrationActive = "active" DefaultClusterSlug = "default" VPNConnectionModeSingleActive = "single_active" VPNConnectionDesiredEnabled = "enabled" VPNConnectionDesiredDisabled = "disabled" VPNConnectionStatusDisabled = "disabled" VPNConnectionStatusEnabled = "enabled" VPNConnectionStatusConnecting = "connecting" VPNConnectionStatusActive = "active" VPNConnectionStatusDegraded = "degraded" VPNConnectionStatusFailed = "failed" VPNLeaseStatusActive = "active" VPNLeaseStatusReleased = "released" VPNLeaseStatusExpired = "expired" VPNLeaseStatusFenced = "fenced" VPNAssignmentStatusNotStarted = "not_started" VPNAssignmentStatusAssigned = "assigned" VPNAssignmentStatusLeaseRequired = "lease_required" VPNAssignmentStatusBlocked = "blocked" VPNAssignmentStatusUnknown = "unknown" FabricServiceChannelStatusReady = "ready" FabricServiceChannelStatusDegradedFallback = "degraded_fallback" FabricServiceClassVPNPackets = "vpn_packets" FabricServiceClassRemoteWorkspace = "remote_workspace" FabricServiceClassFileTransfer = "file_transfer" FabricServiceClassVideo = "video" FabricChannelControl = "control" FabricChannelInteractive = "interactive" FabricChannelReliable = "reliable" FabricChannelBulk = "bulk" FabricChannelDroppable = "droppable" ) var allowedNodeRoles = map[string]struct{}{ "entry-node": {}, "relay-node": {}, "core-mesh": {}, "rdp-worker": {}, "vnc-worker": {}, "vpn-exit": {}, "vpn-connector": {}, "file-storage-cache": {}, "update-cache": {}, "video-relay": {}, } type Cluster struct { ID string `json:"id"` Slug string `json:"slug"` Name string `json:"name"` Status string `json:"status"` Region *string `json:"region,omitempty"` Metadata json.RawMessage `json:"metadata"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type ClusterNode struct { ID string `json:"id"` OwnerOrganizationID *string `json:"owner_organization_id,omitempty"` NodeKey string `json:"node_key"` Name string `json:"name"` OwnershipType string `json:"ownership_type"` RegistrationStatus string `json:"registration_status"` HealthStatus string `json:"health_status"` VersionState string `json:"version_state"` PartitionState string `json:"partition_state"` ReportedVersion *string `json:"reported_version,omitempty"` LastSeenAt *time.Time `json:"last_seen_at,omitempty"` MembershipStatus string `json:"membership_status"` MembershipMetadata json.RawMessage `json:"membership_metadata"` NodeGroupID *string `json:"node_group_id,omitempty"` NodeGroupName *string `json:"node_group_name,omitempty"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type ClusterNodeGroup struct { ID string `json:"id"` ClusterID string `json:"cluster_id"` ParentGroupID *string `json:"parent_group_id,omitempty"` Name string `json:"name"` Description *string `json:"description,omitempty"` SortOrder int `json:"sort_order"` Metadata json.RawMessage `json:"metadata"` CreatedByUserID *string `json:"created_by_user_id,omitempty"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type NodeJoinToken struct { ID string `json:"id"` ClusterID string `json:"cluster_id"` Scope json.RawMessage `json:"scope"` ExpiresAt time.Time `json:"expires_at"` MaxUses int `json:"max_uses"` UsedCount int `json:"used_count"` Status string `json:"status"` CreatedByUserID *string `json:"created_by_user_id,omitempty"` CreatedAt time.Time `json:"created_at"` RevokedAt *time.Time `json:"revoked_at,omitempty"` AuthorityPayload json.RawMessage `json:"authority_payload,omitempty"` AuthoritySignature *ClusterSignature `json:"authority_signature,omitempty"` } type CreatedJoinToken struct { NodeJoinToken Token string `json:"token"` } type DockerInstallProfileRequest struct { ClusterID string `json:"cluster_id"` InstallToken string `json:"install_token"` NodeName string `json:"node_name,omitempty"` HostFacts json.RawMessage `json:"host_facts,omitempty"` } type DockerInstallProfile struct { SchemaVersion string `json:"schema_version"` ClusterID string `json:"cluster_id"` BackendURL string `json:"backend_url"` ControlPlaneEndpoints []string `json:"control_plane_endpoints,omitempty"` ArtifactEndpoints []string `json:"artifact_endpoints,omitempty"` DockerImageArtifact *DockerArtifact `json:"docker_image_artifact,omitempty"` JoinToken string `json:"join_token"` NodeName string `json:"node_name"` Image string `json:"image"` ContainerName string `json:"container_name"` StateDir string `json:"state_dir"` Network string `json:"network"` RestartPolicy string `json:"restart_policy"` PullImage bool `json:"pull_image"` Replace bool `json:"replace"` DockerVPNGatewayEnabled bool `json:"docker_vpn_gateway_enabled"` WorkloadSupervisionEnabled bool `json:"workload_supervision_enabled"` MeshSyntheticRuntimeEnabled bool `json:"mesh_synthetic_runtime_enabled"` MeshProductionForwardingEnabled bool `json:"mesh_production_forwarding_enabled"` MeshListenAddr string `json:"mesh_listen_addr,omitempty"` MeshListenPortMode string `json:"mesh_listen_port_mode,omitempty"` MeshListenAutoPortStart int `json:"mesh_listen_auto_port_start,omitempty"` MeshListenAutoPortEnd int `json:"mesh_listen_auto_port_end,omitempty"` MeshAdvertiseEndpoint string `json:"mesh_advertise_endpoint,omitempty"` MeshAdvertiseEndpointsJSON json.RawMessage `json:"mesh_advertise_endpoints_json,omitempty"` MeshAdvertiseTransport string `json:"mesh_advertise_transport,omitempty"` MeshConnectivityMode string `json:"mesh_connectivity_mode,omitempty"` MeshNATType string `json:"mesh_nat_type,omitempty"` MeshRegion string `json:"mesh_region,omitempty"` HeartbeatIntervalSeconds int `json:"heartbeat_interval_seconds"` EnrollmentPollIntervalSeconds int `json:"enrollment_poll_interval_seconds"` EnrollmentPollTimeoutSeconds int `json:"enrollment_poll_timeout_seconds"` ProductionObservationSinkCapacity int `json:"production_observation_sink_capacity,omitempty"` Roles []string `json:"roles,omitempty"` } type WindowsInstallProfile struct { SchemaVersion string `json:"schema_version"` ClusterID string `json:"cluster_id"` BackendURL string `json:"backend_url"` ControlPlaneEndpoints []string `json:"control_plane_endpoints,omitempty"` ArtifactEndpoints []string `json:"artifact_endpoints,omitempty"` NodeAgentArtifact *DockerArtifact `json:"node_agent_artifact,omitempty"` JoinToken string `json:"join_token"` NodeName string `json:"node_name"` StateDir string `json:"state_dir"` InstallDir string `json:"install_dir"` StartupMode string `json:"startup_mode"` WorkloadSupervisionEnabled bool `json:"workload_supervision_enabled"` MeshSyntheticRuntimeEnabled bool `json:"mesh_synthetic_runtime_enabled"` MeshProductionForwardingEnabled bool `json:"mesh_production_forwarding_enabled"` MeshListenAddr string `json:"mesh_listen_addr,omitempty"` MeshListenPortMode string `json:"mesh_listen_port_mode,omitempty"` MeshListenAutoPortStart int `json:"mesh_listen_auto_port_start,omitempty"` MeshListenAutoPortEnd int `json:"mesh_listen_auto_port_end,omitempty"` MeshAdvertiseEndpoint string `json:"mesh_advertise_endpoint,omitempty"` MeshAdvertiseEndpointsJSON json.RawMessage `json:"mesh_advertise_endpoints_json,omitempty"` MeshAdvertiseTransport string `json:"mesh_advertise_transport,omitempty"` MeshConnectivityMode string `json:"mesh_connectivity_mode,omitempty"` MeshNATType string `json:"mesh_nat_type,omitempty"` MeshRegion string `json:"mesh_region,omitempty"` HeartbeatIntervalSeconds int `json:"heartbeat_interval_seconds"` EnrollmentPollIntervalSeconds int `json:"enrollment_poll_interval_seconds"` EnrollmentPollTimeoutSeconds int `json:"enrollment_poll_timeout_seconds"` ProductionObservationSinkCapacity int `json:"production_observation_sink_capacity,omitempty"` Roles []string `json:"roles,omitempty"` } type LinuxInstallProfile struct { SchemaVersion string `json:"schema_version"` ClusterID string `json:"cluster_id"` BackendURL string `json:"backend_url"` ControlPlaneEndpoints []string `json:"control_plane_endpoints,omitempty"` ArtifactEndpoints []string `json:"artifact_endpoints,omitempty"` NodeAgentArtifact *DockerArtifact `json:"node_agent_artifact,omitempty"` JoinToken string `json:"join_token"` NodeName string `json:"node_name"` StateDir string `json:"state_dir"` InstallDir string `json:"install_dir"` StartupMode string `json:"startup_mode"` WorkloadSupervisionEnabled bool `json:"workload_supervision_enabled"` MeshSyntheticRuntimeEnabled bool `json:"mesh_synthetic_runtime_enabled"` MeshProductionForwardingEnabled bool `json:"mesh_production_forwarding_enabled"` MeshListenAddr string `json:"mesh_listen_addr,omitempty"` MeshListenPortMode string `json:"mesh_listen_port_mode,omitempty"` MeshListenAutoPortStart int `json:"mesh_listen_auto_port_start,omitempty"` MeshListenAutoPortEnd int `json:"mesh_listen_auto_port_end,omitempty"` MeshAdvertiseEndpoint string `json:"mesh_advertise_endpoint,omitempty"` MeshAdvertiseEndpointsJSON json.RawMessage `json:"mesh_advertise_endpoints_json,omitempty"` MeshAdvertiseTransport string `json:"mesh_advertise_transport,omitempty"` MeshConnectivityMode string `json:"mesh_connectivity_mode,omitempty"` MeshNATType string `json:"mesh_nat_type,omitempty"` MeshRegion string `json:"mesh_region,omitempty"` HeartbeatIntervalSeconds int `json:"heartbeat_interval_seconds"` EnrollmentPollIntervalSeconds int `json:"enrollment_poll_interval_seconds"` EnrollmentPollTimeoutSeconds int `json:"enrollment_poll_timeout_seconds"` ProductionObservationSinkCapacity int `json:"production_observation_sink_capacity,omitempty"` Roles []string `json:"roles,omitempty"` } type DockerArtifact struct { Kind string `json:"kind"` Image string `json:"image,omitempty"` MediaType string `json:"media_type,omitempty"` FileName string `json:"file_name,omitempty"` URLs []string `json:"urls,omitempty"` SHA256 string `json:"sha256,omitempty"` SizeBytes int64 `json:"size_bytes,omitempty"` } type ReleaseVersion struct { ID string `json:"id"` ClusterID string `json:"cluster_id"` Product string `json:"product"` Version string `json:"version"` Channel string `json:"channel"` Status string `json:"status"` Compatibility json.RawMessage `json:"compatibility"` Changelog *string `json:"changelog,omitempty"` CreatedByUserID *string `json:"created_by_user_id,omitempty"` CreatedAt time.Time `json:"created_at"` Artifacts []ReleaseArtifact `json:"artifacts,omitempty"` AuthorityPayload json.RawMessage `json:"authority_payload,omitempty"` AuthoritySignature *ClusterSignature `json:"authority_signature,omitempty"` } type ReleaseArtifact struct { ID string `json:"id"` ReleaseID string `json:"release_id"` ClusterID string `json:"cluster_id"` Product string `json:"product"` Version string `json:"version"` OS string `json:"os"` Arch string `json:"arch"` InstallType string `json:"install_type"` Kind string `json:"kind"` URL string `json:"url"` URLs []string `json:"urls,omitempty"` SHA256 string `json:"sha256"` SizeBytes int64 `json:"size_bytes"` Signature *string `json:"signature,omitempty"` Metadata json.RawMessage `json:"metadata"` CreatedAt time.Time `json:"created_at"` } type NodeUpdatePolicy struct { ClusterID string `json:"cluster_id"` NodeID string `json:"node_id"` Product string `json:"product"` Channel string `json:"channel"` TargetVersion *string `json:"target_version,omitempty"` Strategy string `json:"strategy"` Enabled bool `json:"enabled"` RollbackAllowed bool `json:"rollback_allowed"` HealthWindowSec int `json:"health_window_seconds"` UpdatedByUserID *string `json:"updated_by_user_id,omitempty"` UpdatedAt time.Time `json:"updated_at"` } type NodeUpdateHint struct { SchemaVersion string `json:"schema_version"` Generation string `json:"generation,omitempty"` CheckNow bool `json:"check_now"` Products []string `json:"products,omitempty"` Reason string `json:"reason,omitempty"` DeliveryMode string `json:"delivery_mode,omitempty"` SubscriptionStatus string `json:"subscription_status,omitempty"` UpdateService *NodeUpdateServiceAssignment `json:"update_service,omitempty"` FallbackPollSeconds int `json:"fallback_poll_seconds,omitempty"` } type NodeUpdateServiceAssignment struct { SchemaVersion string `json:"schema_version"` NodeID string `json:"node_id,omitempty"` NodeName string `json:"node_name,omitempty"` Endpoint string `json:"endpoint,omitempty"` Region string `json:"region,omitempty"` Status string `json:"status"` Reason string `json:"reason,omitempty"` AssignedAt time.Time `json:"assigned_at"` ExpiresAt time.Time `json:"expires_at"` } type NodeUpdateServiceCandidate struct { NodeID string NodeName string Endpoint string Region string LastSeenAt *time.Time } type NodeUpdatePlan struct { SchemaVersion string `json:"schema_version"` ClusterID string `json:"cluster_id"` NodeID string `json:"node_id"` Product string `json:"product"` CurrentVersion string `json:"current_version,omitempty"` Action string `json:"action"` Reason string `json:"reason"` TargetVersion string `json:"target_version,omitempty"` Channel string `json:"channel,omitempty"` Strategy string `json:"strategy,omitempty"` RollbackAllowed bool `json:"rollback_allowed"` HealthWindowSec int `json:"health_window_seconds,omitempty"` Artifact *ReleaseArtifact `json:"artifact,omitempty"` AuthorityPayload json.RawMessage `json:"authority_payload,omitempty"` AuthoritySignature *ClusterSignature `json:"authority_signature,omitempty"` ProductionForwarding bool `json:"production_forwarding"` } type NodeUpdateStatus struct { ID string `json:"id"` ClusterID string `json:"cluster_id"` NodeID string `json:"node_id"` Product string `json:"product"` CurrentVersion string `json:"current_version,omitempty"` TargetVersion string `json:"target_version,omitempty"` Phase string `json:"phase"` Status string `json:"status"` AttemptID string `json:"attempt_id,omitempty"` ErrorMessage *string `json:"error_message,omitempty"` RollbackVersion *string `json:"rollback_version,omitempty"` Payload json.RawMessage `json:"payload"` ObservedAt time.Time `json:"observed_at"` } type NodeBootstrap struct { NodeID string `json:"node_id"` ClusterID string `json:"cluster_id"` IdentityStatus string `json:"identity_status"` Certificate map[string]any `json:"certificate"` HeartbeatEndpoint string `json:"heartbeat_endpoint"` ClusterAuthority *ClusterAuthorityDescriptor `json:"cluster_authority,omitempty"` AuthorityPayload json.RawMessage `json:"authority_payload,omitempty"` AuthoritySignature *ClusterSignature `json:"authority_signature,omitempty"` } type NodeJoinRequest struct { ID string `json:"id"` ClusterID string `json:"cluster_id"` JoinTokenID *string `json:"join_token_id,omitempty"` NodeName string `json:"node_name"` NodeFingerprint string `json:"node_fingerprint"` PublicKey string `json:"public_key"` ReportedCapabilities json.RawMessage `json:"reported_capabilities"` ReportedFacts json.RawMessage `json:"reported_facts"` RequestedRoles json.RawMessage `json:"requested_roles"` Status string `json:"status"` ReviewedByUserID *string `json:"reviewed_by_user_id,omitempty"` ReviewedAt *time.Time `json:"reviewed_at,omitempty"` ApprovedNodeID *string `json:"approved_node_id,omitempty"` RejectionReason *string `json:"rejection_reason,omitempty"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` ApprovalPayload json.RawMessage `json:"approval_payload,omitempty"` ApprovalSignature json.RawMessage `json:"approval_signature,omitempty"` } type NodeRoleAssignment struct { ID string `json:"id"` ClusterID string `json:"cluster_id"` NodeID string `json:"node_id"` OrganizationID *string `json:"organization_id,omitempty"` Role string `json:"role"` Status string `json:"status"` Policy json.RawMessage `json:"policy"` AssignedByUserID *string `json:"assigned_by_user_id,omitempty"` AssignedAt time.Time `json:"assigned_at"` RevokedAt *time.Time `json:"revoked_at,omitempty"` } type NodeHeartbeat struct { ID string `json:"id"` ClusterID string `json:"cluster_id"` NodeID string `json:"node_id"` HealthStatus string `json:"health_status"` ReportedVersion *string `json:"reported_version,omitempty"` Capabilities json.RawMessage `json:"capabilities"` ServiceStates json.RawMessage `json:"service_states"` Metadata json.RawMessage `json:"metadata"` ObservedAt time.Time `json:"observed_at"` } type NodeWorkloadDesiredState struct { ClusterID string `json:"cluster_id"` NodeID string `json:"node_id"` ServiceType string `json:"service_type"` DesiredState string `json:"desired_state"` Version *string `json:"version,omitempty"` RuntimeMode string `json:"runtime_mode"` ArtifactRef *string `json:"artifact_ref,omitempty"` Config json.RawMessage `json:"config"` Environment json.RawMessage `json:"environment"` UpdatedByUserID *string `json:"updated_by_user_id,omitempty"` UpdatedAt time.Time `json:"updated_at"` } type NodeWorkloadStatus struct { ID string `json:"id"` ClusterID string `json:"cluster_id"` NodeID string `json:"node_id"` ServiceType string `json:"service_type"` ReportedState string `json:"reported_state"` RuntimeMode string `json:"runtime_mode"` Version *string `json:"version,omitempty"` StatusPayload json.RawMessage `json:"status_payload"` ObservedAt time.Time `json:"observed_at"` } type MeshLinkObservation struct { ID string `json:"id"` ClusterID string `json:"cluster_id"` SourceNodeID string `json:"source_node_id"` TargetNodeID string `json:"target_node_id"` LinkStatus string `json:"link_status"` LatencyMs *int `json:"latency_ms,omitempty"` QualityScore *int `json:"quality_score,omitempty"` Metadata json.RawMessage `json:"metadata"` ObservedAt time.Time `json:"observed_at"` } type MeshRouteIntent struct { ID string `json:"id"` ClusterID string `json:"cluster_id"` SourceSelector json.RawMessage `json:"source_selector"` DestinationSelector json.RawMessage `json:"destination_selector"` ServiceClass string `json:"service_class"` Priority int `json:"priority"` Status string `json:"status"` LifecycleStatus string `json:"lifecycle_status,omitempty"` IsExpired bool `json:"is_expired"` PolicyExpiresAt *time.Time `json:"policy_expires_at,omitempty"` Policy json.RawMessage `json:"policy"` CreatedByUserID *string `json:"created_by_user_id,omitempty"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type SyntheticMeshRouteConfig struct { RouteID string `json:"route_id"` ClusterID string `json:"cluster_id"` SourceNodeID string `json:"source_node_id"` DestinationNodeID string `json:"destination_node_id"` Hops []string `json:"hops"` AllowedChannels []string `json:"allowed_channels"` ExpiresAt time.Time `json:"expires_at"` MaxTTL int `json:"max_ttl"` MaxHops int `json:"max_hops"` RouteVersion string `json:"route_version,omitempty"` PolicyVersion string `json:"policy_version,omitempty"` PeerDirectoryVersion string `json:"peer_directory_version,omitempty"` } type FabricServiceChannelRouteFeedbackReport struct { SchemaVersion string `json:"schema_version"` GeneratedAt time.Time `json:"generated_at"` FeedbackMaxAgeSeconds int `json:"feedback_max_age_seconds"` RecoveryPolicy *FabricServiceChannelRecoveryPolicy `json:"recovery_policy,omitempty"` MissingProvenanceCount int `json:"missing_provenance_count,omitempty"` StalePolicyCount int `json:"stale_policy_count,omitempty"` StaleGenerationCount int `json:"stale_generation_count,omitempty"` ObservationCount int `json:"observation_count"` FencedRouteCount int `json:"fenced_route_count"` DegradedRouteCount int `json:"degraded_route_count"` HealthyRouteCount int `json:"healthy_route_count"` RecoveredRouteCount int `json:"recovered_route_count,omitempty"` RecoveryHysteresisCount int `json:"recovery_hysteresis_count,omitempty"` RecoveryPromotedCount int `json:"recovery_promoted_count,omitempty"` RecoveryDemotedCount int `json:"recovery_demoted_count,omitempty"` Observations []FabricServiceChannelRouteFeedbackObservation `json:"observations,omitempty"` } type FabricServiceChannelRecoveryPolicy struct { SchemaVersion string `json:"schema_version"` Fingerprint string `json:"fingerprint,omitempty"` HysteresisPenalty int `json:"hysteresis_penalty"` PromotionMinSamples int `json:"promotion_min_samples"` DemotionFailureThreshold int `json:"demotion_failure_threshold"` DemotionDropThreshold int `json:"demotion_drop_threshold"` DemotionSlowThreshold int `json:"demotion_slow_threshold"` DemotionRebuildEnabled bool `json:"demotion_rebuild_enabled"` DemotionFencedEnabled bool `json:"demotion_fenced_enabled"` Source string `json:"source"` UpdatedByUserID *string `json:"updated_by_user_id,omitempty"` UpdatedAt time.Time `json:"updated_at,omitempty"` ControlPlaneOnly bool `json:"control_plane_only"` ProductionForwarding bool `json:"production_forwarding"` } type FabricServiceChannelAdaptivePolicy struct { SchemaVersion string `json:"schema_version"` Fingerprint string `json:"fingerprint,omitempty"` MaxParallelWindow int `json:"max_parallel_window"` BulkPressureChannelThreshold int `json:"bulk_pressure_channel_threshold"` QueuePressureHighWatermark int `json:"queue_pressure_high_watermark"` QueuePressureMaxInFlight int `json:"queue_pressure_max_in_flight"` ClassWindows map[string]int `json:"class_windows"` Source string `json:"source"` UpdatedByUserID *string `json:"updated_by_user_id,omitempty"` UpdatedAt time.Time `json:"updated_at,omitempty"` ControlPlaneOnly bool `json:"control_plane_only"` ProductionForwarding bool `json:"production_forwarding"` } type FabricServiceChannelPoolPolicy struct { SchemaVersion string `json:"schema_version"` Fingerprint string `json:"fingerprint,omitempty"` EntryPoolNodeIDs []string `json:"entry_pool_node_ids,omitempty"` ExitPoolNodeIDs []string `json:"exit_pool_node_ids,omitempty"` PreferredEntryNodeID string `json:"preferred_entry_node_id,omitempty"` PreferredExitNodeID string `json:"preferred_exit_node_id,omitempty"` SelectionStrategy string `json:"selection_strategy"` RouteRebuild string `json:"route_rebuild"` EntryFailover string `json:"entry_failover"` ExitFailover string `json:"exit_failover"` BackendFallbackAllowed bool `json:"backend_fallback_allowed"` StickySession bool `json:"sticky_session"` Source string `json:"source"` UpdatedByUserID *string `json:"updated_by_user_id,omitempty"` UpdatedAt time.Time `json:"updated_at,omitempty"` ControlPlaneOnly bool `json:"control_plane_only"` ProductionForwarding bool `json:"production_forwarding"` } type FabricServiceChannelBreadcrumbWindowPolicy struct { SchemaVersion string `json:"schema_version"` Fingerprint string `json:"fingerprint,omitempty"` CurrentWindowSeconds int64 `json:"current_window_seconds"` HistoryWindowSeconds int64 `json:"history_window_seconds"` Source string `json:"source"` UpdatedByUserID *string `json:"updated_by_user_id,omitempty"` UpdatedAt time.Time `json:"updated_at,omitempty"` ControlPlaneOnly bool `json:"control_plane_only"` ProductionForwarding bool `json:"production_forwarding"` } type PeerEndpointCandidate struct { EndpointID string `json:"endpoint_id"` NodeID string `json:"node_id"` Transport string `json:"transport"` Address string `json:"address"` AddressFamily string `json:"address_family,omitempty"` Reachability string `json:"reachability"` NATType string `json:"nat_type,omitempty"` ConnectivityMode string `json:"connectivity_mode"` Region string `json:"region,omitempty"` Priority int `json:"priority"` PolicyTags []string `json:"policy_tags,omitempty"` LastVerifiedAt *time.Time `json:"last_verified_at,omitempty"` Metadata json.RawMessage `json:"metadata,omitempty"` } type PeerDirectoryEntry struct { NodeID string `json:"node_id"` RouteIDs []string `json:"route_ids,omitempty"` EndpointCount int `json:"endpoint_count"` CandidateCount int `json:"candidate_count"` ConnectivityModes []string `json:"connectivity_modes,omitempty"` RecoverySeed bool `json:"recovery_seed"` } type PeerRecoverySeed struct { NodeID string `json:"node_id"` Endpoint string `json:"endpoint"` Transport string `json:"transport"` ConnectivityMode string `json:"connectivity_mode,omitempty"` Region string `json:"region,omitempty"` Priority int `json:"priority"` LastVerifiedAt *time.Time `json:"last_verified_at,omitempty"` Metadata json.RawMessage `json:"metadata,omitempty"` } type PeerRendezvousLease struct { LeaseID string `json:"lease_id"` PeerNodeID string `json:"peer_node_id"` RelayNodeID string `json:"relay_node_id"` RelayEndpoint string `json:"relay_endpoint"` Transport string `json:"transport"` ConnectivityMode string `json:"connectivity_mode,omitempty"` RouteIDs []string `json:"route_ids,omitempty"` AllowedChannels []string `json:"allowed_channels,omitempty"` Priority int `json:"priority"` ControlPlaneOnly bool `json:"control_plane_only"` IssuedAt time.Time `json:"issued_at"` ExpiresAt time.Time `json:"expires_at"` Reason string `json:"reason,omitempty"` Metadata json.RawMessage `json:"metadata,omitempty"` } type RendezvousRelayPolicyDecision struct { RouteID string `json:"route_id,omitempty"` PeerNodeID string `json:"peer_node_id"` WithdrawnLeaseID string `json:"withdrawn_lease_id,omitempty"` StaleRelayNodeID string `json:"stale_relay_node_id,omitempty"` SelectedRelayID string `json:"selected_relay_id,omitempty"` SelectedEndpoint string `json:"selected_endpoint,omitempty"` Score int `json:"score,omitempty"` Reason string `json:"reason"` ScoreReasons []string `json:"score_reasons,omitempty"` ReporterNodeID string `json:"reporter_node_id,omitempty"` } type RendezvousRelayPolicyReport struct { SchemaVersion string `json:"schema_version"` ScoringMode string `json:"scoring_mode"` FeedbackMaxAgeSeconds int `json:"feedback_max_age_seconds"` StaleRelayCount int `json:"stale_relay_count"` WithdrawnLeaseCount int `json:"withdrawn_lease_count"` ReplacementLeaseCount int `json:"replacement_lease_count"` Decisions []RendezvousRelayPolicyDecision `json:"decisions,omitempty"` } type RoutePathDecision struct { DecisionID string `json:"decision_id"` RouteID string `json:"route_id"` ReplacementRouteID string `json:"replacement_route_id,omitempty"` RebuildRequestID string `json:"rebuild_request_id,omitempty"` RebuildStatus string `json:"rebuild_status,omitempty"` RebuildReason string `json:"rebuild_reason,omitempty"` RebuildAttempt int `json:"rebuild_attempt,omitempty"` FeedbackObservationID string `json:"feedback_observation_id,omitempty"` FeedbackSource string `json:"feedback_source,omitempty"` FeedbackObservedAt *time.Time `json:"feedback_observed_at,omitempty"` FeedbackExpiresAt *time.Time `json:"feedback_expires_at,omitempty"` FeedbackChannelID string `json:"feedback_channel_id,omitempty"` FeedbackResourceID string `json:"feedback_resource_id,omitempty"` FeedbackViolationStatus string `json:"feedback_violation_status,omitempty"` FeedbackViolationReason string `json:"feedback_violation_reason,omitempty"` ClusterID string `json:"cluster_id"` LocalNodeID string `json:"local_node_id"` SourceNodeID string `json:"source_node_id"` DestinationNodeID string `json:"destination_node_id"` OriginalHops []string `json:"original_hops"` EffectiveHops []string `json:"effective_hops"` PreviousHopID string `json:"previous_hop_id,omitempty"` NextHopID string `json:"next_hop_id,omitempty"` LocalRole string `json:"local_role"` SelectedRelayID string `json:"selected_relay_id,omitempty"` SelectedRelayEndpoint string `json:"selected_relay_endpoint,omitempty"` StaleRelayNodeID string `json:"stale_relay_node_id,omitempty"` RendezvousPeerNodeID string `json:"rendezvous_peer_node_id,omitempty"` RendezvousLeaseID string `json:"rendezvous_lease_id,omitempty"` RendezvousLeaseReason string `json:"rendezvous_lease_reason,omitempty"` DecisionSource string `json:"decision_source"` Generation string `json:"generation"` PathScore int `json:"path_score,omitempty"` ScoreReasons []string `json:"score_reasons,omitempty"` ControlPlaneOnly bool `json:"control_plane_only"` ProductionForwarding bool `json:"production_forwarding"` ExpiresAt time.Time `json:"expires_at"` } type RoutePathDecisionReport struct { SchemaVersion string `json:"schema_version"` DecisionMode string `json:"decision_mode"` Generation string `json:"generation"` RecoveryPolicy *FabricServiceChannelRecoveryPolicy `json:"recovery_policy,omitempty"` DecisionCount int `json:"decision_count"` ReplacementDecisionCount int `json:"replacement_decision_count"` DegradedDecisionCount int `json:"degraded_decision_count"` RebuildRequestCount int `json:"rebuild_request_count,omitempty"` RebuildAppliedCount int `json:"rebuild_applied_count,omitempty"` RecoveryHysteresisCount int `json:"recovery_hysteresis_count,omitempty"` RecoveryPromotedCount int `json:"recovery_promoted_count,omitempty"` RecoveryDemotedCount int `json:"recovery_demoted_count,omitempty"` ControlPlaneOnly bool `json:"control_plane_only"` ProductionForwarding bool `json:"production_forwarding"` Decisions []RoutePathDecision `json:"decisions,omitempty"` } type NodeSyntheticMeshConfig struct { Enabled bool `json:"enabled"` SchemaVersion string `json:"schema_version"` ClusterID string `json:"cluster_id"` LocalNodeID string `json:"local_node_id"` AuthorityRequired bool `json:"authority_required"` ClusterAuthority *ClusterAuthorityDescriptor `json:"cluster_authority,omitempty"` AuthorityPayload json.RawMessage `json:"authority_payload,omitempty"` AuthoritySignature *ClusterSignature `json:"authority_signature,omitempty"` ConfigVersion string `json:"config_version,omitempty"` PeerDirectoryVersion string `json:"peer_directory_version,omitempty"` PolicyVersion string `json:"policy_version,omitempty"` PeerEndpoints map[string]string `json:"peer_endpoints"` PeerEndpointCandidates map[string][]PeerEndpointCandidate `json:"peer_endpoint_candidates,omitempty"` PeerDirectory []PeerDirectoryEntry `json:"peer_directory,omitempty"` RecoverySeeds []PeerRecoverySeed `json:"recovery_seeds,omitempty"` RendezvousLeases []PeerRendezvousLease `json:"rendezvous_leases,omitempty"` RendezvousRelayPolicy *RendezvousRelayPolicyReport `json:"rendezvous_relay_policy,omitempty"` RoutePathDecisions *RoutePathDecisionReport `json:"route_path_decisions,omitempty"` ServiceChannelFeedback *FabricServiceChannelRouteFeedbackReport `json:"service_channel_route_feedback,omitempty"` ServiceChannelAdaptivePolicy *FabricServiceChannelAdaptivePolicy `json:"service_channel_adaptive_policy,omitempty"` ServiceChannelRemediationCommands []FabricServiceChannelAccessRemediationCommand `json:"service_channel_remediation_commands,omitempty"` MeshListener *NodeMeshListenerConfig `json:"mesh_listener,omitempty"` Routes []SyntheticMeshRouteConfig `json:"routes"` ProductionForwarding bool `json:"production_forwarding"` } type NodeMeshListenerConfig struct { SchemaVersion string `json:"schema_version"` Source string `json:"source"` DesiredState string `json:"desired_state"` ListenAddr string `json:"listen_addr"` ListenPortMode string `json:"listen_port_mode"` AutoPortStart int `json:"auto_port_start,omitempty"` AutoPortEnd int `json:"auto_port_end,omitempty"` AdvertiseEndpoint string `json:"advertise_endpoint,omitempty"` AdvertiseTransport string `json:"advertise_transport,omitempty"` ConnectivityMode string `json:"connectivity_mode,omitempty"` NATType string `json:"nat_type,omitempty"` Region string `json:"region,omitempty"` ConfigVersion string `json:"config_version,omitempty"` UpdatedByUserID string `json:"updated_by_user_id,omitempty"` UpdatedAt string `json:"updated_at,omitempty"` ControlPlaneOnly bool `json:"control_plane_only"` ProductionForwarding bool `json:"production_forwarding"` } type MeshQoSPolicy struct { ID string `json:"id"` ClusterID string `json:"cluster_id"` ServiceClass string `json:"service_class"` Priority int `json:"priority"` ReliabilityMode string `json:"reliability_mode"` DropPolicy string `json:"drop_policy"` BandwidthPolicy json.RawMessage `json:"bandwidth_policy"` Metadata json.RawMessage `json:"metadata"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type FabricEntryPoint struct { ID string `json:"id"` ClusterID string `json:"cluster_id"` Name string `json:"name"` Status string `json:"status"` EndpointType string `json:"endpoint_type"` PublicEndpoint *string `json:"public_endpoint,omitempty"` Policy json.RawMessage `json:"policy"` Metadata json.RawMessage `json:"metadata"` CreatedByUserID *string `json:"created_by_user_id,omitempty"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type FabricEntryPointNode struct { EntryPointID string `json:"entry_point_id"` ClusterID string `json:"cluster_id"` NodeID string `json:"node_id"` Status string `json:"status"` Priority int `json:"priority"` Metadata json.RawMessage `json:"metadata"` AddedByUserID *string `json:"added_by_user_id,omitempty"` AddedAt time.Time `json:"added_at"` } type FabricEgressPool struct { ID string `json:"id"` ClusterID string `json:"cluster_id"` Name string `json:"name"` Status string `json:"status"` Description *string `json:"description,omitempty"` RouteScope json.RawMessage `json:"route_scope"` Policy json.RawMessage `json:"policy"` Metadata json.RawMessage `json:"metadata"` CreatedByUserID *string `json:"created_by_user_id,omitempty"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type FabricEgressPoolNode struct { EgressPoolID string `json:"egress_pool_id"` ClusterID string `json:"cluster_id"` NodeID string `json:"node_id"` Status string `json:"status"` Priority int `json:"priority"` Metadata json.RawMessage `json:"metadata"` AddedByUserID *string `json:"added_by_user_id,omitempty"` AddedAt time.Time `json:"added_at"` } type FabricServiceChannelNodeCandidate struct { NodeID string `json:"node_id"` Role string `json:"role,omitempty"` Priority int `json:"priority,omitempty"` Status string `json:"status"` Metadata json.RawMessage `json:"metadata,omitempty"` } type FabricServiceChannelRoute struct { RouteID string `json:"route_id,omitempty"` ClusterID string `json:"cluster_id"` ServiceClass string `json:"service_class"` SourceNodeID string `json:"source_node_id"` DestinationNodeID string `json:"destination_node_id"` Hops []string `json:"hops"` AllowedChannels []string `json:"allowed_channels"` RouteVersion string `json:"route_version,omitempty"` PolicyVersion string `json:"policy_version,omitempty"` Generation string `json:"generation"` Status string `json:"status"` RecoveryState string `json:"recovery_state,omitempty"` RecoveryPenalty int `json:"recovery_penalty,omitempty"` RecoveryPromoted bool `json:"recovery_promoted,omitempty"` RecoveryDemoted bool `json:"recovery_demoted,omitempty"` RecoveryReason string `json:"recovery_reason,omitempty"` RecoveryPolicy *FabricServiceChannelRecoveryPolicy `json:"recovery_policy,omitempty"` PathScore int `json:"path_score,omitempty"` ScoreReasons []string `json:"score_reasons,omitempty"` ExpiresAt time.Time `json:"expires_at"` } type FabricServiceChannelFallback struct { Allowed bool `json:"allowed"` Active bool `json:"active"` Transport string `json:"transport,omitempty"` Reason string `json:"reason,omitempty"` Degraded bool `json:"degraded"` BackendRelay bool `json:"backend_relay"` Compatibility bool `json:"compatibility"` } type FabricServiceChannelToken struct { Type string `json:"type"` Token string `json:"token"` TTLSeconds int `json:"ttl_seconds"` IntrospectionPath string `json:"introspection_path,omitempty"` } type FabricServiceChannelHTTPIngress struct { Type string `json:"type"` PathTemplate string `json:"path_template"` WebSocketPathTemplate string `json:"websocket_path_template,omitempty"` TokenHeader string `json:"token_header"` ServiceClassHeader string `json:"service_class_header,omitempty"` ChannelClassHeader string `json:"channel_class_header,omitempty"` PacketBatchFormat string `json:"packet_batch_format"` SupportedMethods []string `json:"supported_methods"` } type FabricServiceChannelDataPlaneContract struct { SchemaVersion string `json:"schema_version"` Mode string `json:"mode"` ControlPlaneTransport string `json:"control_plane_transport"` WorkingDataTransport string `json:"working_data_transport"` SteadyStateTransport string `json:"steady_state_transport"` BackendRelayPolicy string `json:"backend_relay_policy"` ProductionForwardingRequired bool `json:"production_forwarding_required"` ServiceNeutral bool `json:"service_neutral"` ProtocolAgnostic bool `json:"protocol_agnostic"` LogicalFlowMode string `json:"logical_flow_mode"` RequiredFlowIsolationClasses []string `json:"required_flow_isolation_classes,omitempty"` RouteSelectionStrategy string `json:"route_selection_strategy"` EntryFailoverMode string `json:"entry_failover_mode"` ExitFailoverMode string `json:"exit_failover_mode"` RouteRebuildMode string `json:"route_rebuild_mode"` FailureDetectionSource string `json:"failure_detection_source"` DegradedFallbackVisibility string `json:"degraded_fallback_visibility"` StableContractForServiceClass string `json:"stable_contract_for_service_class,omitempty"` } type FabricServiceChannelLeaseAuthorityPayload struct { SchemaVersion string `json:"schema_version"` ChannelID string `json:"channel_id"` ClusterID string `json:"cluster_id"` OrganizationID string `json:"organization_id"` UserID string `json:"user_id"` ResourceID string `json:"resource_id,omitempty"` ServiceClass string `json:"service_class"` Status string `json:"status"` SelectedEntryNodeID string `json:"selected_entry_node_id"` SelectedExitNodeID string `json:"selected_exit_node_id"` EntryPool []FabricServiceChannelNodeCandidate `json:"entry_pool,omitempty"` ExitPool []FabricServiceChannelNodeCandidate `json:"exit_pool,omitempty"` AllowedChannels []string `json:"allowed_channels"` PrimaryRoute FabricServiceChannelRoute `json:"primary_route"` RecoveryPolicy *FabricServiceChannelRecoveryPolicy `json:"recovery_policy,omitempty"` PoolPolicy *FabricServiceChannelPoolPolicy `json:"pool_policy,omitempty"` DataPlane FabricServiceChannelDataPlaneContract `json:"data_plane"` RouteGeneration string `json:"route_generation"` FencingEpoch int64 `json:"fencing_epoch"` TokenHash string `json:"token_hash"` IssuedAt time.Time `json:"issued_at"` ExpiresAt time.Time `json:"expires_at"` } type FabricServiceChannelLease struct { SchemaVersion string `json:"schema_version"` ChannelID string `json:"channel_id"` ClusterID string `json:"cluster_id"` OrganizationID string `json:"organization_id"` UserID string `json:"user_id"` ResourceID string `json:"resource_id,omitempty"` ServiceClass string `json:"service_class"` Status string `json:"status"` SelectedEntryNodeID string `json:"selected_entry_node_id"` SelectedExitNodeID string `json:"selected_exit_node_id"` EntryPool []FabricServiceChannelNodeCandidate `json:"entry_pool"` ExitPool []FabricServiceChannelNodeCandidate `json:"exit_pool"` RequiredRoles []string `json:"required_roles"` AllowedChannels []string `json:"allowed_channels"` PrimaryRoute FabricServiceChannelRoute `json:"primary_route"` AlternateRoutes []FabricServiceChannelRoute `json:"alternate_routes,omitempty"` RecoveryPolicy *FabricServiceChannelRecoveryPolicy `json:"recovery_policy,omitempty"` PoolPolicy *FabricServiceChannelPoolPolicy `json:"pool_policy,omitempty"` DataPlane FabricServiceChannelDataPlaneContract `json:"data_plane"` QoS json.RawMessage `json:"qos"` Failover json.RawMessage `json:"failover"` Fallback FabricServiceChannelFallback `json:"fallback"` Token FabricServiceChannelToken `json:"token"` EntryHTTP FabricServiceChannelHTTPIngress `json:"entry_http"` RouteGeneration string `json:"route_generation"` FencingEpoch int64 `json:"fencing_epoch"` IssuedAt time.Time `json:"issued_at"` ExpiresAt time.Time `json:"expires_at"` Metadata json.RawMessage `json:"metadata,omitempty"` AuthorityPayload json.RawMessage `json:"authority_payload,omitempty"` AuthoritySignature *ClusterSignature `json:"authority_signature,omitempty"` } type FabricServiceChannelLeaseRecord struct { ClusterID string `json:"cluster_id"` ChannelID string `json:"channel_id"` TokenHash string `json:"token_hash"` ResourceID string `json:"resource_id,omitempty"` ServiceClass string `json:"service_class"` SelectedEntryNodeID string `json:"selected_entry_node_id,omitempty"` ExpiresAt time.Time `json:"expires_at"` Lease FabricServiceChannelLease `json:"lease"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type FabricServiceChannelLeaseSummary struct { ClusterID string `json:"cluster_id"` ChannelID string `json:"channel_id"` ResourceID string `json:"resource_id,omitempty"` ServiceClass string `json:"service_class"` Status string `json:"status"` SelectedEntryNodeID string `json:"selected_entry_node_id,omitempty"` SelectedExitNodeID string `json:"selected_exit_node_id,omitempty"` AllowedChannels []string `json:"allowed_channels,omitempty"` PrimaryRouteID string `json:"primary_route_id,omitempty"` PrimaryRouteStatus string `json:"primary_route_status,omitempty"` DataPlane FabricServiceChannelDataPlaneContract `json:"data_plane,omitempty"` ForceBackendFallback bool `json:"force_backend_fallback"` Expired bool `json:"expired"` IssuedAt time.Time `json:"issued_at"` ExpiresAt time.Time `json:"expires_at"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type FabricServiceChannelLeaseMaintenance struct { SchemaVersion string `json:"schema_version"` ClusterID string `json:"cluster_id"` Status string `json:"status"` Reason string `json:"reason"` ObservedAt time.Time `json:"observed_at"` ActiveCount int `json:"active_count"` ExpiredCount int `json:"expired_count"` ScannedCount int `json:"scanned_count"` DeletedExpiredCount int `json:"deleted_expired_count,omitempty"` WindowLimit int `json:"window_limit"` RecommendedOperatorAction string `json:"recommended_operator_action,omitempty"` Leases []FabricServiceChannelLeaseSummary `json:"leases,omitempty"` } type FabricServiceChannelAccessTelemetry struct { SchemaVersion string `json:"schema_version"` ClusterID string `json:"cluster_id"` Status string `json:"status"` Reason string `json:"reason"` ObservedAt time.Time `json:"observed_at"` NodeCount int `json:"node_count"` ReportingNodeCount int `json:"reporting_node_count"` TotalAccepted int `json:"total_accepted"` SignedAccepted int `json:"signed_accepted"` IntrospectionAccepted int `json:"introspection_accepted"` LegacyUnsignedAccepted int `json:"legacy_unsigned_accepted"` BackendFallbackCount int `json:"backend_fallback_count"` BackendFallbackBlockedCount int `json:"backend_fallback_blocked_count,omitempty"` FabricRouteSendFailureCount int `json:"fabric_route_send_failure_count,omitempty"` DataPlaneContractCount int `json:"data_plane_contract_count,omitempty"` LastDataPlaneMode string `json:"last_data_plane_mode,omitempty"` LastWorkingDataTransport string `json:"last_working_data_transport,omitempty"` LastSteadyStateTransport string `json:"last_steady_state_transport,omitempty"` LastBackendRelayPolicy string `json:"last_backend_relay_policy,omitempty"` LastLogicalFlowMode string `json:"last_logical_flow_mode,omitempty"` LastDataPlaneViolationStatus string `json:"last_data_plane_violation_status,omitempty"` LastDataPlaneViolationReason string `json:"last_data_plane_violation_reason,omitempty"` ActiveChannelCount int `json:"active_channel_count"` DegradedFallbackChannelCount int `json:"degraded_fallback_channel_count"` CorrelatedRouteCount int `json:"correlated_route_count"` DegradedRouteCount int `json:"degraded_route_count"` RouteDecisionChannelCount int `json:"route_decision_channel_count,omitempty"` ReplacementDecisionCount int `json:"replacement_decision_count,omitempty"` AppliedRebuildDecisionCount int `json:"applied_rebuild_decision_count,omitempty"` RecoveryDecisionCount int `json:"recovery_decision_count,omitempty"` NoSafeRecoveryDecisionCount int `json:"no_safe_recovery_decision_count,omitempty"` TrafficClassCounts map[string]int `json:"traffic_class_counts,omitempty"` FlowChannelCount int `json:"flow_channel_count,omitempty"` FlowDropped int `json:"flow_dropped,omitempty"` FlowHighWatermark int `json:"flow_high_watermark,omitempty"` FlowMaxInFlight int `json:"flow_max_in_flight,omitempty"` FlowHealthStatus string `json:"flow_health_status,omitempty"` FlowHealthReason string `json:"flow_health_reason,omitempty"` RecommendedParallelWindows map[string]int `json:"recommended_parallel_windows,omitempty"` AdaptiveBackpressureActive bool `json:"adaptive_backpressure_active,omitempty"` AdaptiveBackpressureReason string `json:"adaptive_backpressure_reason,omitempty"` AdaptivePolicyFingerprint string `json:"adaptive_policy_fingerprint,omitempty"` LatestAcceptedAt *time.Time `json:"latest_accepted_at,omitempty"` Nodes []FabricServiceChannelAccessTelemetryNode `json:"nodes,omitempty"` ActiveChannels []FabricServiceChannelAccessTelemetryChannel `json:"active_channels,omitempty"` RecommendedOperatorAction string `json:"recommended_operator_action,omitempty"` } type FabricServiceChannelAccessTelemetryNode struct { NodeID string `json:"node_id"` NodeName string `json:"node_name,omitempty"` ObservedAt time.Time `json:"observed_at"` TotalAccepted int `json:"total_accepted"` SignedAccepted int `json:"signed_accepted"` IntrospectionAccepted int `json:"introspection_accepted"` LegacyUnsignedAccepted int `json:"legacy_unsigned_accepted"` BackendFallbackCount int `json:"backend_fallback_count"` BackendFallbackBlockedCount int `json:"backend_fallback_blocked_count,omitempty"` FabricRouteSendFailureCount int `json:"fabric_route_send_failure_count,omitempty"` DataPlaneContractCount int `json:"data_plane_contract_count,omitempty"` LastDataPlaneMode string `json:"last_data_plane_mode,omitempty"` LastWorkingDataTransport string `json:"last_working_data_transport,omitempty"` LastSteadyStateTransport string `json:"last_steady_state_transport,omitempty"` LastBackendRelayPolicy string `json:"last_backend_relay_policy,omitempty"` LastLogicalFlowMode string `json:"last_logical_flow_mode,omitempty"` LastDataPlaneViolationStatus string `json:"last_data_plane_violation_status,omitempty"` LastDataPlaneViolationReason string `json:"last_data_plane_violation_reason,omitempty"` TrafficClassCounts map[string]int `json:"traffic_class_counts,omitempty"` FlowChannelCount int `json:"flow_channel_count,omitempty"` FlowDropped int `json:"flow_dropped,omitempty"` FlowHighWatermark int `json:"flow_high_watermark,omitempty"` FlowMaxInFlight int `json:"flow_max_in_flight,omitempty"` FlowHealthStatus string `json:"flow_health_status,omitempty"` FlowHealthReason string `json:"flow_health_reason,omitempty"` RecommendedParallelWindows map[string]int `json:"recommended_parallel_windows,omitempty"` AdaptiveBackpressureActive bool `json:"adaptive_backpressure_active,omitempty"` AdaptiveBackpressureReason string `json:"adaptive_backpressure_reason,omitempty"` AdaptivePolicyFingerprint string `json:"adaptive_policy_fingerprint,omitempty"` LastAcceptedAt *time.Time `json:"last_accepted_at,omitempty"` } type FabricServiceChannelAccessTelemetryChannel struct { ChannelID string `json:"channel_id"` ResourceID string `json:"resource_id,omitempty"` ServiceClass string `json:"service_class"` Status string `json:"status"` SelectedEntryNodeID string `json:"selected_entry_node_id,omitempty"` SelectedExitNodeID string `json:"selected_exit_node_id,omitempty"` PrimaryRouteID string `json:"primary_route_id,omitempty"` PrimaryRouteStatus string `json:"primary_route_status,omitempty"` ForceBackendFallback bool `json:"force_backend_fallback"` EntryNodeTotalAccepted int `json:"entry_node_total_accepted"` EntryNodeIntrospectionAccepted int `json:"entry_node_introspection_accepted"` EntryNodeBackendFallbackCount int `json:"entry_node_backend_fallback_count"` EntryNodeBackendFallbackBlockedCount int `json:"entry_node_backend_fallback_blocked_count,omitempty"` EntryNodeFabricRouteSendFailureCount int `json:"entry_node_fabric_route_send_failure_count,omitempty"` EntryNodeDataPlaneContractCount int `json:"entry_node_data_plane_contract_count,omitempty"` EntryNodeLastDataPlaneMode string `json:"entry_node_last_data_plane_mode,omitempty"` EntryNodeLastWorkingDataTransport string `json:"entry_node_last_working_data_transport,omitempty"` EntryNodeLastSteadyStateTransport string `json:"entry_node_last_steady_state_transport,omitempty"` EntryNodeLastBackendRelayPolicy string `json:"entry_node_last_backend_relay_policy,omitempty"` EntryNodeLastLogicalFlowMode string `json:"entry_node_last_logical_flow_mode,omitempty"` EntryNodeLastDataPlaneViolationStatus string `json:"entry_node_last_data_plane_violation_status,omitempty"` EntryNodeLastDataPlaneViolationReason string `json:"entry_node_last_data_plane_violation_reason,omitempty"` EntryNodeTrafficClassCounts map[string]int `json:"entry_node_traffic_class_counts,omitempty"` EntryNodeFlowChannelCount int `json:"entry_node_flow_channel_count,omitempty"` EntryNodeFlowDropped int `json:"entry_node_flow_dropped,omitempty"` EntryNodeFlowHighWatermark int `json:"entry_node_flow_high_watermark,omitempty"` EntryNodeFlowMaxInFlight int `json:"entry_node_flow_max_in_flight,omitempty"` EntryNodeFlowHealthStatus string `json:"entry_node_flow_health_status,omitempty"` EntryNodeFlowHealthReason string `json:"entry_node_flow_health_reason,omitempty"` EntryNodeRecommendedParallelWindows map[string]int `json:"entry_node_recommended_parallel_windows,omitempty"` EntryNodeAdaptiveBackpressureActive bool `json:"entry_node_adaptive_backpressure_active,omitempty"` EntryNodeAdaptiveBackpressureReason string `json:"entry_node_adaptive_backpressure_reason,omitempty"` EntryNodeAdaptivePolicyFingerprint string `json:"entry_node_adaptive_policy_fingerprint,omitempty"` RouteFeedbackStatus string `json:"route_feedback_status,omitempty"` RouteFeedbackObservedAt *time.Time `json:"route_feedback_observed_at,omitempty"` RouteFeedbackScoreAdjustment int `json:"route_feedback_score_adjustment,omitempty"` RouteFeedbackEffectiveScoreAdjustment int `json:"route_feedback_effective_score_adjustment,omitempty"` RouteFeedbackReasons []string `json:"route_feedback_reasons,omitempty"` RouteQualityWindowSampleCount int `json:"route_quality_window_sample_count,omitempty"` RouteQualityWindowFailureCount int `json:"route_quality_window_failure_count,omitempty"` RouteQualityWindowDropCount int `json:"route_quality_window_drop_count,omitempty"` RouteQualityWindowSlowCount int `json:"route_quality_window_slow_count,omitempty"` LastSendDurationMs int64 `json:"last_send_duration_ms,omitempty"` RemediationAction string `json:"remediation_action,omitempty"` RemediationReason string `json:"remediation_reason,omitempty"` RemediationRouteID string `json:"remediation_route_id,omitempty"` RemediationRouteStatus string `json:"remediation_route_status,omitempty"` RemediationGuardStatus string `json:"remediation_guard_status,omitempty"` RemediationGuardReason string `json:"remediation_guard_reason,omitempty"` RemediationExecutionStatus string `json:"remediation_execution_status,omitempty"` RemediationExecutionReason string `json:"remediation_execution_reason,omitempty"` RemediationExecutionGeneration string `json:"remediation_execution_generation,omitempty"` RemediationExecutionObservedAt string `json:"remediation_execution_observed_at,omitempty"` RouteDecisionSource string `json:"route_decision_source,omitempty"` RouteDecisionRouteID string `json:"route_decision_route_id,omitempty"` RouteDecisionReplacementRouteID string `json:"route_decision_replacement_route_id,omitempty"` RouteDecisionRebuildStatus string `json:"route_decision_rebuild_status,omitempty"` RouteDecisionRebuildReason string `json:"route_decision_rebuild_reason,omitempty"` RouteDecisionGeneration string `json:"route_decision_generation,omitempty"` RouteDecisionScoreReasons []string `json:"route_decision_score_reasons,omitempty"` PoolPolicyFingerprint string `json:"pool_policy_fingerprint,omitempty"` DataPlane FabricServiceChannelDataPlaneContract `json:"data_plane,omitempty"` RemediationCommand *FabricServiceChannelAccessRemediationCommand `json:"remediation_command,omitempty"` RecommendedOperatorAction string `json:"recommended_operator_action,omitempty"` ExpiresAt time.Time `json:"expires_at"` } type FabricServiceChannelAccessRemediationCommand struct { SchemaVersion string `json:"schema_version"` CommandID string `json:"command_id"` Action string `json:"action"` ClusterID string `json:"cluster_id"` ChannelID string `json:"channel_id"` ResourceID string `json:"resource_id,omitempty"` ServiceClass string `json:"service_class"` EntryNodeID string `json:"entry_node_id,omitempty"` ExitNodeID string `json:"exit_node_id,omitempty"` PrimaryRouteID string `json:"primary_route_id,omitempty"` ReplacementRouteID string `json:"replacement_route_id,omitempty"` ReplacementRouteStatus string `json:"replacement_route_status,omitempty"` PoolPolicyFingerprint string `json:"pool_policy_fingerprint,omitempty"` GuardStatus string `json:"guard_status,omitempty"` GuardReason string `json:"guard_reason,omitempty"` ExecutionStatus string `json:"execution_status,omitempty"` ExecutionReason string `json:"execution_reason,omitempty"` ExecutionGeneration string `json:"execution_generation,omitempty"` ExecutionObservedAt string `json:"execution_observed_at,omitempty"` Reason string `json:"reason,omitempty"` OperatorAction string `json:"operator_action,omitempty"` IssuedAt time.Time `json:"issued_at"` ExpiresAt time.Time `json:"expires_at"` } type FabricServiceChannelLeaseIntrospection struct { SchemaVersion string `json:"schema_version"` ClusterID string `json:"cluster_id"` ChannelID string `json:"channel_id"` ResourceID string `json:"resource_id,omitempty"` ServiceClass string `json:"service_class"` Allowed bool `json:"allowed"` Status string `json:"status"` Reason string `json:"reason,omitempty"` AcceptedBy string `json:"accepted_by"` SelectedEntryNodeID string `json:"selected_entry_node_id,omitempty"` SelectedExitNodeID string `json:"selected_exit_node_id,omitempty"` AllowedChannels []string `json:"allowed_channels,omitempty"` PreferredRouteID string `json:"preferred_route_id,omitempty"` ForceBackendFallback bool `json:"force_backend_fallback"` LeaseStatus string `json:"lease_status,omitempty"` PrimaryRoute FabricServiceChannelRoute `json:"primary_route,omitempty"` DataPlane FabricServiceChannelDataPlaneContract `json:"data_plane,omitempty"` RouteGeneration string `json:"route_generation,omitempty"` FencingEpoch int64 `json:"fencing_epoch,omitempty"` ExpiresAt time.Time `json:"expires_at,omitempty"` } type FabricServiceChannelRouteFeedbackObservation struct { ID string `json:"id,omitempty"` ClusterID string `json:"cluster_id"` ReporterNodeID string `json:"reporter_node_id"` RouteID string `json:"route_id"` ServiceClass string `json:"service_class"` FeedbackStatus string `json:"feedback_status"` ScoreAdjustment int `json:"score_adjustment"` EffectiveScoreAdjustment int `json:"effective_score_adjustment,omitempty"` Reasons []string `json:"reasons,omitempty"` LastError string `json:"last_error,omitempty"` ConsecutiveFailures int `json:"consecutive_failures,omitempty"` StallCount int `json:"stall_count,omitempty"` LastSendDurationMs int64 `json:"last_send_duration_ms,omitempty"` RecoveryState string `json:"recovery_state,omitempty"` RecoveryHysteresisActive bool `json:"recovery_hysteresis_active,omitempty"` RecoveryHysteresisPenalty int `json:"recovery_hysteresis_penalty,omitempty"` RecoveryPromoted bool `json:"recovery_promoted,omitempty"` RecoveryDemoted bool `json:"recovery_demoted,omitempty"` RecoveryReason string `json:"recovery_reason,omitempty"` ObservedPolicyFingerprint string `json:"observed_policy_fingerprint,omitempty"` EffectivePolicyFingerprint string `json:"effective_policy_fingerprint,omitempty"` ObservedRouteGeneration string `json:"observed_route_generation,omitempty"` EffectiveRouteGeneration string `json:"effective_route_generation,omitempty"` ProvenanceMissing bool `json:"provenance_missing,omitempty"` StalePolicy bool `json:"stale_policy,omitempty"` StaleGeneration bool `json:"stale_generation,omitempty"` StaleReason string `json:"stale_reason,omitempty"` Payload json.RawMessage `json:"payload"` ObservedAt time.Time `json:"observed_at"` ExpiresAt time.Time `json:"expires_at"` RetryCooldownUntil *time.Time `json:"retry_cooldown_until,omitempty"` } type FabricServiceChannelRouteRebuildAttempt struct { ID string `json:"id"` ClusterID string `json:"cluster_id"` ReporterNodeID string `json:"reporter_node_id"` ServiceClass string `json:"service_class"` RouteID string `json:"route_id"` ReplacementRouteID string `json:"replacement_route_id,omitempty"` RebuildRequestID string `json:"rebuild_request_id"` RebuildStatus string `json:"rebuild_status"` RebuildReason string `json:"rebuild_reason,omitempty"` RebuildAttempt int `json:"rebuild_attempt,omitempty"` DecisionSource string `json:"decision_source"` Outcome string `json:"outcome"` Generation string `json:"generation,omitempty"` PolicyFingerprint string `json:"policy_fingerprint,omitempty"` ObservedPolicyFingerprint string `json:"observed_policy_fingerprint,omitempty"` ObservedRouteGeneration string `json:"observed_route_generation,omitempty"` EffectiveRouteGeneration string `json:"effective_route_generation,omitempty"` FeedbackStatus string `json:"feedback_status,omitempty"` FeedbackObservationID string `json:"feedback_observation_id,omitempty"` FeedbackSource string `json:"feedback_source,omitempty"` FeedbackObservedAt *time.Time `json:"feedback_observed_at,omitempty"` FeedbackExpiresAt *time.Time `json:"feedback_expires_at,omitempty"` FeedbackChannelID string `json:"feedback_channel_id,omitempty"` FeedbackResourceID string `json:"feedback_resource_id,omitempty"` FeedbackViolationStatus string `json:"feedback_violation_status,omitempty"` FeedbackViolationReason string `json:"feedback_violation_reason,omitempty"` FeedbackScoreAdjustment int `json:"feedback_score_adjustment,omitempty"` FeedbackEffectiveScoreAdjustment int `json:"feedback_effective_score_adjustment,omitempty"` FeedbackReasons []string `json:"feedback_reasons,omitempty"` LastError string `json:"last_error,omitempty"` ConsecutiveFailures int `json:"consecutive_failures,omitempty"` StallCount int `json:"stall_count,omitempty"` LastSendDurationMs int64 `json:"last_send_duration_ms,omitempty"` QualityWindowSampleCount int `json:"quality_window_sample_count,omitempty"` QualityWindowFailureCount int `json:"quality_window_failure_count,omitempty"` QualityWindowDropCount int `json:"quality_window_drop_count,omitempty"` QualityWindowSlowCount int `json:"quality_window_slow_count,omitempty"` OldHops []string `json:"old_hops,omitempty"` ReplacementHops []string `json:"replacement_hops,omitempty"` NodeTransitionStatus string `json:"node_transition_status,omitempty"` NodeTransitionGeneration string `json:"node_transition_generation,omitempty"` NodeTransitionObservedAt string `json:"node_transition_observed_at,omitempty"` NodeTransitionMatched bool `json:"node_transition_matched,omitempty"` NodeRouteGenerationStatus string `json:"node_route_generation_status,omitempty"` NodeRouteGenerationAppliedAt string `json:"node_route_generation_applied_at,omitempty"` NodeRouteGenerationWithdrawnAt string `json:"node_route_generation_withdrawn_at,omitempty"` NodeRouteGenerationMatched bool `json:"node_route_generation_matched,omitempty"` PostRebuildSelectedRouteID string `json:"post_rebuild_selected_route_id,omitempty"` PostRebuildSendPackets uint64 `json:"post_rebuild_send_packets,omitempty"` PostRebuildSendFailures uint64 `json:"post_rebuild_send_failures,omitempty"` PostRebuildSendFlowPackets uint64 `json:"post_rebuild_send_flow_packets,omitempty"` PostRebuildSendFlowDropped uint64 `json:"post_rebuild_send_flow_dropped,omitempty"` GuardStatus string `json:"guard_status,omitempty"` GuardSeverity string `json:"guard_severity,omitempty"` GuardReason string `json:"guard_reason,omitempty"` GuardAgeSeconds int64 `json:"guard_age_seconds,omitempty"` GuardTransitionDeadlineSeconds int64 `json:"guard_transition_deadline_seconds,omitempty"` GuardTrafficDeadlineSeconds int64 `json:"guard_traffic_deadline_seconds,omitempty"` AlertSilenced bool `json:"alert_silenced,omitempty"` AlertSilenceID string `json:"alert_silence_id,omitempty"` AlertSilenceReason string `json:"alert_silence_reason,omitempty"` AlertSilencedUntil *time.Time `json:"alert_silenced_until,omitempty"` AlertResurfaced bool `json:"alert_resurfaced,omitempty"` AlertResurfacedFromSilenceID string `json:"alert_resurfaced_from_silence_id,omitempty"` AlertResurfacedCause string `json:"alert_resurfaced_cause,omitempty"` AlertResurfacedPreviousRouteID string `json:"alert_resurfaced_previous_route_id,omitempty"` AlertResurfacedPreviousChannelID string `json:"alert_resurfaced_previous_channel_id,omitempty"` AlertResurfacedPreviousGeneration string `json:"alert_resurfaced_previous_generation,omitempty"` AlertResurfacedPreviousUntil *time.Time `json:"alert_resurfaced_previous_until,omitempty"` Timeline []FabricServiceChannelRouteRebuildTimelineEvent `json:"timeline,omitempty"` CorrelationSnapshotAt *time.Time `json:"correlation_snapshot_at,omitempty"` Payload json.RawMessage `json:"payload"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type FabricServiceChannelRouteRebuildHealthSummary struct { ClusterID string `json:"cluster_id"` ObservedAt time.Time `json:"observed_at"` WindowLimit int `json:"window_limit"` TotalAttempts int `json:"total_attempts"` GoodCount int `json:"good_count"` WarnCount int `json:"warn_count"` BadCount int `json:"bad_count"` UnknownCount int `json:"unknown_count"` ActiveBadCount int `json:"active_bad_count"` ActiveWarnCount int `json:"active_warn_count"` SilencedCount int `json:"silenced_count"` ResurfacedCount int `json:"resurfaced_count"` AppliedCount int `json:"applied_count"` PendingCount int `json:"pending_count"` AccessRouteDecisionCount int `json:"access_route_decision_count,omitempty"` AccessReplacementCount int `json:"access_replacement_count,omitempty"` AccessAppliedCount int `json:"access_applied_count,omitempty"` AccessRecoveryCount int `json:"access_recovery_count,omitempty"` AccessNoSafeCount int `json:"access_no_safe_count,omitempty"` CountsByGuardStatus map[string]int `json:"counts_by_guard_status,omitempty"` CountsByGuardSeverity map[string]int `json:"counts_by_guard_severity,omitempty"` FeedbackBreakdowns []FabricServiceChannelRouteRebuildFeedbackHealthBreakdown `json:"feedback_breakdowns,omitempty"` AffectedReporterNodeIDs []string `json:"affected_reporter_node_ids,omitempty"` AffectedRouteIDs []string `json:"affected_route_ids,omitempty"` MostRecentBadAttempts []FabricServiceChannelRouteRebuildAttempt `json:"most_recent_bad_attempts,omitempty"` ResurfacedAttempts []FabricServiceChannelRouteRebuildAttempt `json:"resurfaced_attempts,omitempty"` RecommendedOperatorAction string `json:"recommended_operator_action,omitempty"` } type FabricServiceChannelRouteRebuildFeedbackHealthBreakdown struct { FeedbackSource string `json:"feedback_source,omitempty"` FeedbackChannelID string `json:"feedback_channel_id,omitempty"` FeedbackViolationStatus string `json:"feedback_violation_status,omitempty"` TotalCount int `json:"total_count"` GoodCount int `json:"good_count,omitempty"` WarnCount int `json:"warn_count,omitempty"` BadCount int `json:"bad_count,omitempty"` UnknownCount int `json:"unknown_count,omitempty"` ActiveWarnCount int `json:"active_warn_count,omitempty"` ActiveBadCount int `json:"active_bad_count,omitempty"` SilencedCount int `json:"silenced_count,omitempty"` LatestObservedAt time.Time `json:"latest_observed_at,omitempty"` AffectedReporterNodeIDs []string `json:"affected_reporter_node_ids,omitempty"` AffectedRouteIDs []string `json:"affected_route_ids,omitempty"` } type FabricServiceChannelReadiness struct { ClusterID string `json:"cluster_id"` ObservedAt time.Time `json:"observed_at"` Status string `json:"status"` Reason string `json:"reason"` ActiveAlertCount int `json:"active_alert_count"` ActiveBadCount int `json:"active_bad_count"` ActiveWarnCount int `json:"active_warn_count"` ResurfacedCount int `json:"resurfaced_count"` SilencedCount int `json:"silenced_count"` MissingTransitionCount int `json:"missing_transition_count"` MissingRouteGenerationCount int `json:"missing_route_generation_count"` MissingPostTrafficCount int `json:"missing_post_rebuild_traffic_count"` UnexpectedRouteCount int `json:"unexpected_route_count"` PostRebuildDegradedCount int `json:"post_rebuild_degraded_count"` BlockingReasons []string `json:"blocking_reasons,omitempty"` DegradedReasons []string `json:"degraded_reasons,omitempty"` RecommendedOperatorAction string `json:"recommended_operator_action,omitempty"` } type FabricServiceChannelSchemaStatus struct { ClusterID string `json:"cluster_id"` ObservedAt time.Time `json:"observed_at"` Status string `json:"status"` Reason string `json:"reason"` RequiredMigration string `json:"required_migration"` RequiredCheckCount int `json:"required_check_count"` PassedCheckCount int `json:"passed_check_count"` MissingCheckCount int `json:"missing_check_count"` RequiredChecks []FabricServiceChannelSchemaCheck `json:"required_checks"` MissingChecks []FabricServiceChannelSchemaCheck `json:"missing_checks,omitempty"` RecommendedOperatorAction string `json:"recommended_operator_action,omitempty"` } type FabricServiceChannelSchemaCheck struct { CheckID string `json:"check_id"` RelationName string `json:"relation_name"` ColumnName string `json:"column_name,omitempty"` Status string `json:"status"` RequiredBy string `json:"required_by"` } type FabricServiceChannelRebuildSnapshotWarmup struct { ClusterID string `json:"cluster_id"` ObservedAt time.Time `json:"observed_at"` WindowLimit int `json:"window_limit"` StaleAfterSeconds int64 `json:"stale_after_seconds"` ScannedCount int `json:"scanned_count"` WarmedCount int `json:"warmed_count"` AlreadyFreshCount int `json:"already_fresh_count"` MissingSnapshotCount int `json:"missing_snapshot_count"` StaleSnapshotCount int `json:"stale_snapshot_count"` DeferredStaleCount int `json:"deferred_stale_count"` ErrorCount int `json:"error_count"` Status string `json:"status"` Reason string `json:"reason"` RecommendedOperatorAction string `json:"recommended_operator_action,omitempty"` } type FabricServiceChannelRebuildSnapshotMaintenanceHealth struct { ClusterID string `json:"cluster_id"` ObservedAt time.Time `json:"observed_at"` Status string `json:"status"` Reason string `json:"reason"` WindowLimit int `json:"window_limit"` MinAgeSeconds int64 `json:"min_age_seconds"` HeartbeatThreshold int `json:"heartbeat_threshold"` RecentAttemptCount int `json:"recent_attempt_count"` ValidSnapshotCount int `json:"valid_snapshot_count"` MissingSnapshotCount int `json:"missing_snapshot_count"` OverdueMissingSnapshotCount int `json:"overdue_missing_snapshot_count"` AutoWarmupEventCount int `json:"auto_warmup_event_count"` AutoWarmupWarmedCount int `json:"auto_warmup_warmed_count"` AutoWarmupAlreadyFreshCount int `json:"auto_warmup_already_fresh_count"` AutoWarmupErrorCount int `json:"auto_warmup_error_count"` LatestAutoWarmupAt *time.Time `json:"latest_auto_warmup_at,omitempty"` Nodes []FabricServiceChannelRebuildSnapshotNodeHealth `json:"nodes,omitempty"` OverdueMissingSnapshotAttempts []FabricServiceChannelRouteRebuildAttempt `json:"overdue_missing_snapshot_attempts,omitempty"` RecommendedOperatorAction string `json:"recommended_operator_action,omitempty"` } type FabricServiceChannelRebuildSnapshotNodeHealth struct { NodeID string `json:"node_id"` RecentAttemptCount int `json:"recent_attempt_count"` ValidSnapshotCount int `json:"valid_snapshot_count"` MissingSnapshotCount int `json:"missing_snapshot_count"` OverdueMissingSnapshotCount int `json:"overdue_missing_snapshot_count"` HeartbeatAfterAttemptCount int `json:"heartbeat_after_attempt_count"` LastHeartbeatAt *time.Time `json:"last_heartbeat_at,omitempty"` AutoWarmupEventCount int `json:"auto_warmup_event_count"` AutoWarmupWarmedCount int `json:"auto_warmup_warmed_count"` AutoWarmupErrorCount int `json:"auto_warmup_error_count"` LatestAutoWarmupAt *time.Time `json:"latest_auto_warmup_at,omitempty"` } type FabricServiceChannelRouteRebuildIncident struct { Fingerprint string `json:"fingerprint"` ClusterID string `json:"cluster_id"` ReporterNodeID string `json:"reporter_node_id"` RouteID string `json:"route_id"` ServiceClass string `json:"service_class"` Generation string `json:"generation,omitempty"` IncidentSource string `json:"incident_source,omitempty"` ChannelID string `json:"channel_id,omitempty"` GuardStatus string `json:"guard_status"` GuardSeverity string `json:"guard_severity"` GuardReason string `json:"guard_reason,omitempty"` AttemptCount int `json:"attempt_count"` FirstSeenAt time.Time `json:"first_seen_at"` LastSeenAt time.Time `json:"last_seen_at"` LatestReplacementRouteID string `json:"latest_replacement_route_id,omitempty"` LatestRebuildStatus string `json:"latest_rebuild_status,omitempty"` LatestOutcome string `json:"latest_outcome,omitempty"` AlertSilenced bool `json:"alert_silenced,omitempty"` AlertResurfaced bool `json:"alert_resurfaced,omitempty"` AlertResurfacedFromSilenceID string `json:"alert_resurfaced_from_silence_id,omitempty"` AlertResurfacedCause string `json:"alert_resurfaced_cause,omitempty"` AlertResurfacedPreviousRouteID string `json:"alert_resurfaced_previous_route_id,omitempty"` AlertResurfacedPreviousChannelID string `json:"alert_resurfaced_previous_channel_id,omitempty"` AlertResurfacedPreviousGeneration string `json:"alert_resurfaced_previous_generation,omitempty"` AlertResurfacedPreviousUntil *time.Time `json:"alert_resurfaced_previous_until,omitempty"` RecommendedOperatorAction string `json:"recommended_operator_action,omitempty"` } type FabricServiceChannelRouteRebuildAlertSilence struct { ID string `json:"id"` ClusterID string `json:"cluster_id"` IncidentSource string `json:"incident_source,omitempty"` ChannelID string `json:"channel_id,omitempty"` ReporterNodeID string `json:"reporter_node_id"` RouteID string `json:"route_id"` DisplayRouteID string `json:"display_route_id,omitempty"` GuardStatus string `json:"guard_status"` Generation string `json:"generation,omitempty"` Reason string `json:"reason,omitempty"` CreatedByUserID *string `json:"created_by_user_id,omitempty"` CreatedAt time.Time `json:"created_at"` ExpiresAt time.Time `json:"expires_at"` Payload json.RawMessage `json:"payload"` } type FabricServiceChannelRouteRebuildTimelineEvent struct { Stage string `json:"stage"` Status string `json:"status"` At string `json:"at,omitempty"` RouteID string `json:"route_id,omitempty"` Generation string `json:"generation,omitempty"` Payload json.RawMessage `json:"payload,omitempty"` } type ClusterAuthorityState struct { ClusterID string `json:"cluster_id"` AuthorityState string `json:"authority_state"` MutationMode string `json:"mutation_mode"` Term int64 `json:"term"` Notes *string `json:"notes,omitempty"` UpdatedByUserID *string `json:"updated_by_user_id,omitempty"` UpdatedAt time.Time `json:"updated_at"` } type ClusterSignature = clusterauth.Signature type ClusterAuthorityDescriptor struct { SchemaVersion string `json:"schema_version"` ClusterID string `json:"cluster_id"` AuthorityState string `json:"authority_state"` KeyAlgorithm string `json:"key_algorithm"` PublicKey string `json:"public_key"` PublicKeyFingerprint string `json:"public_key_fingerprint"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type ClusterAuthorityKey struct { ClusterAuthorityDescriptor PrivateKey string `json:"-"` } type ClusterAdminSummary struct { ClusterID string `json:"cluster_id"` Slug string `json:"slug"` Name string `json:"name"` Status string `json:"status"` Region *string `json:"region,omitempty"` AuthorityState string `json:"authority_state"` MutationMode string `json:"mutation_mode"` ClusterKeyAlgorithm *string `json:"cluster_key_algorithm,omitempty"` ClusterKeyFingerprint *string `json:"cluster_key_fingerprint,omitempty"` NodeCount int64 `json:"node_count"` HealthyNodeCount int64 `json:"healthy_node_count"` PendingJoinCount int64 `json:"pending_join_count"` ActiveRoleAssignmentCount int64 `json:"active_role_assignment_count"` LastNodeSeenAt *time.Time `json:"last_node_seen_at,omitempty"` } type ClusterAuditEvent struct { ID string `json:"id"` ClusterID *string `json:"cluster_id,omitempty"` ActorUserID *string `json:"actor_user_id,omitempty"` EventType string `json:"event_type"` TargetType string `json:"target_type"` TargetID *string `json:"target_id,omitempty"` Payload json.RawMessage `json:"payload"` CorrelationHints *ClusterAuditCorrelationHints `json:"correlation_hints,omitempty"` CreatedAt time.Time `json:"created_at"` } type ClusterAuditCorrelationHints struct { Scope string `json:"scope,omitempty"` CurrentDiagnosticStatus string `json:"current_diagnostic_status,omitempty"` BreadcrumbStatus string `json:"breadcrumb_status,omitempty"` BreadcrumbAgeSeconds int64 `json:"breadcrumb_age_seconds,omitempty"` BreadcrumbCurrentWindow int64 `json:"breadcrumb_current_window_seconds,omitempty"` BreadcrumbHistoryWindow int64 `json:"breadcrumb_history_window_seconds,omitempty"` FeedbackBreakdown *FabricServiceChannelRouteRebuildFeedbackHealthBreakdown `json:"feedback_breakdown,omitempty"` RebuildIncident *FabricServiceChannelRouteRebuildIncident `json:"rebuild_incident,omitempty"` RecommendedAction string `json:"recommended_action,omitempty"` } type ClusterAuditSummary struct { TotalCount int `json:"total_count"` CountsByEventType map[string]int `json:"counts_by_event_type,omitempty"` CountsByTargetType map[string]int `json:"counts_by_target_type,omitempty"` CountsByCurrentDiagnosticStatus map[string]int `json:"counts_by_current_diagnostic_status,omitempty"` CountsByFeedbackSource map[string]int `json:"counts_by_feedback_source,omitempty"` CountsByFeedbackViolationStatus map[string]int `json:"counts_by_feedback_violation_status,omitempty"` CountsByBreadcrumbStatus map[string]int `json:"counts_by_breadcrumb_status,omitempty"` CorrelatedCount int `json:"correlated_count,omitempty"` NotVisibleCount int `json:"not_visible_count,omitempty"` LatestAt time.Time `json:"latest_at,omitempty"` } type ListAuditEventsInput struct { ClusterID string EventTypes []string TargetTypes []string Correlation string Limit int } type FabricServiceChannelRebuildInvestigationBreadcrumbs struct { ClusterID string `json:"cluster_id"` Events []ClusterAuditEvent `json:"events"` Summary ClusterAuditSummary `json:"summary"` CurrentWindowSeconds int64 `json:"current_window_seconds"` HistoryWindowSeconds int64 `json:"history_window_seconds"` CurrentCount int `json:"current_count"` StaleCount int `json:"stale_count"` ExpiredCount int `json:"expired_count"` } type ListFabricServiceChannelRebuildInvestigationBreadcrumbsInput struct { ClusterID string Limit int CurrentWindowSeconds int64 HistoryWindowSeconds int64 } type FabricTestingFlag struct { ID string `json:"id"` ScopeType string `json:"scope_type"` ScopeID *string `json:"scope_id,omitempty"` ClusterID *string `json:"cluster_id,omitempty"` Enabled bool `json:"enabled"` TelemetryEnabled bool `json:"telemetry_enabled"` SyntheticLinksEnabled bool `json:"synthetic_links_enabled"` HistoryRetentionHours int `json:"history_retention_hours"` Metadata json.RawMessage `json:"metadata"` UpdatedByUserID *string `json:"updated_by_user_id,omitempty"` UpdatedAt time.Time `json:"updated_at"` } type EffectiveNodeTestingFlags struct { Enabled bool `json:"enabled"` TelemetryEnabled bool `json:"telemetry_enabled"` SyntheticLinksEnabled bool `json:"synthetic_links_enabled"` HistoryRetentionHours int `json:"history_retention_hours"` AppliedScopes []string `json:"applied_scopes"` Metadata json.RawMessage `json:"metadata"` } type NodeTelemetryObservation struct { ID string `json:"id"` ClusterID string `json:"cluster_id"` NodeID string `json:"node_id"` CPUPercent *float64 `json:"cpu_percent,omitempty"` MemoryUsedBytes *int64 `json:"memory_used_bytes,omitempty"` MemoryTotalBytes *int64 `json:"memory_total_bytes,omitempty"` DiskUsedBytes *int64 `json:"disk_used_bytes,omitempty"` DiskTotalBytes *int64 `json:"disk_total_bytes,omitempty"` NetworkRxBytes *int64 `json:"network_rx_bytes,omitempty"` NetworkTxBytes *int64 `json:"network_tx_bytes,omitempty"` ProcessCount *int `json:"process_count,omitempty"` Payload json.RawMessage `json:"payload"` ObservedAt time.Time `json:"observed_at"` } type VPNConnection struct { ID string `json:"id"` ClusterID string `json:"cluster_id"` OrganizationID string `json:"organization_id"` Name string `json:"name"` TargetEndpoint json.RawMessage `json:"target_endpoint"` ProtocolFamily string `json:"protocol_family"` CredentialRef *string `json:"credential_ref,omitempty"` Mode string `json:"mode"` DesiredState string `json:"desired_state"` AllowedNodePolicy json.RawMessage `json:"allowed_node_policy"` RoutingUsage json.RawMessage `json:"routing_usage"` RoutePolicy json.RawMessage `json:"route_policy"` QoSPolicy json.RawMessage `json:"qos_policy"` PlacementPolicy json.RawMessage `json:"placement_policy"` Status string `json:"status"` Metadata json.RawMessage `json:"metadata"` CreatedByUserID *string `json:"created_by_user_id,omitempty"` UpdatedByUserID *string `json:"updated_by_user_id,omitempty"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type VPNConnectionAllowedNode struct { VPNConnectionID string `json:"vpn_connection_id"` ClusterID string `json:"cluster_id"` NodeID string `json:"node_id"` RolePreference string `json:"role_preference"` Status string `json:"status"` Metadata json.RawMessage `json:"metadata"` CreatedByUserID *string `json:"created_by_user_id,omitempty"` CreatedAt time.Time `json:"created_at"` } type VPNConnectionRoutePolicy struct { ID string `json:"id"` VPNConnectionID string `json:"vpn_connection_id"` ClusterID string `json:"cluster_id"` OrganizationID string `json:"organization_id"` RouteType string `json:"route_type"` Destination string `json:"destination"` Action string `json:"action"` ServiceType *string `json:"service_type,omitempty"` Priority int `json:"priority"` Policy json.RawMessage `json:"policy"` Status string `json:"status"` CreatedByUserID *string `json:"created_by_user_id,omitempty"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } type VPNConnectionLease struct { ID string `json:"id"` VPNConnectionID string `json:"vpn_connection_id"` ClusterID string `json:"cluster_id"` OwnerNodeID string `json:"owner_node_id"` LeaseGeneration int64 `json:"lease_generation"` FencingToken string `json:"fencing_token"` Status string `json:"status"` AcquiredAt time.Time `json:"acquired_at"` RenewedAt time.Time `json:"renewed_at"` ExpiresAt time.Time `json:"expires_at"` ReleasedAt *time.Time `json:"released_at,omitempty"` FencedAt *time.Time `json:"fenced_at,omitempty"` Metadata json.RawMessage `json:"metadata"` } type VPNLeaseOwnerEligibility struct { VPNConnectionID string `json:"vpn_connection_id"` ClusterID string `json:"cluster_id"` OrganizationID string `json:"organization_id"` OwnerNodeID string `json:"owner_node_id"` MembershipStatus string `json:"membership_status"` NodeRegistrationStatus string `json:"node_registration_status"` AllowedByPolicy bool `json:"allowed_by_policy"` HasAuthorizedRole bool `json:"has_authorized_role"` } type NodeVPNAssignmentLease struct { LeaseID string `json:"lease_id"` OwnerNodeID string `json:"owner_node_id"` LeaseGeneration int64 `json:"lease_generation"` Status string `json:"status"` RenewedAt time.Time `json:"renewed_at"` ExpiresAt time.Time `json:"expires_at"` } type NodeVPNAssignment struct { VPNConnectionID string `json:"vpn_connection_id"` ClusterID string `json:"cluster_id"` OrganizationID string `json:"organization_id"` Name string `json:"name"` TargetEndpoint json.RawMessage `json:"target_endpoint"` ProtocolFamily string `json:"protocol_family"` Mode string `json:"mode"` DesiredState string `json:"desired_state"` RoutingUsage json.RawMessage `json:"routing_usage"` RoutePolicy json.RawMessage `json:"route_policy"` QoSPolicy json.RawMessage `json:"qos_policy"` PlacementPolicy json.RawMessage `json:"placement_policy"` Status string `json:"status"` HasCredentialRef bool `json:"has_credential_ref"` AssignmentReason string `json:"assignment_reason"` ActiveLease *NodeVPNAssignmentLease `json:"active_lease,omitempty"` UpdatedAt time.Time `json:"updated_at"` } type NodeVPNAssignmentStatus struct { ID string `json:"id"` VPNConnectionID string `json:"vpn_connection_id"` ClusterID string `json:"cluster_id"` NodeID string `json:"node_id"` ObservedStatus string `json:"observed_status"` StatusPayload json.RawMessage `json:"status_payload"` ObservedAt time.Time `json:"observed_at"` } type VPNClientProfile struct { SchemaVersion string `json:"schema_version"` ClusterID string `json:"cluster_id"` OrganizationID string `json:"organization_id"` UserID string `json:"user_id"` Connections []VPNClientConnection `json:"connections"` GeneratedAt time.Time `json:"generated_at"` } type VPNClientConnection struct { ID string `json:"id"` Name string `json:"name"` ProtocolFamily string `json:"protocol_family"` Mode string `json:"mode"` DesiredState string `json:"desired_state"` Status string `json:"status"` TargetEndpoint json.RawMessage `json:"target_endpoint"` RoutingUsage json.RawMessage `json:"routing_usage"` RoutePolicy json.RawMessage `json:"route_policy"` QoSPolicy json.RawMessage `json:"qos_policy"` PlacementPolicy json.RawMessage `json:"placement_policy"` AllowedNodeIDs []string `json:"allowed_node_ids"` EntryNodeIDs []string `json:"entry_node_ids"` ExitNodeID string `json:"exit_node_id,omitempty"` ActiveLease *NodeVPNAssignmentLease `json:"active_lease,omitempty"` RoutePolicies json.RawMessage `json:"route_policies"` ClientConfig json.RawMessage `json:"client_config"` } type CreateClusterInput struct { ActorUserID string Slug string Name string Region *string Metadata json.RawMessage } type UpdateClusterInput struct { ActorUserID string ClusterID string Name string Status string Region *string Metadata json.RawMessage } type CreateJoinTokenInput struct { ActorUserID string ClusterID string Scope json.RawMessage ExpiresAt time.Time MaxUses int } type CreateJoinRequestInput struct { ClusterID string JoinToken string NodeName string NodeFingerprint string PublicKey string ReportedCapabilities json.RawMessage ReportedFacts json.RawMessage RequestedRoles json.RawMessage } type GetJoinRequestBootstrapInput struct { ClusterID string JoinRequestID string NodeFingerprint string PublicKey string } type ApproveJoinRequestInput struct { ActorUserID string ClusterID string JoinRequestID string NodeKey string OwnershipType string OwnerOrganizationID *string NodeGroupID *string } type ApprovedJoinRequest struct { JoinRequest NodeJoinRequest `json:"join_request"` Bootstrap NodeBootstrap `json:"node_bootstrap"` } type JoinRequestBootstrapResult struct { Status string `json:"status"` JoinRequest NodeJoinRequest `json:"join_request"` Bootstrap *NodeBootstrap `json:"node_bootstrap,omitempty"` } type RejectJoinRequestInput struct { ActorUserID string ClusterID string JoinRequestID string Reason string } type AssignNodeRoleInput struct { ActorUserID string ClusterID string NodeID string OrganizationID *string Role string Status string Policy json.RawMessage } type AttachExistingNodeInput struct { ActorUserID string ClusterID string NodeID string Roles []string } type CreateNodeGroupInput struct { ActorUserID string ClusterID string ParentGroupID *string Name string Description *string SortOrder int Metadata json.RawMessage } type AssignNodeGroupInput struct { ActorUserID string ClusterID string NodeID string GroupID *string } type RevokeJoinTokenInput struct { ActorUserID string ClusterID string TokenID string } type RevokeNodeIdentityInput struct { ActorUserID string ClusterID string NodeID string Reason string } type DisableMembershipInput struct { ActorUserID string ClusterID string NodeID string Reason string } type DeleteClusterNodeInput struct { ActorUserID string ClusterID string NodeID string Reason string } type RecordHeartbeatInput struct { ClusterID string NodeID string HealthStatus string ReportedVersion *string Capabilities json.RawMessage ServiceStates json.RawMessage Metadata json.RawMessage } type CreateReleaseVersionInput struct { ActorUserID string ClusterID string Product string Version string Channel string Status string Compatibility json.RawMessage Changelog *string Artifacts []ReleaseArtifactInput } type ReleaseArtifactInput struct { OS string `json:"os"` Arch string `json:"arch"` InstallType string `json:"install_type"` Kind string `json:"kind"` URL string `json:"url"` SHA256 string `json:"sha256"` SizeBytes int64 `json:"size_bytes"` Signature *string `json:"signature"` Metadata json.RawMessage `json:"metadata"` } type UpsertNodeUpdatePolicyInput struct { ActorUserID string ClusterID string NodeID string Product string Channel string TargetVersion *string Strategy string Enabled bool RollbackAllowed bool HealthWindowSec int } type GetNodeUpdatePlanInput struct { ClusterID string NodeID string Product string CurrentVersion string OS string Arch string InstallType string Channel string ArtifactOrigin string } type ReportNodeUpdateStatusInput struct { ClusterID string NodeID string Product string CurrentVersion string TargetVersion string Phase string Status string AttemptID string ErrorMessage *string RollbackVersion *string Payload json.RawMessage ObservedAt time.Time } type UpsertFabricTestingFlagInput struct { ActorUserID string ScopeType string ScopeID *string ClusterID *string Enabled bool TelemetryEnabled bool SyntheticLinksEnabled bool HistoryRetentionHours int Metadata json.RawMessage } type RecordNodeTelemetryInput struct { ClusterID string NodeID string CPUPercent *float64 MemoryUsedBytes *int64 MemoryTotalBytes *int64 DiskUsedBytes *int64 DiskTotalBytes *int64 NetworkRxBytes *int64 NetworkTxBytes *int64 ProcessCount *int Payload json.RawMessage ObservedAt time.Time } type SetDesiredWorkloadInput struct { ActorUserID string ClusterID string NodeID string ServiceType string DesiredState string Version *string RuntimeMode string ArtifactRef *string Config json.RawMessage Environment json.RawMessage } type ReportWorkloadStatusInput struct { ClusterID string NodeID string ServiceType string ReportedState string RuntimeMode string Version *string StatusPayload json.RawMessage } type ReportMeshLinkInput struct { ClusterID string SourceNodeID string TargetNodeID string LinkStatus string LatencyMs *int QualityScore *int Metadata json.RawMessage } type GetNodeSyntheticMeshConfigInput struct { ClusterID string NodeID string } type CreateRouteIntentInput struct { ActorUserID string ClusterID string SourceSelector json.RawMessage DestinationSelector json.RawMessage ServiceClass string Priority int Policy json.RawMessage } type RouteIntentLifecycleInput struct { ActorUserID string ClusterID string RouteIntentID string Reason string } type CreateFabricEntryPointInput struct { ActorUserID string ClusterID string Name string Status string EndpointType string PublicEndpoint *string Policy json.RawMessage Metadata json.RawMessage } type SetFabricEntryPointNodeInput struct { ActorUserID string ClusterID string EntryPointID string NodeID string Status string Priority int Metadata json.RawMessage } type CreateFabricEgressPoolInput struct { ActorUserID string ClusterID string Name string Status string Description *string RouteScope json.RawMessage Policy json.RawMessage Metadata json.RawMessage } type SetFabricEgressPoolNodeInput struct { ActorUserID string ClusterID string EgressPoolID string NodeID string Status string Priority int Metadata json.RawMessage } type IssueFabricServiceChannelLeaseInput struct { ActorUserID string ClusterID string OrganizationID string UserID string ResourceID string ServiceClass string EntryNodeIDs []string ExitNodeIDs []string PreferredEntryNodeID string PreferredExitNodeID string RequiredRoles []string AllowedChannels []string QoS json.RawMessage Failover json.RawMessage Metadata json.RawMessage TTL time.Duration BackendFallbackAllowed *bool } type UpdateFabricServiceChannelPoolPolicyInput struct { ActorUserID string ClusterID string EntryPoolNodeIDs []string ExitPoolNodeIDs []string PreferredEntryNodeID string PreferredExitNodeID string SelectionStrategy string RouteRebuild string EntryFailover string ExitFailover string BackendFallbackAllowed *bool StickySession *bool } type UpdateFabricServiceChannelBreadcrumbWindowPolicyInput struct { ActorUserID string ClusterID string CurrentWindowSeconds int64 HistoryWindowSeconds int64 } type IntrospectFabricServiceChannelLeaseInput struct { ClusterID string ChannelID string ResourceID string ServiceClass string ChannelClass string Token string EntryNodeID string RequestSourceIP string } type StoreFabricServiceChannelLeaseInput struct { Lease FabricServiceChannelLease TokenHash string } type ListFabricServiceChannelLeasesInput struct { ClusterID string ServiceClass string EntryNodeID string ResourceID string IncludeExpired bool Limit int Now time.Time } type CleanupFabricServiceChannelLeasesInput struct { ActorUserID string ClusterID string Limit int Now time.Time } type GetFabricServiceChannelAccessTelemetryInput struct { ClusterID string Limit int Now time.Time } type RecordFabricServiceChannelRouteFeedbackInput struct { ClusterID string ReporterNodeID string RouteID string ServiceClass string FeedbackStatus string ScoreAdjustment int Reasons []string LastError string ConsecutiveFailures int StallCount int LastSendDurationMs int64 Payload json.RawMessage ObservedAt time.Time ExpiresAt time.Time } type ListFabricServiceChannelRouteFeedbackInput struct { ClusterID string ReporterNodeID string RouteID string ServiceClass string FeedbackStatus string Now time.Time IncludeExpired bool } type RecordFabricServiceChannelRouteRebuildAttemptInput struct { ClusterID string ReporterNodeID string ServiceClass string RouteID string ReplacementRouteID string RebuildRequestID string RebuildStatus string RebuildReason string RebuildAttempt int DecisionSource string Outcome string Generation string PolicyFingerprint string ObservedPolicyFingerprint string ObservedRouteGeneration string EffectiveRouteGeneration string FeedbackStatus string FeedbackObservationID string FeedbackSource string FeedbackObservedAt *time.Time FeedbackExpiresAt *time.Time FeedbackChannelID string FeedbackResourceID string FeedbackViolationStatus string FeedbackViolationReason string FeedbackScoreAdjustment int FeedbackEffectiveScoreAdjustment int FeedbackReasons []string LastError string ConsecutiveFailures int StallCount int LastSendDurationMs int64 QualityWindowSampleCount int QualityWindowFailureCount int QualityWindowDropCount int QualityWindowSlowCount int OldHops []string ReplacementHops []string Payload json.RawMessage } type ListFabricServiceChannelRouteRebuildAttemptsInput struct { ClusterID string ReporterNodeID string RouteID string ReplacementRouteID string ServiceClass string RebuildStatus string RebuildRequestID string Generation string FeedbackSource string FeedbackChannelID string FeedbackViolationStatus string EnrichmentMode string UseCachedSnapshot bool Limit int Offset int } type UpdateFabricServiceChannelRouteRebuildCorrelationSnapshotInput struct { ID string NodeTransitionStatus string NodeTransitionGeneration string NodeTransitionObservedAt string NodeTransitionMatched bool NodeRouteGenerationStatus string NodeRouteGenerationAppliedAt string NodeRouteGenerationWithdrawnAt string NodeRouteGenerationMatched bool PostRebuildSelectedRouteID string PostRebuildSendPackets uint64 PostRebuildSendFailures uint64 PostRebuildSendFlowPackets uint64 PostRebuildSendFlowDropped uint64 GuardStatus string GuardSeverity string GuardReason string GuardTransitionDeadlineSeconds int64 GuardTrafficDeadlineSeconds int64 Timeline []FabricServiceChannelRouteRebuildTimelineEvent CorrelationSnapshotAt time.Time } type GetFabricServiceChannelRouteRebuildHealthSummaryInput struct { ClusterID string Limit int } type GetFabricServiceChannelReadinessInput struct { ClusterID string Limit int } type GetFabricServiceChannelSchemaStatusInput struct { ClusterID string } type GetFabricServiceChannelRebuildSnapshotMaintenanceHealthInput struct { ClusterID string Limit int MinAgeSeconds int64 HeartbeatThreshold int } type WarmupFabricServiceChannelRebuildSnapshotsInput struct { ActorUserID string ClusterID string Limit int StaleAfterSeconds int64 Now time.Time } type ListFabricServiceChannelRouteRebuildIncidentsInput struct { ClusterID string Limit int } type RecordFabricServiceChannelRouteRebuildInvestigationInput struct { ActorUserID string ClusterID string ReporterNodeID string RouteID string ServiceClass string Generation string GuardStatus string IncidentID string FeedbackSource string FeedbackChannelID string FeedbackViolationStatus string DrilldownSource string Reason string Now time.Time } type SilenceFabricServiceChannelRouteRebuildAlertInput struct { ActorUserID string ClusterID string IncidentSource string ChannelID string ReporterNodeID string RouteID string GuardStatus string Generation string Reason string TTL time.Duration Now time.Time } type UnsilenceFabricServiceChannelRouteRebuildAlertInput struct { ActorUserID string ClusterID string SilenceID string Reason string Now time.Time } type ExpireFabricServiceChannelRouteFeedbackInput struct { ActorUserID string ClusterID string ReporterNodeID string RouteID string ServiceClass string Reason string Now time.Time } type UpdateFabricServiceChannelRecoveryPolicyInput struct { ActorUserID string ClusterID string HysteresisPenalty int PromotionMinSamples int DemotionFailureThreshold int DemotionDropThreshold int DemotionSlowThreshold int DemotionRebuildEnabled *bool DemotionFencedEnabled *bool } type UpdateFabricServiceChannelAdaptivePolicyInput struct { ActorUserID string ClusterID string MaxParallelWindow int BulkPressureChannelThreshold int QueuePressureHighWatermark int QueuePressureMaxInFlight int ClassWindows map[string]int } type ExpireFabricServiceChannelRouteFeedbackResult struct { ClusterID string `json:"cluster_id"` ReporterNodeID string `json:"reporter_node_id,omitempty"` RouteID string `json:"route_id"` ServiceClass string `json:"service_class,omitempty"` ExpiredCount int `json:"expired_count"` ExpiredAt time.Time `json:"expired_at"` CooldownUntil time.Time `json:"cooldown_until"` } type UpdateClusterAuthorityInput struct { ActorUserID string ClusterID string AuthorityState string MutationMode string Notes *string } type CreateVPNConnectionInput struct { ActorUserID string ClusterID string OrganizationID string Name string TargetEndpoint json.RawMessage ProtocolFamily string CredentialRef *string Mode string DesiredState string AllowedNodePolicy json.RawMessage RoutingUsage json.RawMessage RoutePolicy json.RawMessage QoSPolicy json.RawMessage PlacementPolicy json.RawMessage Metadata json.RawMessage } type UpdateVPNConnectionDesiredStateInput struct { ActorUserID string ClusterID string VPNConnectionID string DesiredState string } type UpsertVPNConnectionRoutePolicyInput struct { ActorUserID string ClusterID string VPNConnectionID string RouteType string Destination string Action string ServiceType *string Priority int Policy json.RawMessage Status string } type SetVPNConnectionAllowedNodesInput struct { ActorUserID string ClusterID string VPNConnectionID string NodeIDs []string RolePreference string Metadata json.RawMessage } type AcquireVPNConnectionLeaseInput struct { ActorUserID string ClusterID string VPNConnectionID string OwnerNodeID string TTL time.Duration Metadata json.RawMessage } type RenewVPNConnectionLeaseInput struct { ActorUserID string ClusterID string VPNConnectionID string LeaseID string OwnerNodeID string FencingToken string TTL time.Duration } type RenewNodeVPNAssignmentLeaseInput struct { ClusterID string VPNConnectionID string LeaseID string OwnerNodeID string TTL time.Duration } type AcquireNodeVPNAssignmentLeaseInput struct { ClusterID string VPNConnectionID string OwnerNodeID string TTL time.Duration Metadata json.RawMessage } type ReleaseVPNConnectionLeaseInput struct { ActorUserID string ClusterID string VPNConnectionID string LeaseID string OwnerNodeID string FencingToken string } type FenceVPNConnectionLeaseInput struct { ActorUserID string ClusterID string VPNConnectionID string LeaseID string Reason string } type ExpireStaleVPNConnectionLeasesInput struct { ActorUserID string ClusterID string } type ReportNodeVPNAssignmentStatusInput struct { ClusterID string NodeID string VPNConnectionID string ObservedStatus string StatusPayload json.RawMessage ObservedAt time.Time }