Help us shape the future of Go! Take the 2026 Go Developer Survey

routes

package
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 5, 2026 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BuildStarter

type BuildStarter interface {
	Enqueue(buildID string) error
}

type ConsoleLogResponse

type ConsoleLogResponse struct {
	Lines []string `json:"lines"`
}

ConsoleLogResponse is the response from the console log endpoint.

type EnvironmentRoutes

type EnvironmentRoutes struct {
	// contains filtered or unexported fields
}

func NewEnvironmentRoutes

func NewEnvironmentRoutes(st store.Store, build BuildStarter) *EnvironmentRoutes

func (*EnvironmentRoutes) CancelBuild

func (e *EnvironmentRoutes) CancelBuild(w http.ResponseWriter, r *http.Request)

func (*EnvironmentRoutes) CreateSpec

func (e *EnvironmentRoutes) CreateSpec(w http.ResponseWriter, r *http.Request)

func (*EnvironmentRoutes) DeleteRegistryConnection

func (e *EnvironmentRoutes) DeleteRegistryConnection(w http.ResponseWriter, r *http.Request)

func (*EnvironmentRoutes) GetBuild

func (e *EnvironmentRoutes) GetBuild(w http.ResponseWriter, r *http.Request)

func (*EnvironmentRoutes) GetSpec

func (e *EnvironmentRoutes) GetSpec(w http.ResponseWriter, r *http.Request)

func (*EnvironmentRoutes) ListBuilds

func (e *EnvironmentRoutes) ListBuilds(w http.ResponseWriter, r *http.Request)

func (*EnvironmentRoutes) ListRegistryConnections

func (e *EnvironmentRoutes) ListRegistryConnections(w http.ResponseWriter, r *http.Request)

func (*EnvironmentRoutes) ListSpecs

func (e *EnvironmentRoutes) ListSpecs(w http.ResponseWriter, r *http.Request)

func (*EnvironmentRoutes) Routes

func (e *EnvironmentRoutes) Routes() chi.Router

func (*EnvironmentRoutes) SaveRegistryConnection

func (e *EnvironmentRoutes) SaveRegistryConnection(w http.ResponseWriter, r *http.Request)

func (*EnvironmentRoutes) SpawnConfig

func (e *EnvironmentRoutes) SpawnConfig(w http.ResponseWriter, r *http.Request)

func (*EnvironmentRoutes) StartBuild

func (e *EnvironmentRoutes) StartBuild(w http.ResponseWriter, r *http.Request)

func (*EnvironmentRoutes) Suggestions

func (e *EnvironmentRoutes) Suggestions(w http.ResponseWriter, r *http.Request)

type HealthResponse

type HealthResponse struct {
	Status  string `json:"status" example:"ok"`
	Version string `json:"version" example:"1.0.0"`
	Uptime  string `json:"uptime" example:"2h30m15s"`
}

HealthResponse is the response from the health check endpoint.

type MetricsResponse

type MetricsResponse struct {
	SandboxesActive int    `json:"sandboxes_active" example:"5"`
	Providers       int    `json:"providers" example:"2"`
	Goroutines      int    `json:"goroutines" example:"12"`
	MemoryAllocMB   uint64 `json:"memory_alloc_mb" example:"64"`
	Uptime          string `json:"uptime" example:"2h30m15s"`
}

MetricsResponse is the response from the metrics endpoint.

type PoolStatusResponse

type PoolStatusResponse = orchestrator.VMPoolStatus

PoolStatusResponse is returned by the pool status endpoint.

type ProviderDetail

type ProviderDetail struct {
	Name         string            `json:"name" example:"firecracker"`
	Healthy      bool              `json:"healthy" example:"true"`
	Default      bool              `json:"default" example:"true"`
	SandboxCount int               `json:"sandbox_count" example:"3"`
	Config       map[string]string `json:"config"`
}

ProviderDetail is the detailed info for a provider.

type ProviderInfo

type ProviderInfo struct {
	Name    string `json:"name" example:"firecracker"`
	Healthy bool   `json:"healthy" example:"true"`
	Default bool   `json:"default" example:"true"`
}

ProviderInfo is the summary info for a provider.

type ProviderRoutes

type ProviderRoutes struct {
	// contains filtered or unexported fields
}

func NewProviderRoutes

func NewProviderRoutes(registry *providers.Registry, counter sandboxCounter) *ProviderRoutes

func (*ProviderRoutes) Detail

func (p *ProviderRoutes) Detail(w http.ResponseWriter, r *http.Request)

Detail returns detailed information about a provider.

@Summary		Get provider details
@Description	Return detailed information about a specific provider
@Tags			providers
@Produce		json
@Param			providerName	path		string	true	"Provider name"
@Success		200				{object}	ProviderDetail
@Failure		404				{object}	httputil.APIError
@Security		ApiKeyAuth
@Router			/providers/{providerName} [get]

func (*ProviderRoutes) List

List returns all registered providers.

@Summary		List providers
@Description	Return all registered providers with health status
@Tags			providers
@Produce		json
@Success		200	{array}		ProviderInfo
@Security		ApiKeyAuth
@Router			/providers [get]

func (*ProviderRoutes) Routes

func (p *ProviderRoutes) Routes() chi.Router

func (*ProviderRoutes) Test

Test checks health of all providers.

@Summary		Test providers
@Description	Run health checks on all registered providers
@Tags			providers
@Produce		json
@Success		200	{object}	map[string]bool
@Security		ApiKeyAuth
@Router			/providers/test [post]

type PruneResponse

type PruneResponse struct {
	Pruned int `json:"pruned" example:"3"`
}

PruneResponse is the response from pruning sandboxes.

type SandboxRoutes

type SandboxRoutes struct {
	// contains filtered or unexported fields
}

func NewSandboxRoutes

func NewSandboxRoutes(manager *orchestrator.Manager) *SandboxRoutes

func (*SandboxRoutes) ChmodFile

func (s *SandboxRoutes) ChmodFile(w http.ResponseWriter, r *http.Request)

ChmodFile changes file permissions in a sandbox.

func (*SandboxRoutes) ConsoleLog

func (s *SandboxRoutes) ConsoleLog(w http.ResponseWriter, r *http.Request)

ConsoleLog retrieves console log output from a sandbox.

@Summary		Get console logs
@Description	Retrieve console log lines from a sandbox
@Tags			sandboxes
@Produce		json
@Param			sandboxID	path		string	true	"Sandbox ID"
@Param			lines		query		int		false	"Number of lines to retrieve (default: 100)"
@Success		200			{array}		string
@Failure		404			{object}	httputil.APIError
@Failure		500			{object}	httputil.APIError
@Security		ApiKeyAuth
@Router			/sandboxes/{sandboxID}/logs [get]

func (*SandboxRoutes) Create

func (s *SandboxRoutes) Create(w http.ResponseWriter, r *http.Request)

Create creates a new sandbox.

@Summary		Create a sandbox
@Description	Spawn a new sandbox with the given configuration
@Tags			sandboxes
@Accept			json
@Produce		json
@Param			request	body		orchestrator.SpawnRequest	true	"Spawn request"
@Success		201		{object}	orchestrator.Sandbox
@Failure		400		{object}	httputil.APIError
@Failure		500		{object}	httputil.APIError
@Security		ApiKeyAuth
@Router			/sandboxes [post]

func (*SandboxRoutes) DeleteFile

func (s *SandboxRoutes) DeleteFile(w http.ResponseWriter, r *http.Request)

DeleteFile deletes a file from a sandbox.

func (*SandboxRoutes) Destroy

func (s *SandboxRoutes) Destroy(w http.ResponseWriter, r *http.Request)

Destroy destroys a sandbox by ID.

@Summary		Destroy a sandbox
@Description	Destroy a sandbox and release its resources
@Tags			sandboxes
@Produce		json
@Param			sandboxID	path		string	true	"Sandbox ID"
@Success		200			{object}	StatusResponse
@Failure		404			{object}	httputil.APIError
@Failure		500			{object}	httputil.APIError
@Security		ApiKeyAuth
@Router			/sandboxes/{sandboxID} [delete]

func (*SandboxRoutes) Exec

func (s *SandboxRoutes) Exec(w http.ResponseWriter, r *http.Request)

Exec executes a command in a sandbox.

@Summary		Execute a command
@Description	Run a command inside a sandbox. Set stream=true for streaming output.
@Tags			sandboxes
@Accept			json
@Produce		json
@Param			sandboxID	path		string					true	"Sandbox ID"
@Param			request		body		orchestrator.ExecRequest	true	"Exec request"
@Success		200			{object}	orchestrator.ExecResult
@Failure		404			{object}	httputil.APIError
@Failure		500			{object}	httputil.APIError
@Security		ApiKeyAuth
@Router			/sandboxes/{sandboxID}/exec [post]

func (*SandboxRoutes) ExecWebSocket

func (s *SandboxRoutes) ExecWebSocket(w http.ResponseWriter, r *http.Request)

ExecWebSocket executes a command over WebSocket.

@Summary		Execute via WebSocket
@Description	Open a WebSocket connection to execute a command with streaming output
@Tags			sandboxes
@Param			sandboxID	path	string	true	"Sandbox ID"
@Success		101			"WebSocket upgrade"
@Failure		400			"Bad request"
@Security		ApiKeyAuth
@Router			/sandboxes/{sandboxID}/exec/ws [get]

func (*SandboxRoutes) Extend

func (s *SandboxRoutes) Extend(w http.ResponseWriter, r *http.Request)

Extend extends a sandbox's TTL.

@Summary		Extend sandbox TTL
@Description	Add additional time to a sandbox's expiration
@Tags			sandboxes
@Accept			json
@Produce		json
@Param			sandboxID	path		string	true	"Sandbox ID"
@Param			request		body		object{ttl=string}	true	"TTL extension"
@Success		200			{object}	orchestrator.Sandbox
@Failure		400			{object}	httputil.APIError
@Failure		404			{object}	httputil.APIError
@Failure		500			{object}	httputil.APIError
@Security		ApiKeyAuth
@Router			/sandboxes/{sandboxID}/extend [post]

func (*SandboxRoutes) Get

Get returns a single sandbox by ID.

@Summary		Get a sandbox
@Description	Return a sandbox by its ID
@Tags			sandboxes
@Produce		json
@Param			sandboxID	path		string	true	"Sandbox ID"
@Success		200			{object}	orchestrator.Sandbox
@Failure		404			{object}	httputil.APIError
@Failure		500			{object}	httputil.APIError
@Security		ApiKeyAuth
@Router			/sandboxes/{sandboxID} [get]

func (*SandboxRoutes) GlobFiles

func (s *SandboxRoutes) GlobFiles(w http.ResponseWriter, r *http.Request)

GlobFiles returns paths matching a glob pattern in a sandbox.

func (*SandboxRoutes) List

func (s *SandboxRoutes) List(w http.ResponseWriter, r *http.Request)

List lists all active sandboxes.

@Summary		List sandboxes
@Description	Return all active sandboxes
@Tags			sandboxes
@Produce		json
@Success		200	{array}		orchestrator.Sandbox
@Failure		500	{object}	httputil.APIError
@Security		ApiKeyAuth
@Router			/sandboxes [get]

func (*SandboxRoutes) ListFiles

func (s *SandboxRoutes) ListFiles(w http.ResponseWriter, r *http.Request)

ListFiles lists files in a sandbox directory.

@Summary		List files
@Description	List files in a directory inside a sandbox
@Tags			sandboxes
@Produce		json
@Param			sandboxID	path		string	true	"Sandbox ID"
@Param			path		query		string	false	"Directory path (default: /)"
@Success		200			{array}		orchestrator.FileInfo
@Failure		404			{object}	httputil.APIError
@Failure		500			{object}	httputil.APIError
@Security		ApiKeyAuth
@Router			/sandboxes/{sandboxID}/files/list [get]

func (*SandboxRoutes) MoveFile

func (s *SandboxRoutes) MoveFile(w http.ResponseWriter, r *http.Request)

MoveFile moves/renames a file in a sandbox.

func (*SandboxRoutes) Prune

func (s *SandboxRoutes) Prune(w http.ResponseWriter, r *http.Request)

Prune destroys all expired sandboxes.

@Summary		Prune sandboxes
@Description	Destroy all expired sandboxes and return the count
@Tags			sandboxes
@Produce		json
@Success		200	{object}	PruneResponse
@Failure		500	{object}	httputil.APIError
@Security		ApiKeyAuth
@Router			/sandboxes [delete]

func (*SandboxRoutes) ReadFile

func (s *SandboxRoutes) ReadFile(w http.ResponseWriter, r *http.Request)

ReadFile reads a file from a sandbox.

@Summary		Read a file
@Description	Read file content from a sandbox
@Tags			sandboxes
@Produce		octet-stream
@Param			sandboxID	path		string	true	"Sandbox ID"
@Param			path		query		string	true	"File path inside the sandbox"
@Success		200			{file}		binary
@Failure		400			{object}	httputil.APIError
@Failure		404			{object}	httputil.APIError
@Failure		500			{object}	httputil.APIError
@Security		ApiKeyAuth
@Router			/sandboxes/{sandboxID}/files [get]

func (*SandboxRoutes) Routes

func (s *SandboxRoutes) Routes() chi.Router

func (*SandboxRoutes) StatFile

func (s *SandboxRoutes) StatFile(w http.ResponseWriter, r *http.Request)

StatFile returns file info for a single file in a sandbox.

func (*SandboxRoutes) VMPoolStatus

func (s *SandboxRoutes) VMPoolStatus(w http.ResponseWriter, r *http.Request)

VMPoolStatusHandler returns the VM pool status.

func (*SandboxRoutes) WriteFile

func (s *SandboxRoutes) WriteFile(w http.ResponseWriter, r *http.Request)

WriteFile writes a file into a sandbox.

@Summary		Write a file
@Description	Write content to a file inside a sandbox
@Tags			sandboxes
@Accept			json
@Produce		json
@Param			sandboxID	path		string						true	"Sandbox ID"
@Param			request		body		orchestrator.FileWriteRequest	true	"File write request"
@Success		200			{object}	StatusResponse
@Failure		400			{object}	httputil.APIError
@Failure		404			{object}	httputil.APIError
@Failure		500			{object}	httputil.APIError
@Security		ApiKeyAuth
@Router			/sandboxes/{sandboxID}/files [post]

type SnapshotRoutes

type SnapshotRoutes struct {
	// contains filtered or unexported fields
}

func NewSnapshotRoutes

func NewSnapshotRoutes(registry *providers.Registry) *SnapshotRoutes

func (*SnapshotRoutes) List

List returns all available snapshots across providers.

@Summary		List snapshots
@Description	Return all pre-built VM snapshots available for fast restore
@Tags			snapshots
@Produce		json
@Success		200	{array}		providers.SnapshotSummary
@Security		ApiKeyAuth
@Router			/snapshots [get]

func (*SnapshotRoutes) Routes

func (s *SnapshotRoutes) Routes() chi.Router

type StatusResponse

type StatusResponse struct {
	Status string `json:"status" example:"destroyed"`
}

StatusResponse is a generic status response.

type SystemRoutes

type SystemRoutes struct {
	// contains filtered or unexported fields
}

func NewSystemRoutes

func NewSystemRoutes(registry *providers.Registry, manager *orchestrator.Manager, events *orchestrator.EventBus, version string) *SystemRoutes

func (*SystemRoutes) Events

func (s *SystemRoutes) Events(w http.ResponseWriter, r *http.Request)

Events serves Server-Sent Events for real-time updates.

@Summary		Subscribe to events
@Description	Open an SSE stream for real-time sandbox and system events
@Tags			system
@Produce		text/event-stream
@Success		200	{object}	orchestrator.Event
@Security		ApiKeyAuth
@Router			/events [get]

func (*SystemRoutes) Health

func (s *SystemRoutes) Health(w http.ResponseWriter, r *http.Request)

Health returns the health status of the server.

@Summary		Health check
@Description	Return the health status, version, and uptime
@Tags			system
@Produce		json
@Success		200	{object}	HealthResponse
@Security		ApiKeyAuth
@Router			/health [get]

func (*SystemRoutes) Metrics

func (s *SystemRoutes) Metrics(w http.ResponseWriter, r *http.Request)

Metrics returns runtime metrics.

@Summary		Get metrics
@Description	Return runtime metrics including sandbox count, goroutines, and memory usage
@Tags			system
@Produce		json
@Success		200	{object}	MetricsResponse
@Security		ApiKeyAuth
@Router			/metrics [get]

func (*SystemRoutes) Routes

func (s *SystemRoutes) Routes() chi.Router

type TemplateRoutes

type TemplateRoutes struct {
	// contains filtered or unexported fields
}

func NewTemplateRoutes

func NewTemplateRoutes(registry *orchestrator.TemplateRegistry, manager *orchestrator.Manager) *TemplateRoutes

func (*TemplateRoutes) Create

func (t *TemplateRoutes) Create(w http.ResponseWriter, r *http.Request)

Create registers a new template.

@Summary		Create a template
@Description	Register a new sandbox template
@Tags			templates
@Accept			json
@Produce		json
@Param			request	body		orchestrator.Template	true	"Template definition"
@Success		201		{object}	orchestrator.Template
@Failure		400		{object}	httputil.APIError
@Failure		409		{object}	httputil.APIError
@Failure		500		{object}	httputil.APIError
@Security		ApiKeyAuth
@Router			/templates [post]

func (*TemplateRoutes) Delete

func (t *TemplateRoutes) Delete(w http.ResponseWriter, r *http.Request)

Delete removes a template.

@Summary		Delete a template
@Description	Delete a template by name
@Tags			templates
@Produce		json
@Param			name	path		string	true	"Template name"
@Success		200		{object}	StatusResponse
@Failure		404		{object}	httputil.APIError
@Failure		500		{object}	httputil.APIError
@Security		ApiKeyAuth
@Router			/templates/{name} [delete]

func (*TemplateRoutes) Get

Get returns a template by name.

@Summary		Get a template
@Description	Return a template by its name
@Tags			templates
@Produce		json
@Param			name	path		string	true	"Template name"
@Success		200		{object}	orchestrator.Template
@Failure		404		{object}	httputil.APIError
@Failure		500		{object}	httputil.APIError
@Security		ApiKeyAuth
@Router			/templates/{name} [get]

func (*TemplateRoutes) List

List returns all templates.

@Summary		List templates
@Description	Return all registered templates
@Tags			templates
@Produce		json
@Success		200	{array}		orchestrator.Template
@Failure		500	{object}	httputil.APIError
@Security		ApiKeyAuth
@Router			/templates [get]

func (*TemplateRoutes) Routes

func (t *TemplateRoutes) Routes() chi.Router

func (*TemplateRoutes) Spawn

func (t *TemplateRoutes) Spawn(w http.ResponseWriter, r *http.Request)

Spawn creates a sandbox from a template.

@Summary		Spawn from template
@Description	Create a new sandbox using a template's configuration, with optional overrides
@Tags			templates
@Accept			json
@Produce		json
@Param			name	path		string					true	"Template name"
@Param			request	body		TemplateSpawnOverrides	false	"Optional overrides"
@Success		201		{object}	orchestrator.Sandbox
@Failure		404		{object}	httputil.APIError
@Failure		500		{object}	httputil.APIError
@Security		ApiKeyAuth
@Router			/templates/{name}/spawn [post]

func (*TemplateRoutes) Update

func (t *TemplateRoutes) Update(w http.ResponseWriter, r *http.Request)

Update updates an existing template.

@Summary		Update a template
@Description	Update an existing template by name
@Tags			templates
@Accept			json
@Produce		json
@Param			name	path		string				true	"Template name"
@Param			request	body		orchestrator.Template	true	"Updated template"
@Success		200		{object}	orchestrator.Template
@Failure		400		{object}	httputil.APIError
@Failure		404		{object}	httputil.APIError
@Failure		500		{object}	httputil.APIError
@Security		ApiKeyAuth
@Router			/templates/{name} [put]

type TemplateSpawnOverrides

type TemplateSpawnOverrides struct {
	Provider string `json:"provider,omitempty" example:"firecracker"`
	TTL      string `json:"ttl,omitempty" example:"30m"`
}

TemplateSpawnOverrides are optional overrides when spawning from a template.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL