Documentation
¶
Overview ¶
Package webui provides comprehensive Web UI integration for the Nephoran Intent Operator.
Index ¶
- type APIError
- type APIResponse
- type Cache
- func (c *Cache) Clear()
- func (c *Cache) Delete(key string) bool
- func (c *Cache) Get(key string) (interface{}, bool)
- func (c *Cache) HitRate() float64
- func (c *Cache) Invalidate(keyPrefix string) int
- func (c *Cache) Keys() []string
- func (c *Cache) Set(key string, value interface{})
- func (c *Cache) SetWithTTL(key string, value interface{}, ttl time.Duration)
- func (c *Cache) Size() int
- func (c *Cache) Stats() *CacheStats
- type CacheConfig
- type CacheStats
- type ClusterHealthStatus
- type ClusterRequest
- type ClusterResponse
- type ClusterStatusUpdate
- type DeploymentHistoryItem
- type DeploymentRequest
- type DeploymentStatus
- type DeploymentTargetInfo
- type FilterParams
- type HealthAlert
- type HealthRecommendation
- type IngressControllerInfo
- type IntentRequest
- type IntentResponse
- type IntentStatusUpdate
- type Links
- type LoadBalancerInfo
- type Meta
- type MetricsUpdate
- type NephoranAPIServer
- type NetworkIO
- type NetworkInformation
- type OpenAPIComponents
- type OpenAPIContact
- type OpenAPIContent
- type OpenAPIExample
- type OpenAPIExternalDocs
- type OpenAPIHeader
- type OpenAPIInfo
- type OpenAPILicense
- type OpenAPIOAuthFlow
- type OpenAPIOAuthFlows
- type OpenAPIOperation
- type OpenAPIParameter
- type OpenAPIPath
- type OpenAPIRequestBody
- type OpenAPIResponse
- type OpenAPISchema
- type OpenAPISecurityScheme
- type OpenAPIServer
- type OpenAPIServerVariable
- type OpenAPISpec
- type OpenAPITag
- type PackageRequest
- type PackageResponse
- type PackageStatusUpdate
- type PaginationParams
- type ProcessingMetrics
- type RateLimitConfig
- type RateLimitInfo
- type RateLimitStats
- type RateLimiter
- func (rl *RateLimiter) Allow(identifier string) bool
- func (rl *RateLimiter) AllowN(identifier string, n int) bool
- func (rl *RateLimiter) GetLimit(identifier string) *RateLimitInfo
- func (rl *RateLimiter) IsRateLimited(identifier string) bool
- func (rl *RateLimiter) RemoveLimit(identifier string)
- func (rl *RateLimiter) Reset()
- func (rl *RateLimiter) SetCustomLimit(identifier string, requestsPerMin, burstSize int)
- func (rl *RateLimiter) Stats() *RateLimitStats
- func (rl *RateLimiter) Stop()
- type ResourceUsageMetrics
- type SSEConnection
- type ServerConfig
- type ServerMetrics
- type StreamFilter
- type StreamMessage
- type SystemEvent
- type TransitionRequest
- type ValidationSummary
- type WebSocketConnection
- type WebSocketMessage
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type APIResponse ¶
type Cache ¶
type Cache struct {
// contains filtered or unexported fields
}
func (*Cache) Invalidate ¶
func (*Cache) SetWithTTL ¶
func (*Cache) Stats ¶
func (c *Cache) Stats() *CacheStats
type CacheConfig ¶
type CacheStats ¶
type ClusterHealthStatus ¶
type ClusterHealthStatus struct {
Overall string `json:"overall"`
Components map[string]string `json:"components"`
LastChecked *metav1.Time `json:"last_checked"`
NextCheckIn time.Duration `json:"next_check_in"`
HealthScore float64 `json:"health_score"` // 0-100
Alerts []*HealthAlert `json:"alerts,omitempty"`
Recommendations []*HealthRecommendation `json:"recommendations,omitempty"`
}
type ClusterRequest ¶
type ClusterRequest struct {
Name string `json:"name"`
Region string `json:"region,omitempty"`
Zone string `json:"zone,omitempty"`
KubeConfig string `json:"kubeconfig,omitempty"` // Base64 encoded
EdgeLocation *multicluster.EdgeLocation `json:"edge_location,omitempty"`
Capabilities []string `json:"capabilities,omitempty"`
Resources *multicluster.ResourceCapacity `json:"resources,omitempty"`
Labels map[string]string `json:"labels,omitempty"`
Annotations map[string]string `json:"annotations,omitempty"`
}
type ClusterResponse ¶
type ClusterResponse struct {
*multicluster.WorkloadCluster
HealthStatus *ClusterHealthStatus `json:"health_status,omitempty"`
DeploymentHistory []*DeploymentHistoryItem `json:"deployment_history,omitempty"`
ResourceUsage *ResourceUsageMetrics `json:"resource_usage,omitempty"`
NetworkInfo *NetworkInformation `json:"network_info,omitempty"`
}
type ClusterStatusUpdate ¶
type ClusterStatusUpdate struct {
ClusterName string `json:"cluster_name"`
Status multicluster.ClusterStatus `json:"status"`
PreviousStatus multicluster.ClusterStatus `json:"previous_status,omitempty"`
HealthScore float64 `json:"health_score"`
Message string `json:"message,omitempty"`
Timestamp time.Time `json:"timestamp"`
EventType string `json:"event_type"` // registered, updated, health_changed, deployment, error
Alerts []*HealthAlert `json:"alerts,omitempty"`
}
type DeploymentHistoryItem ¶
type DeploymentHistoryItem struct {
PackageName string `json:"package_name"`
Version string `json:"version"`
Status string `json:"status"`
DeployedAt *metav1.Time `json:"deployed_at"`
DeployedBy string `json:"deployed_by,omitempty"`
Duration *metav1.Duration `json:"duration,omitempty"`
ErrorMessage string `json:"error_message,omitempty"`
}
type DeploymentRequest ¶
type DeploymentRequest struct {
PackageName string `json:"package_name"`
TargetClusters []string `json:"target_clusters,omitempty"`
Strategy multicluster.DeploymentStrategy `json:"strategy,omitempty"`
Constraints []multicluster.PlacementConstraint `json:"constraints,omitempty"`
ValidateOnly bool `json:"validate_only,omitempty"`
DryRun bool `json:"dry_run,omitempty"`
}
type DeploymentStatus ¶
type DeploymentStatus struct {
PackageName string `json:"package_name,omitempty"`
PackageRevision string `json:"package_revision,omitempty"`
PackageStatus string `json:"package_status,omitempty"`
DeployedClusters []string `json:"deployed_clusters,omitempty"`
FailedClusters []string `json:"failed_clusters,omitempty"`
ResourcesCreated int `json:"resources_created"`
ResourcesFailed int `json:"resources_failed"`
HealthStatus string `json:"health_status,omitempty"`
LastHealthCheck *metav1.Time `json:"last_health_check,omitempty"`
}
type DeploymentTargetInfo ¶
type DeploymentTargetInfo struct {
ClusterName string `json:"cluster_name"`
Status string `json:"status"`
LastDeployed *metav1.Time `json:"last_deployed,omitempty"`
Health string `json:"health,omitempty"`
Version string `json:"version,omitempty"`
ErrorMessage string `json:"error_message,omitempty"`
}
type FilterParams ¶
type FilterParams struct {
Status string `json:"status,omitempty"`
Type string `json:"type,omitempty"`
Priority string `json:"priority,omitempty"`
Component string `json:"component,omitempty"`
Cluster string `json:"cluster,omitempty"`
Labels map[string]string `json:"labels,omitempty"`
Since *time.Time `json:"since,omitempty"`
Until *time.Time `json:"until,omitempty"`
}
type HealthAlert ¶
type HealthRecommendation ¶
type IngressControllerInfo ¶
type IntentRequest ¶
type IntentRequest struct {
Name string `json:"name"`
Intent string `json:"intent"`
IntentType nephoranv1.IntentType `json:"intent_type"`
Priority nephoranv1.NetworkPriority `json:"priority,omitempty"`
TargetComponents []nephoranv1.TargetComponent `json:"target_components,omitempty"`
ResourceConstraints *nephoranv1.ResourceConstraints `json:"resource_constraints,omitempty"`
TargetCluster string `json:"target_cluster,omitempty"`
NetworkSlice string `json:"network_slice,omitempty"`
Region string `json:"region,omitempty"`
TimeoutSeconds *int32 `json:"timeout_seconds,omitempty"`
MaxRetries *int32 `json:"max_retries,omitempty"`
Labels map[string]string `json:"labels,omitempty"`
Annotations map[string]string `json:"annotations,omitempty"`
}
type IntentResponse ¶
type IntentResponse struct {
*nephoranv1.NetworkIntent
ProcessingMetrics *ProcessingMetrics `json:"processing_metrics,omitempty"`
DeploymentStatus *DeploymentStatus `json:"deployment_status,omitempty"`
ValidationResult *ValidationSummary `json:"validation_result,omitempty"`
}
type IntentStatusUpdate ¶
type IntentStatusUpdate struct {
IntentName string `json:"intent_name"`
Phase string `json:"phase"`
Conditions []metav1.Condition `json:"conditions,omitempty"`
Progress int `json:"progress"` // 0-100
Message string `json:"message,omitempty"`
Timestamp time.Time `json:"timestamp"`
EventType string `json:"event_type"` // created, updated, deleted, error
}
type LoadBalancerInfo ¶
type MetricsUpdate ¶
type NephoranAPIServer ¶
type NephoranAPIServer struct {
// contains filtered or unexported fields
}
func NewNephoranAPIServer ¶
func NewNephoranAPIServer( intentReconciler *controllers.NetworkIntentReconciler, packageManager packagerevision.PackageRevisionManager, clusterManager multicluster.ClusterPropagationManager, llmProcessor *services.LLMProcessorService, kubeClient kubernetes.Interface, config *ServerConfig, ) (*NephoranAPIServer, error)
func (*NephoranAPIServer) Shutdown ¶
func (s *NephoranAPIServer) Shutdown() error
type NetworkInformation ¶
type NetworkInformation struct {
ClusterCIDR string `json:"cluster_cidr,omitempty"`
ServiceCIDR string `json:"service_cidr,omitempty"`
PodCIDR string `json:"pod_cidr,omitempty"`
DNSClusterIP string `json:"dns_cluster_ip,omitempty"`
LoadBalancers []*LoadBalancerInfo `json:"load_balancers,omitempty"`
IngressControllers []*IngressControllerInfo `json:"ingress_controllers,omitempty"`
}
type OpenAPIComponents ¶
type OpenAPIComponents struct {
Schemas map[string]*OpenAPISchema `json:"schemas,omitempty"`
Responses map[string]*OpenAPIResponse `json:"responses,omitempty"`
Parameters map[string]*OpenAPIParameter `json:"parameters,omitempty"`
RequestBodies map[string]*OpenAPIRequestBody `json:"requestBodies,omitempty"`
Headers map[string]*OpenAPIHeader `json:"headers,omitempty"`
SecuritySchemes map[string]*OpenAPISecurityScheme `json:"securitySchemes,omitempty"`
}
type OpenAPIContact ¶
type OpenAPIContent ¶
type OpenAPIContent struct {
Schema *OpenAPISchema `json:"schema,omitempty"`
Example interface{} `json:"example,omitempty"`
Examples map[string]*OpenAPIExample `json:"examples,omitempty"`
}
type OpenAPIExample ¶
type OpenAPIExternalDocs ¶
type OpenAPIHeader ¶
type OpenAPIHeader struct {
Description string `json:"description,omitempty"`
Required bool `json:"required,omitempty"`
Schema *OpenAPISchema `json:"schema,omitempty"`
}
type OpenAPIInfo ¶
type OpenAPIInfo struct {
Title string `json:"title"`
Description string `json:"description"`
Version string `json:"version"`
Contact *OpenAPIContact `json:"contact,omitempty"`
License *OpenAPILicense `json:"license,omitempty"`
TermsOfService string `json:"termsOfService,omitempty"`
}
type OpenAPILicense ¶
type OpenAPIOAuthFlow ¶
type OpenAPIOAuthFlows ¶
type OpenAPIOAuthFlows struct {
Implicit *OpenAPIOAuthFlow `json:"implicit,omitempty"`
Password *OpenAPIOAuthFlow `json:"password,omitempty"`
ClientCredentials *OpenAPIOAuthFlow `json:"clientCredentials,omitempty"`
AuthorizationCode *OpenAPIOAuthFlow `json:"authorizationCode,omitempty"`
}
type OpenAPIOperation ¶
type OpenAPIOperation struct {
Tags []string `json:"tags,omitempty"`
Summary string `json:"summary,omitempty"`
Description string `json:"description,omitempty"`
OperationID string `json:"operationId,omitempty"`
Parameters []*OpenAPIParameter `json:"parameters,omitempty"`
RequestBody *OpenAPIRequestBody `json:"requestBody,omitempty"`
Responses map[string]*OpenAPIResponse `json:"responses"`
Security []map[string][]string `json:"security,omitempty"`
Deprecated bool `json:"deprecated,omitempty"`
}
type OpenAPIParameter ¶
type OpenAPIParameter struct {
Name string `json:"name"`
In string `json:"in"` // query, header, path, cookie
Description string `json:"description,omitempty"`
Required bool `json:"required,omitempty"`
Schema *OpenAPISchema `json:"schema,omitempty"`
Example interface{} `json:"example,omitempty"`
}
type OpenAPIPath ¶
type OpenAPIPath struct {
Get *OpenAPIOperation `json:"get,omitempty"`
Post *OpenAPIOperation `json:"post,omitempty"`
Put *OpenAPIOperation `json:"put,omitempty"`
Delete *OpenAPIOperation `json:"delete,omitempty"`
Patch *OpenAPIOperation `json:"patch,omitempty"`
}
type OpenAPIRequestBody ¶
type OpenAPIRequestBody struct {
Description string `json:"description,omitempty"`
Content map[string]*OpenAPIContent `json:"content"`
Required bool `json:"required,omitempty"`
}
type OpenAPIResponse ¶
type OpenAPIResponse struct {
Description string `json:"description"`
Headers map[string]*OpenAPIHeader `json:"headers,omitempty"`
Content map[string]*OpenAPIContent `json:"content,omitempty"`
}
type OpenAPISchema ¶
type OpenAPISchema struct {
Type string `json:"type,omitempty"`
Format string `json:"format,omitempty"`
Title string `json:"title,omitempty"`
Description string `json:"description,omitempty"`
Default interface{} `json:"default,omitempty"`
Example interface{} `json:"example,omitempty"`
Enum []interface{} `json:"enum,omitempty"`
Items *OpenAPISchema `json:"items,omitempty"`
Properties map[string]*OpenAPISchema `json:"properties,omitempty"`
Required []string `json:"required,omitempty"`
AdditionalProperties interface{} `json:"additionalProperties,omitempty"`
AllOf []*OpenAPISchema `json:"allOf,omitempty"`
OneOf []*OpenAPISchema `json:"oneOf,omitempty"`
AnyOf []*OpenAPISchema `json:"anyOf,omitempty"`
Not *OpenAPISchema `json:"not,omitempty"`
Ref string `json:"$ref,omitempty"`
Minimum *float64 `json:"minimum,omitempty"`
Maximum *float64 `json:"maximum,omitempty"`
MinLength *int `json:"minLength,omitempty"`
MaxLength *int `json:"maxLength,omitempty"`
Pattern string `json:"pattern,omitempty"`
}
type OpenAPISecurityScheme ¶
type OpenAPISecurityScheme struct {
Type string `json:"type"`
Description string `json:"description,omitempty"`
Name string `json:"name,omitempty"`
In string `json:"in,omitempty"`
Scheme string `json:"scheme,omitempty"`
BearerFormat string `json:"bearerFormat,omitempty"`
Flows *OpenAPIOAuthFlows `json:"flows,omitempty"`
OpenIDConnectURL string `json:"openIdConnectUrl,omitempty"`
}
type OpenAPIServer ¶
type OpenAPIServer struct {
URL string `json:"url"`
Description string `json:"description,omitempty"`
Variables map[string]*OpenAPIServerVariable `json:"variables,omitempty"`
}
type OpenAPIServerVariable ¶
type OpenAPISpec ¶
type OpenAPISpec struct {
OpenAPI string `json:"openapi"`
Info *OpenAPIInfo `json:"info"`
Servers []*OpenAPIServer `json:"servers,omitempty"`
Paths map[string]*OpenAPIPath `json:"paths"`
Components *OpenAPIComponents `json:"components,omitempty"`
Security []map[string][]string `json:"security,omitempty"`
Tags []*OpenAPITag `json:"tags,omitempty"`
}
type OpenAPITag ¶
type OpenAPITag struct {
Name string `json:"name"`
Description string `json:"description,omitempty"`
ExternalDocs *OpenAPIExternalDocs `json:"externalDocs,omitempty"`
}
type PackageRequest ¶
type PackageRequest struct {
PackageName string `json:"package_name"`
Repository string `json:"repository,omitempty"`
Revision string `json:"revision,omitempty"`
Description string `json:"description,omitempty"`
Labels map[string]string `json:"labels,omitempty"`
Annotations map[string]string `json:"annotations,omitempty"`
}
type PackageResponse ¶
type PackageResponse struct {
*porch.PackageRevision
LifecycleStatus *packagerevision.LifecycleStatus `json:"lifecycle_status,omitempty"`
ValidationResults []*packagerevision.ValidationResult `json:"validation_results,omitempty"`
ApprovalStatus *packagerevision.ApprovalResult `json:"approval_status,omitempty"`
Metrics *packagerevision.PackageMetrics `json:"metrics,omitempty"`
DeploymentTargets []DeploymentTargetInfo `json:"deployment_targets,omitempty"`
}
type PackageStatusUpdate ¶
type PackageStatusUpdate struct {
PackageName string `json:"package_name"`
Repository string `json:"repository"`
Revision string `json:"revision"`
CurrentStage porch.PackageRevisionLifecycle `json:"current_stage"`
PreviousStage porch.PackageRevisionLifecycle `json:"previous_stage,omitempty"`
Progress int `json:"progress"` // 0-100
Message string `json:"message,omitempty"`
Timestamp time.Time `json:"timestamp"`
EventType string `json:"event_type"` // created, transition, validation, approval, error
Conditions []metav1.Condition `json:"conditions,omitempty"`
}
type PaginationParams ¶
type ProcessingMetrics ¶
type ProcessingMetrics struct {
ProcessingDuration *metav1.Duration `json:"processing_duration,omitempty"`
DeploymentDuration *metav1.Duration `json:"deployment_duration,omitempty"`
TotalDuration *metav1.Duration `json:"total_duration,omitempty"`
QueueTime *metav1.Duration `json:"queue_time,omitempty"`
LLMProcessingTime *metav1.Duration `json:"llm_processing_time,omitempty"`
PackageCreationTime *metav1.Duration `json:"package_creation_time,omitempty"`
GitOpsDeploymentTime *metav1.Duration `json:"gitops_deployment_time,omitempty"`
}
type RateLimitConfig ¶
type RateLimitInfo ¶
type RateLimitStats ¶
type RateLimiter ¶
type RateLimiter struct {
// contains filtered or unexported fields
}
func NewRateLimiter ¶
func NewRateLimiter(requestsPerMin, burstSize int, window time.Duration) *RateLimiter
func (*RateLimiter) Allow ¶
func (rl *RateLimiter) Allow(identifier string) bool
func (*RateLimiter) GetLimit ¶
func (rl *RateLimiter) GetLimit(identifier string) *RateLimitInfo
func (*RateLimiter) IsRateLimited ¶
func (rl *RateLimiter) IsRateLimited(identifier string) bool
func (*RateLimiter) RemoveLimit ¶
func (rl *RateLimiter) RemoveLimit(identifier string)
func (*RateLimiter) Reset ¶
func (rl *RateLimiter) Reset()
func (*RateLimiter) SetCustomLimit ¶
func (rl *RateLimiter) SetCustomLimit(identifier string, requestsPerMin, burstSize int)
func (*RateLimiter) Stats ¶
func (rl *RateLimiter) Stats() *RateLimitStats
func (*RateLimiter) Stop ¶
func (rl *RateLimiter) Stop()
type ResourceUsageMetrics ¶
type ResourceUsageMetrics struct {
CPUUsage float64 `json:"cpu_usage_percent"`
MemoryUsage float64 `json:"memory_usage_percent"`
StorageUsage float64 `json:"storage_usage_percent"`
NetworkIO *NetworkIO `json:"network_io,omitempty"`
PodCount int `json:"pod_count"`
NodeCount int `json:"node_count"`
LastUpdated *metav1.Time `json:"last_updated"`
}
type SSEConnection ¶
type ServerConfig ¶
type ServerConfig struct {
Address string `json:"address"`
Port int `json:"port"`
ReadTimeout time.Duration `json:"read_timeout"`
WriteTimeout time.Duration `json:"write_timeout"`
IdleTimeout time.Duration `json:"idle_timeout"`
ShutdownTimeout time.Duration `json:"shutdown_timeout"`
TLSEnabled bool `json:"tls_enabled"`
TLSCertFile string `json:"tls_cert_file"`
TLSKeyFile string `json:"tls_key_file"`
EnableCORS bool `json:"enable_cors"`
AllowedOrigins []string `json:"allowed_origins"`
AllowedMethods []string `json:"allowed_methods"`
AllowedHeaders []string `json:"allowed_headers"`
AllowCredentials bool `json:"allow_credentials"`
EnableRateLimit bool `json:"enable_rate_limit"`
RequestsPerMin int `json:"requests_per_min"`
BurstSize int `json:"burst_size"`
RateLimitWindow time.Duration `json:"rate_limit_window"`
EnableCaching bool `json:"enable_caching"`
CacheSize int `json:"cache_size"`
CacheTTL time.Duration `json:"cache_ttl"`
MaxWSConnections int `json:"max_ws_connections"`
WSTimeout time.Duration `json:"ws_timeout"`
SSETimeout time.Duration `json:"sse_timeout"`
PingInterval time.Duration `json:"ping_interval"`
DefaultPageSize int `json:"default_page_size"`
MaxPageSize int `json:"max_page_size"`
EnableMetrics bool `json:"enable_metrics"`
EnableProfiling bool `json:"enable_profiling"`
EnableHealthCheck bool `json:"enable_health_check"`
AuthConfigFile string `json:"auth_config_file"`
}
type ServerMetrics ¶
type ServerMetrics struct {
RequestsTotal *prometheus.CounterVec
RequestDuration *prometheus.HistogramVec
WSConnectionsActive prometheus.Gauge
SSEConnectionsActive prometheus.Gauge
CacheHits prometheus.Counter
CacheMisses prometheus.Counter
RateLimitExceeded prometheus.Counter
}
type StreamFilter ¶
type StreamFilter struct {
EventTypes []string `json:"event_types,omitempty"` // intent, package, cluster, deployment
Status []string `json:"status,omitempty"` // pending, processing, completed, failed
Priority []string `json:"priority,omitempty"` // low, medium, high, critical
Components []string `json:"components,omitempty"` // AMF, SMF, UPF, etc.
Clusters []string `json:"clusters,omitempty"` // cluster names/IDs
Namespaces []string `json:"namespaces,omitempty"` // kubernetes namespaces
Labels map[string]string `json:"labels,omitempty"` // label selectors
Since *time.Time `json:"since,omitempty"` // events since timestamp
}
type StreamMessage ¶
type StreamMessage struct {
Type string `json:"type"` // intent_update, package_update, cluster_update, system_event
ID string `json:"id"` // unique message ID
Timestamp time.Time `json:"timestamp"`
Source string `json:"source"` // source component/service
Data interface{} `json:"data"` // actual event data
Metadata json.RawMessage `json:"metadata,omitempty"`
}
type SystemEvent ¶
type SystemEvent struct {
Level string `json:"level"` // info, warning, error, critical
Component string `json:"component"` // which component generated the event
Event string `json:"event"` // event type
Message string `json:"message"` // human-readable message
Details json.RawMessage `json:"details,omitempty"`
Timestamp time.Time `json:"timestamp"`
}
type TransitionRequest ¶
type TransitionRequest struct {
TargetStage string `json:"target_stage"`
SkipValidation bool `json:"skip_validation,omitempty"`
SkipApproval bool `json:"skip_approval,omitempty"`
CreateRollbackPoint bool `json:"create_rollback_point,omitempty"`
RollbackDescription string `json:"rollback_description,omitempty"`
ForceTransition bool `json:"force_transition,omitempty"`
ValidationPolicy *packagerevision.ValidationPolicy `json:"validation_policy,omitempty"`
ApprovalPolicy *packagerevision.ApprovalPolicy `json:"approval_policy,omitempty"`
NotificationTargets []string `json:"notification_targets,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
DryRun bool `json:"dry_run,omitempty"`
}
type ValidationSummary ¶
type WebSocketConnection ¶
type WebSocketMessage ¶
type WebSocketMessage struct {
StreamMessage
Action string `json:"action,omitempty"` // subscribe, unsubscribe, ping, pong
Filters *StreamFilter `json:"filters,omitempty"` // subscription filters
RequestID string `json:"request_id,omitempty"` // for request/response correlation
}
Click to show internal directories.
Click to hide internal directories.