Files
rdp-proxy/backend/internal/modules/cluster/models.go
T
2026-05-18 21:33:39 +03:00

2705 lines
142 KiB
Go

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"
FabricServiceClassPlatformAdmin = "platform_admin"
FabricServiceClassClusterAdmin = "cluster_admin"
FabricServiceClassOrganization = "organization_portal"
FabricServiceClassUserPortal = "user_portal"
FabricChannelControl = "control"
FabricChannelInteractive = "interactive"
FabricChannelReliable = "reliable"
FabricChannelBulk = "bulk"
FabricChannelDroppable = "droppable"
)
var allowedNodeRoles = map[string]struct{}{
"public-ingress": {},
"admin-ingress": {},
"global-admin-runtime": {},
"cluster-admin-runtime": {},
"organization-portal-runtime": {},
"user-portal-runtime": {},
"identity-runtime": {},
"policy-authority": {},
"audit-sink": {},
"entry-node": {},
"relay-node": {},
"core-mesh": {},
"rdp-worker": {},
"vnc-worker": {},
"vpn-exit": {},
"vpn-connector": {},
"vpn-client": {},
"ipv4-egress": {},
"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"`
FabricRegistryRecords json.RawMessage `json:"fabric_registry_records,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"`
FabricRegistryRecords json.RawMessage `json:"fabric_registry_records,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"`
FabricRegistryRecords json.RawMessage `json:"fabric_registry_records,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"`
AuthorityQuorum *QuorumEnvelope `json:"authority_quorum,omitempty"`
ProductionForwarding bool `json:"production_forwarding"`
}
type NodeBridgeReplayProductPlan struct {
Product string `json:"product"`
RecoveryBridgeMode string `json:"recovery_bridge_mode,omitempty"`
RecoveryBridgeReplayReady bool `json:"recovery_bridge_replay_ready"`
LastStatusReason string `json:"last_status_reason,omitempty"`
UpdatePlan NodeUpdatePlan `json:"update_plan"`
}
type NodeBridgeReplayPlan struct {
SchemaVersion string `json:"schema_version"`
ClusterID string `json:"cluster_id"`
NodeID string `json:"node_id"`
NodeName string `json:"node_name,omitempty"`
HealthStatus string `json:"health_status,omitempty"`
HeartbeatStale bool `json:"heartbeat_stale"`
BridgeHoldRequired bool `json:"bridge_hold_required"`
RecoveryBridgeReplayReady bool `json:"recovery_bridge_replay_ready"`
BridgeHoldReasons []string `json:"bridge_hold_reasons,omitempty"`
BridgeActions []string `json:"bridge_actions,omitempty"`
Products []NodeBridgeReplayProductPlan `json:"products,omitempty"`
}
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 StaleNodeRiskReport struct {
ClusterID string `json:"cluster_id"`
GeneratedAt time.Time `json:"generated_at"`
HeartbeatStaleAfterSeconds int `json:"heartbeat_stale_after_seconds"`
LegacyRemovalAllowed bool `json:"legacy_removal_allowed"`
BridgeHoldRequired bool `json:"bridge_hold_required"`
BridgeHoldNodeIDs []string `json:"bridge_hold_node_ids,omitempty"`
BridgeHoldReasons []string `json:"bridge_hold_reasons,omitempty"`
BlockedOperations []string `json:"blocked_operations,omitempty"`
Nodes []StaleNodeRiskNode `json:"nodes"`
Summary StaleNodeRiskSummary `json:"summary"`
}
type StaleNodeRiskSummary struct {
TotalNodes int `json:"total_nodes"`
StaleNodes int `json:"stale_nodes"`
BlockedNodes int `json:"blocked_nodes"`
DirectPeerAlertNodes int `json:"direct_peer_alert_nodes"`
ArtifactGapNodes int `json:"artifact_gap_nodes"`
UnknownProfileNodes int `json:"unknown_profile_nodes"`
WaitingUpdateStatusNodes int `json:"waiting_update_status_nodes"`
UnknownVersionNodes int `json:"unknown_version_nodes"`
LegacyRecoveryContractNodes int `json:"legacy_recovery_contract_nodes"`
RecoveryBridgeRequiredNodes int `json:"recovery_bridge_required_nodes"`
RecoveryBridgeReplayReadyNodes int `json:"recovery_bridge_replay_ready_nodes"`
WaitingRecoveryHeartbeatNodes int `json:"waiting_recovery_heartbeat_nodes"`
}
type StaleNodeRiskNode struct {
NodeID string `json:"node_id"`
Name string `json:"name"`
RegistrationStatus string `json:"registration_status"`
HealthStatus string `json:"health_status"`
ReportedVersion *string `json:"reported_version,omitempty"`
LastSeenAt *time.Time `json:"last_seen_at,omitempty"`
HeartbeatStale bool `json:"heartbeat_stale"`
Blocked bool `json:"blocked"`
DirectPeerAlert bool `json:"direct_peer_alert"`
DirectPeerReadyCount int `json:"direct_peer_ready_count,omitempty"`
DirectPeerTargetCount int `json:"direct_peer_target_count,omitempty"`
DirectPeerDeficit int `json:"direct_peer_deficit,omitempty"`
Alerts []string `json:"alerts,omitempty"`
RecoveryBridgeRequired bool `json:"recovery_bridge_required"`
RecoveryBridgeReplayReady bool `json:"recovery_bridge_replay_ready"`
RecoveryBridgeActions []string `json:"recovery_bridge_actions,omitempty"`
Risks []string `json:"risks,omitempty"`
Products []StaleNodeRiskProduct `json:"products,omitempty"`
}
type StaleNodeRiskProduct struct {
Product string `json:"product"`
CurrentVersion string `json:"current_version,omitempty"`
TargetVersion *string `json:"target_version,omitempty"`
Channel string `json:"channel,omitempty"`
Strategy string `json:"strategy,omitempty"`
Enabled bool `json:"enabled"`
DetectedOS string `json:"detected_os,omitempty"`
DetectedArch string `json:"detected_arch,omitempty"`
DetectedInstallType string `json:"detected_install_type,omitempty"`
CompatibleArtifactFound bool `json:"compatible_artifact_found"`
MatchingReleaseVersion string `json:"matching_release_version,omitempty"`
LastStatusObservedAt *time.Time `json:"last_status_observed_at,omitempty"`
LastStatusPhase string `json:"last_status_phase,omitempty"`
LastStatusValue string `json:"last_status_value,omitempty"`
LastStatusReason string `json:"last_status_reason,omitempty"`
RecoveryBridgeRequired bool `json:"recovery_bridge_required"`
RecoveryBridgeReplayReady bool `json:"recovery_bridge_replay_ready"`
RecoveryBridgeMode string `json:"recovery_bridge_mode,omitempty"`
Risks []string `json:"risks,omitempty"`
}
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"`
ClusterAuthorityQuorum *QuorumDescriptor `json:"cluster_authority_quorum,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"`
AdvertiseEndpoints []string `json:"advertise_endpoints,omitempty"`
EndpointCandidates []PeerEndpointCandidate `json:"endpoint_candidates,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 QuorumEnvelope = clusterauth.QuorumEnvelope
type QuorumDescriptor = clusterauth.QuorumDescriptor
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:"-"`
Metadata json.RawMessage `json:"metadata,omitempty"`
QuorumDescriptor *QuorumDescriptor `json:"quorum_descriptor,omitempty"`
}
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"`
ExitPoolID string `json:"exit_pool_id,omitempty"`
ExitPoolName string `json:"exit_pool_name,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 GetStaleNodeRiskReportInput struct {
ActorUserID string
ClusterID string
}
type GetNodeBridgeReplayPlanInput struct {
ActorUserID string
ClusterID string
NodeID 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
}