restapi

package
v1.4.452 Latest Latest
Warning

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

Go to latest
Published: May 4, 2026 License: MIT Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const APIKeyHeader = "X-API-Key"

Variables

This section is empty.

Functions

func APIKeyMiddleware

func APIKeyMiddleware(apiKey string) gin.HandlerFunc

APIKeyMiddleware validates API key for protected endpoints. Swagger documentation endpoints (/swagger/*) are exempt from authentication to allow users to browse and test the API documentation freely.

func NewModelsHandler

func NewModelsHandler(r *gin.Engine, vendorManager *ai.VendorsManager)

func NewStrategiesHandler

func NewStrategiesHandler(r *gin.Engine)

NewStrategiesHandler registers the /strategies GET endpoint

func Serve

func Serve(registry *core.PluginRegistry, address string, apiKey string) (err error)

@title Fabric REST API @version 1.0 @description REST API for Fabric AI augmentation framework. Provides endpoints for chat completions, pattern management, contexts, sessions, and more. @contact.name Fabric Support @contact.url https://github.com/danielmiessler/fabric @license.name MIT @license.url https://opensource.org/licenses/MIT @host localhost:8080 @BasePath / @securityDefinitions.apikey ApiKeyAuth @in header @name X-API-Key

func ServeOllama

func ServeOllama(registry *core.PluginRegistry, address string, version string) (err error)

Types

type APIConvert

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

type ChatHandler

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

func NewChatHandler

func NewChatHandler(r *gin.Engine, registry *core.PluginRegistry, db *fsdb.Db) *ChatHandler

func (*ChatHandler) HandleChat

func (h *ChatHandler) HandleChat(c *gin.Context)

HandleChat godoc @Summary Stream chat completions @Description Stream AI responses using Server-Sent Events (SSE) @Tags chat @Accept json @Produce text/event-stream @Param request body ChatRequest true "Chat request with prompts and options" @Success 200 {object} StreamResponse "Streaming response" @Failure 400 {object} map[string]string @Security ApiKeyAuth @Router /chat [post]

type ChatRequest

type ChatRequest struct {
	Prompts            []PromptRequest `json:"prompts"`
	Language           string          `json:"language"`
	ModelContextLength int             `json:"modelContextLength,omitempty"` // Context window size
	domain.ChatOptions                 // Embed the ChatOptions from common package
}

type ConfigHandler

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

ConfigHandler defines the handler for configuration-related operations

func NewConfigHandler

func NewConfigHandler(r *gin.Engine, db *fsdb.Db) *ConfigHandler

func (*ConfigHandler) GetConfig

func (h *ConfigHandler) GetConfig(c *gin.Context)

func (*ConfigHandler) UpdateConfig

func (h *ConfigHandler) UpdateConfig(c *gin.Context)

type ContextsHandler

type ContextsHandler struct {
	*StorageHandler[fsdb.Context]
	// contains filtered or unexported fields
}

ContextsHandler defines the handler for contexts-related operations

func NewContextsHandler

func NewContextsHandler(r *gin.Engine, contexts *fsdb.ContextsEntity) (ret *ContextsHandler)

NewContextsHandler creates a new ContextsHandler

type FabricResponseFormat

type FabricResponseFormat struct {
	Type    string `json:"type"`
	Format  string `json:"format"`
	Content string `json:"content"`
}

type Model

type Model struct {
	Details    ModelDetails `json:"details"`
	Digest     string       `json:"digest"`
	Model      string       `json:"model"`
	ModifiedAt string       `json:"modified_at"`
	Name       string       `json:"name"`
	Size       int64        `json:"size"`
}

type ModelDetails

type ModelDetails struct {
	Families          []string `json:"families"`
	Family            string   `json:"family"`
	Format            string   `json:"format"`
	ParameterSize     string   `json:"parameter_size"`
	ParentModel       string   `json:"parent_model"`
	QuantizationLevel string   `json:"quantization_level"`
}

type ModelsHandler

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

func (*ModelsHandler) GetModelNames

func (h *ModelsHandler) GetModelNames(c *gin.Context)

GetModelNames godoc @Summary List all available models @Description Get a list of all available AI models grouped by vendor @Tags models @Produce json @Success 200 {object} map[string]interface{} "Returns models (array) and vendors (map)" @Failure 500 {object} map[string]string @Security ApiKeyAuth @Router /models/names [get]

type OllamaMessage

type OllamaMessage struct {
	Content string `json:"content"`
	Role    string `json:"role"`
}

type OllamaModel

type OllamaModel struct {
	Models []Model `json:"models"`
}

type OllamaRequestBody

type OllamaRequestBody struct {
	Messages  []OllamaMessage   `json:"messages"`
	Model     string            `json:"model"`
	Options   map[string]any    `json:"options,omitempty"`
	Stream    bool              `json:"stream"`
	Variables map[string]string `json:"variables,omitempty"` // Fabric-specific: pattern variables (direct)
}

type OllamaResponse

type OllamaResponse struct {
	Model     string `json:"model"`
	CreatedAt string `json:"created_at"`
	Message   struct {
		Role    string `json:"role"`
		Content string `json:"content"`
	} `json:"message"`
	DoneReason         string `json:"done_reason,omitempty"`
	Done               bool   `json:"done"`
	TotalDuration      int64  `json:"total_duration,omitempty"`
	LoadDuration       int64  `json:"load_duration,omitempty"`
	PromptEvalCount    int64  `json:"prompt_eval_count,omitempty"`
	PromptEvalDuration int64  `json:"prompt_eval_duration,omitempty"`
	EvalCount          int64  `json:"eval_count,omitempty"`
	EvalDuration       int64  `json:"eval_duration,omitempty"`
}

type PatternApplyRequest

type PatternApplyRequest struct {
	Input     string            `json:"input"`
	Variables map[string]string `json:"variables,omitempty"`
}

PatternApplyRequest represents the request body for applying a pattern

type PatternsHandler

type PatternsHandler struct {
	*StorageHandler[fsdb.Pattern]
	// contains filtered or unexported fields
}

PatternsHandler defines the handler for patterns-related operations

func NewPatternsHandler

func NewPatternsHandler(r *gin.Engine, patterns *fsdb.PatternsEntity) (ret *PatternsHandler)

NewPatternsHandler creates a new PatternsHandler

func (*PatternsHandler) ApplyPattern

func (h *PatternsHandler) ApplyPattern(c *gin.Context)

ApplyPattern handles the POST /patterns/:name/apply route @Summary Apply pattern with variables @Description Apply a pattern with variable substitution @Tags patterns @Accept json @Produce json @Param name path string true "Pattern name" @Param request body PatternApplyRequest true "Pattern application request" @Success 200 {object} fsdb.Pattern @Failure 400 {object} map[string]string @Failure 500 {object} map[string]string @Security ApiKeyAuth @Router /patterns/{name}/apply [post]

func (*PatternsHandler) Get

func (h *PatternsHandler) Get(c *gin.Context)

Get handles the GET /patterns/:name route - returns raw pattern without variable processing @Summary Get a pattern @Description Retrieve a pattern by name @Tags patterns @Accept json @Produce json @Param name path string true "Pattern name" @Success 200 {object} fsdb.Pattern @Failure 500 {object} map[string]string @Security ApiKeyAuth @Router /patterns/{name} [get]

type PromptRequest

type PromptRequest struct {
	UserInput    string            `json:"userInput"`
	Vendor       string            `json:"vendor"`
	Model        string            `json:"model"`
	ContextName  string            `json:"contextName"`
	PatternName  string            `json:"patternName"`
	StrategyName string            `json:"strategyName"`        // Optional strategy name
	SessionName  string            `json:"sessionName"`         // Session name for multi-turn conversations
	Variables    map[string]string `json:"variables,omitempty"` // Pattern variables
}

type SessionsHandler

type SessionsHandler struct {
	*StorageHandler[fsdb.Session]
	// contains filtered or unexported fields
}

SessionsHandler defines the handler for sessions-related operations

func NewSessionsHandler

func NewSessionsHandler(r *gin.Engine, sessions *fsdb.SessionsEntity) (ret *SessionsHandler)

NewSessionsHandler creates a new SessionsHandler

type StorageHandler

type StorageHandler[T any] struct {
	// contains filtered or unexported fields
}

StorageHandler defines the handler for storage-related operations

func NewStorageHandler

func NewStorageHandler[T any](r *gin.Engine, entityType string, storage db.Storage[T]) (ret *StorageHandler[T])

NewStorageHandler creates a new StorageHandler

func (*StorageHandler[T]) Delete

func (h *StorageHandler[T]) Delete(c *gin.Context)

Delete handles the DELETE /storage/:name route

func (*StorageHandler[T]) Exists

func (h *StorageHandler[T]) Exists(c *gin.Context)

Exists handles the GET /storage/exists/:name route

func (*StorageHandler[T]) Get

func (h *StorageHandler[T]) Get(c *gin.Context)

Get handles the GET /storage/:name route

func (*StorageHandler[T]) GetNames

func (h *StorageHandler[T]) GetNames(c *gin.Context)

GetNames handles the GET /storage/names route

func (*StorageHandler[T]) Rename

func (h *StorageHandler[T]) Rename(c *gin.Context)

Rename handles the PUT /storage/rename/:oldName/:newName route

func (*StorageHandler[T]) Save

func (h *StorageHandler[T]) Save(c *gin.Context)

Save handles the POST /storage/save/:name route

type StrategyMeta

type StrategyMeta struct {
	Name        string `json:"name"`
	Description string `json:"description"`
	Prompt      string `json:"prompt"`
}

StrategyMeta represents the minimal info about a strategy

type StreamResponse

type StreamResponse struct {
	Type    string                `json:"type"`             // "content", "usage", "error", "complete"
	Format  string                `json:"format,omitempty"` // "markdown", "mermaid", "plain"
	Content string                `json:"content,omitempty"`
	Usage   *domain.UsageMetadata `json:"usage,omitempty"`
}

type YouTubeHandler

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

func NewYouTubeHandler

func NewYouTubeHandler(r *gin.Engine, registry *core.PluginRegistry) *YouTubeHandler

func (*YouTubeHandler) Transcript

func (h *YouTubeHandler) Transcript(c *gin.Context)

Transcript godoc @Summary Get YouTube video transcript @Description Retrieves the transcript of a YouTube video along with video metadata (title and description) @Tags youtube @Accept json @Produce json @Param request body YouTubeRequest true "YouTube transcript request with URL, language, and timestamp options" @Success 200 {object} YouTubeResponse "Successful response with transcript and metadata" @Failure 400 {object} map[string]string "Bad request - invalid URL or playlist URL provided" @Failure 500 {object} map[string]string "Internal server error - failed to retrieve transcript or metadata" @Security ApiKeyAuth @Router /youtube/transcript [post]

type YouTubeRequest

type YouTubeRequest struct {
	URL        string `json:"url" binding:"required" example:"https://www.youtube.com/watch?v=dQw4w9WgXcQ"` // YouTube video URL (required)
	Language   string `json:"language,omitempty" example:"en"`                                              // Language code for transcript (default: "en")
	Timestamps bool   `json:"timestamps,omitempty" example:"false"`                                         // Include timestamps in the transcript (default: false)
}

YouTubeRequest represents a request to get a YouTube video transcript

type YouTubeResponse

type YouTubeResponse struct {
	Transcript  string `json:"transcript" example:"This is the video transcript..."`                // The video transcript text
	VideoId     string `json:"videoId" example:"dQw4w9WgXcQ"`                                       // YouTube video ID
	Title       string `json:"title" example:"Example Video Title"`                                 // Video title from YouTube metadata
	Description string `json:"description" example:"This is the video description from YouTube..."` // Video description from YouTube metadata
}

YouTubeResponse represents the response containing video transcript and metadata

Jump to

Keyboard shortcuts

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