Record project continuation changes

This commit is contained in:
2026-05-12 21:02:29 +03:00
parent 3059d1d7a3
commit 8f69d53193
339 changed files with 101111 additions and 1769 deletions
+886
View File
@@ -148,6 +148,8 @@ export type CreatedJoinToken = {
token: string;
};
export type NodeJoinToken = Omit<CreatedJoinToken, "token">;
export type RoleAssignment = {
id: string;
cluster_id: string;
@@ -168,9 +170,58 @@ export type AuditEvent = {
target_type: string;
target_id?: string | null;
payload: Record<string, unknown>;
correlation_hints?: AuditCorrelationHints;
created_at: string;
};
export type AuditCorrelationHints = {
scope?: string;
current_diagnostic_status?: string;
breadcrumb_status?: string;
breadcrumb_age_seconds?: number;
breadcrumb_current_window_seconds?: number;
breadcrumb_history_window_seconds?: number;
feedback_breakdown?: FabricServiceChannelRouteRebuildFeedbackHealthBreakdown;
rebuild_incident?: FabricServiceChannelRouteRebuildIncident;
recommended_action?: string;
};
export type AuditSummary = {
total_count: number;
counts_by_event_type?: Record<string, number>;
counts_by_target_type?: Record<string, number>;
counts_by_current_diagnostic_status?: Record<string, number>;
counts_by_feedback_source?: Record<string, number>;
counts_by_feedback_violation_status?: Record<string, number>;
counts_by_breadcrumb_status?: Record<string, number>;
correlated_count?: number;
not_visible_count?: number;
latest_at?: string;
};
export type FabricServiceChannelRebuildInvestigationBreadcrumbs = {
cluster_id: string;
events: AuditEvent[];
summary: AuditSummary;
current_window_seconds?: number;
history_window_seconds?: number;
current_count?: number;
stale_count?: number;
expired_count?: number;
};
export type FabricServiceChannelBreadcrumbWindowPolicy = {
schema_version: string;
fingerprint?: string;
current_window_seconds: number;
history_window_seconds: number;
source: string;
updated_by_user_id?: string | null;
updated_at?: string;
control_plane_only: boolean;
production_forwarding: boolean;
};
export type WorkloadStatus = {
id: string;
cluster_id: string;
@@ -239,6 +290,90 @@ export type NodeTelemetryObservation = {
observed_at: string;
};
export type ReleaseArtifact = {
id: string;
release_id: string;
cluster_id: string;
product: string;
version: string;
os: string;
arch: string;
install_type: string;
kind: string;
url: string;
sha256: string;
size_bytes: number;
signature?: string | null;
metadata?: Record<string, unknown>;
created_at: string;
};
export type ReleaseVersion = {
id: string;
cluster_id: string;
product: string;
version: string;
channel: string;
status: string;
compatibility?: Record<string, unknown>;
changelog?: string | null;
created_by_user_id?: string | null;
created_at: string;
artifacts?: ReleaseArtifact[];
authority_payload?: Record<string, unknown>;
authority_signature?: ClusterSignature;
};
export type NodeUpdatePlan = {
schema_version: string;
cluster_id: string;
node_id: string;
product: string;
current_version?: string;
action: string;
reason: string;
target_version?: string;
channel?: string;
strategy?: string;
rollback_allowed: boolean;
health_window_seconds?: number;
artifact?: ReleaseArtifact;
authority_payload?: Record<string, unknown>;
authority_signature?: ClusterSignature;
production_forwarding: boolean;
};
export type NodeUpdatePolicy = {
id: string;
cluster_id: string;
node_id: string;
product: string;
channel: string;
target_version?: string | null;
strategy: string;
enabled: boolean;
rollback_allowed: boolean;
health_window_seconds: number;
updated_by_user_id?: string | null;
updated_at: string;
};
export type NodeUpdateStatus = {
id: string;
cluster_id: string;
node_id: string;
product: string;
current_version?: string;
target_version?: string;
phase: string;
status: string;
attempt_id?: string;
error_message?: string | null;
rollback_version?: string | null;
payload?: Record<string, unknown>;
observed_at: string;
};
export type MeshLink = {
id: string;
cluster_id: string;
@@ -251,6 +386,23 @@ export type MeshLink = {
observed_at: string;
};
export type MeshRouteIntent = {
id: string;
cluster_id: string;
source_selector: Record<string, unknown>;
destination_selector: Record<string, unknown>;
service_class: string;
priority: number;
status: string;
lifecycle_status?: string;
is_expired?: boolean;
policy_expires_at?: string | null;
policy: Record<string, unknown>;
created_by_user_id?: string | null;
created_at: string;
updated_at: string;
};
export type PeerEndpointCandidate = {
endpoint_id: string;
node_id: string;
@@ -330,6 +482,19 @@ export type RendezvousRelayPolicyReport = {
export type RoutePathDecision = {
decision_id: string;
route_id: string;
replacement_route_id?: string;
rebuild_request_id?: string;
rebuild_status?: string;
rebuild_reason?: string;
rebuild_attempt?: number;
feedback_observation_id?: string;
feedback_source?: string;
feedback_observed_at?: string;
feedback_expires_at?: string;
feedback_channel_id?: string;
feedback_resource_id?: string;
feedback_violation_status?: string;
feedback_violation_reason?: string;
cluster_id: string;
local_node_id: string;
source_node_id: string;
@@ -357,8 +522,15 @@ export type RoutePathDecisionReport = {
schema_version: string;
decision_mode: string;
generation: string;
recovery_policy?: FabricServiceChannelRecoveryPolicy;
decision_count: number;
replacement_decision_count: number;
degraded_decision_count?: number;
rebuild_request_count?: number;
rebuild_applied_count?: number;
recovery_hysteresis_count?: number;
recovery_promoted_count?: number;
recovery_demoted_count?: number;
control_plane_only: boolean;
production_forwarding: boolean;
decisions?: RoutePathDecision[];
@@ -379,6 +551,620 @@ export type SyntheticMeshRoute = {
peer_directory_version?: string;
};
export type FabricServiceChannelRouteFeedbackObservation = {
id?: string;
cluster_id: string;
reporter_node_id: string;
route_id: string;
service_class: string;
feedback_status: string;
score_adjustment: number;
reasons?: string[];
last_error?: string;
consecutive_failures?: number;
stall_count?: number;
last_send_duration_ms?: number;
payload?: Record<string, unknown>;
observed_at: string;
expires_at: string;
retry_cooldown_until?: string;
recovery_state?: string;
recovery_hysteresis_active?: boolean;
recovery_hysteresis_penalty?: number;
recovery_promoted?: boolean;
recovery_demoted?: boolean;
recovery_reason?: string;
observed_policy_fingerprint?: string;
effective_policy_fingerprint?: string;
observed_route_generation?: string;
effective_route_generation?: string;
provenance_missing?: boolean;
stale_policy?: boolean;
stale_generation?: boolean;
stale_reason?: string;
};
export type FabricServiceChannelRouteRebuildAttempt = {
id: string;
cluster_id: string;
reporter_node_id: string;
service_class: string;
route_id: string;
replacement_route_id?: string;
rebuild_request_id: string;
rebuild_status: string;
rebuild_reason?: string;
rebuild_attempt?: number;
decision_source: string;
outcome: string;
generation?: string;
policy_fingerprint?: string;
observed_policy_fingerprint?: string;
observed_route_generation?: string;
effective_route_generation?: string;
feedback_status?: string;
feedback_observation_id?: string;
feedback_source?: string;
feedback_observed_at?: string;
feedback_expires_at?: string;
feedback_channel_id?: string;
feedback_resource_id?: string;
feedback_violation_status?: string;
feedback_violation_reason?: string;
feedback_score_adjustment?: number;
feedback_effective_score_adjustment?: number;
feedback_reasons?: string[];
last_error?: string;
consecutive_failures?: number;
stall_count?: number;
last_send_duration_ms?: number;
quality_window_sample_count?: number;
quality_window_failure_count?: number;
quality_window_drop_count?: number;
quality_window_slow_count?: number;
old_hops?: string[];
replacement_hops?: string[];
node_transition_status?: string;
node_transition_generation?: string;
node_transition_observed_at?: string;
node_transition_matched?: boolean;
node_route_generation_status?: string;
node_route_generation_applied_at?: string;
node_route_generation_withdrawn_at?: string;
node_route_generation_matched?: boolean;
post_rebuild_selected_route_id?: string;
post_rebuild_send_packets?: number;
post_rebuild_send_failures?: number;
post_rebuild_send_flow_packets?: number;
post_rebuild_send_flow_dropped?: number;
guard_status?: string;
guard_severity?: string;
guard_reason?: string;
guard_age_seconds?: number;
guard_transition_deadline_seconds?: number;
guard_traffic_deadline_seconds?: number;
alert_silenced?: boolean;
alert_silence_id?: string;
alert_silence_reason?: string;
alert_silenced_until?: string;
alert_resurfaced?: boolean;
alert_resurfaced_from_silence_id?: string;
alert_resurfaced_previous_generation?: string;
alert_resurfaced_previous_until?: string;
timeline?: FabricServiceChannelRouteRebuildTimelineEvent[];
payload?: Record<string, unknown>;
created_at: string;
updated_at: string;
};
export type FabricServiceChannelRouteRebuildTimelineEvent = {
stage: string;
status: string;
at?: string;
route_id?: string;
generation?: string;
payload?: Record<string, unknown>;
};
export type FabricServiceChannelRouteRebuildHealthSummary = {
cluster_id: string;
observed_at: string;
window_limit: number;
total_attempts: number;
good_count: number;
warn_count: number;
bad_count: number;
unknown_count: number;
active_bad_count: number;
active_warn_count: number;
silenced_count: number;
resurfaced_count: number;
applied_count: number;
pending_count: number;
access_route_decision_count?: number;
access_replacement_count?: number;
access_applied_count?: number;
access_recovery_count?: number;
access_no_safe_count?: number;
counts_by_guard_status?: Record<string, number>;
counts_by_guard_severity?: Record<string, number>;
feedback_breakdowns?: FabricServiceChannelRouteRebuildFeedbackHealthBreakdown[];
affected_reporter_node_ids?: string[];
affected_route_ids?: string[];
most_recent_bad_attempts?: FabricServiceChannelRouteRebuildAttempt[];
resurfaced_attempts?: FabricServiceChannelRouteRebuildAttempt[];
recommended_operator_action?: string;
};
export type FabricServiceChannelRouteRebuildFeedbackHealthBreakdown = {
feedback_source?: string;
feedback_channel_id?: string;
feedback_violation_status?: string;
total_count: number;
good_count?: number;
warn_count?: number;
bad_count?: number;
unknown_count?: number;
active_warn_count?: number;
active_bad_count?: number;
silenced_count?: number;
latest_observed_at?: string;
affected_reporter_node_ids?: string[];
affected_route_ids?: string[];
};
export type FabricServiceChannelReadiness = {
cluster_id: string;
observed_at: string;
status: string;
reason: string;
active_alert_count: number;
active_bad_count: number;
active_warn_count: number;
resurfaced_count: number;
silenced_count: number;
missing_transition_count: number;
missing_route_generation_count: number;
missing_post_rebuild_traffic_count: number;
unexpected_route_count: number;
post_rebuild_degraded_count: number;
blocking_reasons?: string[];
degraded_reasons?: string[];
recommended_operator_action?: string;
};
export type FabricServiceChannelSchemaStatus = {
cluster_id: string;
observed_at: string;
status: string;
reason: string;
required_migration: string;
required_check_count: number;
passed_check_count: number;
missing_check_count: number;
required_checks: FabricServiceChannelSchemaCheck[];
missing_checks?: FabricServiceChannelSchemaCheck[];
recommended_operator_action?: string;
};
export type FabricServiceChannelSchemaCheck = {
check_id: string;
relation_name: string;
column_name?: string;
status: string;
required_by: string;
};
export type FabricServiceChannelRebuildSnapshotWarmup = {
cluster_id: string;
observed_at: string;
window_limit: number;
stale_after_seconds: number;
scanned_count: number;
warmed_count: number;
already_fresh_count: number;
missing_snapshot_count: number;
stale_snapshot_count: number;
deferred_stale_count: number;
error_count: number;
status: string;
reason: string;
recommended_operator_action?: string;
};
export type FabricServiceChannelRebuildSnapshotMaintenanceHealth = {
cluster_id: string;
observed_at: string;
status: string;
reason: string;
window_limit: number;
min_age_seconds: number;
heartbeat_threshold: number;
recent_attempt_count: number;
valid_snapshot_count: number;
missing_snapshot_count: number;
overdue_missing_snapshot_count: number;
auto_warmup_event_count: number;
auto_warmup_warmed_count: number;
auto_warmup_already_fresh_count: number;
auto_warmup_error_count: number;
latest_auto_warmup_at?: string;
nodes?: FabricServiceChannelRebuildSnapshotNodeHealth[];
overdue_missing_snapshot_attempts?: FabricServiceChannelRouteRebuildAttempt[];
recommended_operator_action?: string;
};
export type FabricServiceChannelRebuildSnapshotNodeHealth = {
node_id: string;
recent_attempt_count: number;
valid_snapshot_count: number;
missing_snapshot_count: number;
overdue_missing_snapshot_count: number;
heartbeat_after_attempt_count: number;
last_heartbeat_at?: string;
auto_warmup_event_count: number;
auto_warmup_warmed_count: number;
auto_warmup_error_count: number;
latest_auto_warmup_at?: string;
};
export type FabricServiceChannelLeaseSummary = {
cluster_id: string;
channel_id: string;
resource_id?: string;
service_class: string;
status: string;
selected_entry_node_id?: string;
selected_exit_node_id?: string;
allowed_channels?: string[];
primary_route_id?: string;
primary_route_status?: string;
data_plane?: FabricServiceChannelDataPlaneContract;
force_backend_fallback: boolean;
expired: boolean;
issued_at: string;
expires_at: string;
created_at: string;
updated_at: string;
};
export type FabricServiceChannelLeaseMaintenance = {
schema_version: string;
cluster_id: string;
status: string;
reason: string;
observed_at: string;
active_count: number;
expired_count: number;
scanned_count: number;
deleted_expired_count?: number;
window_limit: number;
recommended_operator_action?: string;
leases?: FabricServiceChannelLeaseSummary[];
};
export type FabricServiceChannelDataPlaneContract = {
schema_version: string;
mode: string;
control_plane_transport: string;
working_data_transport: string;
steady_state_transport: string;
backend_relay_policy: string;
production_forwarding_required: boolean;
service_neutral: boolean;
protocol_agnostic: boolean;
logical_flow_mode: string;
required_flow_isolation_classes?: string[];
route_selection_strategy: string;
entry_failover_mode: string;
exit_failover_mode: string;
route_rebuild_mode: string;
failure_detection_source: string;
degraded_fallback_visibility: string;
stable_contract_for_service_class?: string;
};
export type FabricServiceChannelAccessTelemetryNode = {
node_id: string;
node_name?: string;
observed_at: string;
total_accepted: number;
signed_accepted: number;
introspection_accepted: number;
legacy_unsigned_accepted: number;
backend_fallback_count: number;
backend_fallback_blocked_count?: number;
fabric_route_send_failure_count?: number;
data_plane_contract_count?: number;
last_data_plane_mode?: string;
last_working_data_transport?: string;
last_steady_state_transport?: string;
last_backend_relay_policy?: string;
last_logical_flow_mode?: string;
last_data_plane_violation_status?: string;
last_data_plane_violation_reason?: string;
traffic_class_counts?: Record<string, number>;
flow_channel_count?: number;
flow_dropped?: number;
flow_high_watermark?: number;
flow_max_in_flight?: number;
flow_health_status?: string;
flow_health_reason?: string;
recommended_parallel_windows?: Record<string, number>;
adaptive_backpressure_active?: boolean;
adaptive_backpressure_reason?: string;
adaptive_policy_fingerprint?: string;
last_accepted_at?: string;
};
export type FabricServiceChannelAccessTelemetryChannel = {
channel_id: string;
resource_id?: string;
service_class: string;
status: string;
selected_entry_node_id?: string;
selected_exit_node_id?: string;
primary_route_id?: string;
primary_route_status?: string;
force_backend_fallback: boolean;
entry_node_total_accepted: number;
entry_node_introspection_accepted: number;
entry_node_backend_fallback_count: number;
entry_node_backend_fallback_blocked_count?: number;
entry_node_fabric_route_send_failure_count?: number;
entry_node_data_plane_contract_count?: number;
entry_node_last_data_plane_mode?: string;
entry_node_last_working_data_transport?: string;
entry_node_last_steady_state_transport?: string;
entry_node_last_backend_relay_policy?: string;
entry_node_last_logical_flow_mode?: string;
entry_node_last_data_plane_violation_status?: string;
entry_node_last_data_plane_violation_reason?: string;
entry_node_traffic_class_counts?: Record<string, number>;
entry_node_flow_channel_count?: number;
entry_node_flow_dropped?: number;
entry_node_flow_high_watermark?: number;
entry_node_flow_max_in_flight?: number;
entry_node_flow_health_status?: string;
entry_node_flow_health_reason?: string;
entry_node_recommended_parallel_windows?: Record<string, number>;
entry_node_adaptive_backpressure_active?: boolean;
entry_node_adaptive_backpressure_reason?: string;
entry_node_adaptive_policy_fingerprint?: string;
route_feedback_status?: string;
route_feedback_observed_at?: string;
route_feedback_score_adjustment?: number;
route_feedback_effective_score_adjustment?: number;
route_feedback_reasons?: string[];
route_quality_window_sample_count?: number;
route_quality_window_failure_count?: number;
route_quality_window_drop_count?: number;
route_quality_window_slow_count?: number;
last_send_duration_ms?: number;
remediation_action?: string;
remediation_reason?: string;
remediation_route_id?: string;
remediation_route_status?: string;
remediation_guard_status?: string;
remediation_guard_reason?: string;
remediation_execution_status?: string;
remediation_execution_reason?: string;
remediation_execution_generation?: string;
remediation_execution_observed_at?: string;
route_decision_source?: string;
route_decision_route_id?: string;
route_decision_replacement_route_id?: string;
route_decision_rebuild_status?: string;
route_decision_rebuild_reason?: string;
route_decision_generation?: string;
route_decision_score_reasons?: string[];
pool_policy_fingerprint?: string;
data_plane?: FabricServiceChannelDataPlaneContract;
remediation_command?: {
schema_version: string;
command_id: string;
action: string;
cluster_id: string;
channel_id: string;
resource_id?: string;
service_class: string;
entry_node_id?: string;
exit_node_id?: string;
primary_route_id?: string;
replacement_route_id?: string;
replacement_route_status?: string;
pool_policy_fingerprint?: string;
guard_status?: string;
guard_reason?: string;
execution_status?: string;
execution_reason?: string;
execution_generation?: string;
execution_observed_at?: string;
reason?: string;
operator_action?: string;
issued_at: string;
expires_at: string;
};
recommended_operator_action?: string;
expires_at: string;
};
export type FabricServiceChannelAccessTelemetry = {
schema_version: string;
cluster_id: string;
status: string;
reason: string;
observed_at: string;
node_count: number;
reporting_node_count: number;
total_accepted: number;
signed_accepted: number;
introspection_accepted: number;
legacy_unsigned_accepted: number;
backend_fallback_count: number;
backend_fallback_blocked_count?: number;
fabric_route_send_failure_count?: number;
data_plane_contract_count?: number;
last_data_plane_mode?: string;
last_working_data_transport?: string;
last_steady_state_transport?: string;
last_backend_relay_policy?: string;
last_logical_flow_mode?: string;
last_data_plane_violation_status?: string;
last_data_plane_violation_reason?: string;
active_channel_count: number;
degraded_fallback_channel_count: number;
correlated_route_count: number;
degraded_route_count: number;
route_decision_channel_count?: number;
replacement_decision_count?: number;
applied_rebuild_decision_count?: number;
recovery_decision_count?: number;
no_safe_recovery_decision_count?: number;
traffic_class_counts?: Record<string, number>;
flow_channel_count?: number;
flow_dropped?: number;
flow_high_watermark?: number;
flow_max_in_flight?: number;
flow_health_status?: string;
flow_health_reason?: string;
recommended_parallel_windows?: Record<string, number>;
adaptive_backpressure_active?: boolean;
adaptive_backpressure_reason?: string;
adaptive_policy_fingerprint?: string;
latest_accepted_at?: string;
nodes?: FabricServiceChannelAccessTelemetryNode[];
active_channels?: FabricServiceChannelAccessTelemetryChannel[];
recommended_operator_action?: string;
};
export type FabricServiceChannelRouteRebuildIncident = {
fingerprint: string;
cluster_id: string;
reporter_node_id: string;
route_id: string;
service_class: string;
generation?: string;
incident_source?: string;
channel_id?: string;
guard_status: string;
guard_severity: string;
guard_reason?: string;
attempt_count: number;
first_seen_at: string;
last_seen_at: string;
latest_replacement_route_id?: string;
latest_rebuild_status?: string;
latest_outcome?: string;
alert_silenced?: boolean;
alert_resurfaced?: boolean;
alert_resurfaced_from_silence_id?: string;
alert_resurfaced_cause?: string;
alert_resurfaced_previous_route_id?: string;
alert_resurfaced_previous_channel_id?: string;
alert_resurfaced_previous_generation?: string;
alert_resurfaced_previous_until?: string;
recommended_operator_action?: string;
};
export type FabricServiceChannelRouteRebuildAlertSilence = {
id: string;
cluster_id: string;
incident_source?: string;
channel_id?: string;
reporter_node_id: string;
route_id: string;
display_route_id?: string;
guard_status: string;
generation?: string;
reason?: string;
created_by_user_id?: string | null;
created_at: string;
expires_at: string;
payload?: Record<string, unknown>;
};
export type ExpireFabricServiceChannelRouteFeedbackResult = {
cluster_id: string;
reporter_node_id?: string;
route_id: string;
service_class?: string;
expired_count: number;
expired_at: string;
cooldown_until: string;
};
export type FabricServiceChannelRouteFeedbackReport = {
schema_version: string;
generated_at: string;
feedback_max_age_seconds: number;
recovery_policy?: FabricServiceChannelRecoveryPolicy;
observation_count: number;
fenced_route_count: number;
degraded_route_count: number;
healthy_route_count: number;
recovered_route_count?: number;
recovery_hysteresis_count?: number;
recovery_promoted_count?: number;
recovery_demoted_count?: number;
missing_provenance_count?: number;
stale_policy_count?: number;
stale_generation_count?: number;
observations?: FabricServiceChannelRouteFeedbackObservation[];
};
export type FabricServiceChannelRecoveryPolicy = {
schema_version: string;
fingerprint?: string;
hysteresis_penalty: number;
promotion_min_samples: number;
demotion_failure_threshold: number;
demotion_drop_threshold: number;
demotion_slow_threshold: number;
demotion_rebuild_enabled: boolean;
demotion_fenced_enabled: boolean;
source: string;
updated_by_user_id?: string | null;
updated_at?: string;
control_plane_only: boolean;
production_forwarding: boolean;
};
export type FabricServiceChannelAdaptivePolicy = {
schema_version: string;
fingerprint?: string;
max_parallel_window: number;
bulk_pressure_channel_threshold: number;
queue_pressure_high_watermark: number;
queue_pressure_max_in_flight: number;
class_windows: Record<string, number>;
source: string;
updated_by_user_id?: string | null;
updated_at?: string;
control_plane_only: boolean;
production_forwarding: boolean;
};
export type FabricServiceChannelPoolPolicy = {
schema_version: string;
fingerprint?: string;
entry_pool_node_ids?: string[];
exit_pool_node_ids?: string[];
preferred_entry_node_id?: string;
preferred_exit_node_id?: string;
selection_strategy: string;
route_rebuild: string;
entry_failover: string;
exit_failover: string;
backend_fallback_allowed: boolean;
sticky_session: boolean;
source: string;
updated_by_user_id?: string | null;
updated_at?: string;
control_plane_only: boolean;
production_forwarding: boolean;
};
export type NodeSyntheticMeshConfig = {
enabled: boolean;
schema_version: string;
@@ -398,6 +1184,28 @@ export type NodeSyntheticMeshConfig = {
rendezvous_leases?: PeerRendezvousLease[];
rendezvous_relay_policy?: RendezvousRelayPolicyReport;
route_path_decisions?: RoutePathDecisionReport;
service_channel_route_feedback?: FabricServiceChannelRouteFeedbackReport;
service_channel_adaptive_policy?: FabricServiceChannelAdaptivePolicy;
service_channel_remediation_commands?: FabricServiceChannelAccessTelemetryChannel["remediation_command"][];
mesh_listener?: {
schema_version: string;
source: string;
desired_state: string;
listen_addr: string;
listen_port_mode: string;
auto_port_start?: number;
auto_port_end?: number;
advertise_endpoint?: string;
advertise_transport?: string;
connectivity_mode?: string;
nat_type?: string;
region?: string;
config_version?: string;
updated_by_user_id?: string;
updated_at?: string;
control_plane_only: boolean;
production_forwarding: boolean;
};
routes: SyntheticMeshRoute[];
production_forwarding: boolean;
};
@@ -489,6 +1297,53 @@ export type OrganizationAdminSummary = {
topology_exposure: string;
};
export type Organization = {
id: string;
slug: string;
name: string;
status: string;
metadata?: Record<string, unknown>;
created_at: string;
updated_at: string;
};
export type OrganizationMembership = {
id: string;
organization_id: string;
user_id: string;
role_id: string;
status: string;
invited_by_user_id?: string | null;
created_at: string;
updated_at: string;
};
export type UserAccount = {
id: string;
email: string;
mfa_enabled: boolean;
platform_role: string;
created_at: string;
updated_at: string;
};
export type Resource = {
id: string;
organization_id: string;
name: string;
address: string;
protocol: string;
secret_ref?: string | null;
has_secret?: boolean;
certificate_verification_mode: string;
render_quality_profile?: string;
clipboard_mode: string;
file_transfer_mode: string;
metadata?: Record<string, unknown>;
created_at: string;
updated_at: string;
};
export type VPNConnection = {
id: string;
cluster_id: string;
@@ -527,3 +1382,34 @@ export type VPNConnectionLease = {
fenced_at?: string | null;
metadata: Record<string, unknown>;
};
export type VPNPacketDirectionStats = {
pushed: number;
popped: number;
dropped: number;
queue_depth: number;
last_push_size: number;
last_pop_size: number;
last_push_at?: string;
last_pop_at?: string;
};
export type VPNPacketStats = {
client_to_gateway?: VPNPacketDirectionStats;
gateway_to_client?: VPNPacketDirectionStats;
};
export type VPNClientDiagnosticStatus = {
cluster_id: string;
device_id: string;
payload: Record<string, unknown>;
observed_at: string;
};
export type VPNClientDiagnosticCommand = {
id: string;
cluster_id: string;
device_id: string;
payload: Record<string, unknown>;
created_at: string;
};