mirror of
https://github.com/danielmiessler/Fabric.git
synced 2026-01-07 21:44:02 -05:00
541 lines
18 KiB
JSON
541 lines
18 KiB
JSON
{
|
|
"swagger": "2.0",
|
|
"info": {
|
|
"description": "REST API for Fabric AI augmentation framework. Provides endpoints for chat completions, pattern management, contexts, sessions, and more.",
|
|
"title": "Fabric REST API",
|
|
"contact": {
|
|
"name": "Fabric Support",
|
|
"url": "https://github.com/danielmiessler/fabric"
|
|
},
|
|
"license": {
|
|
"name": "MIT",
|
|
"url": "https://opensource.org/licenses/MIT"
|
|
},
|
|
"version": "1.0"
|
|
},
|
|
"host": "localhost:8080",
|
|
"basePath": "/",
|
|
"paths": {
|
|
"/chat": {
|
|
"post": {
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Stream AI responses using Server-Sent Events (SSE)",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"text/event-stream"
|
|
],
|
|
"tags": [
|
|
"chat"
|
|
],
|
|
"summary": "Stream chat completions",
|
|
"parameters": [
|
|
{
|
|
"description": "Chat request with prompts and options",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/restapi.ChatRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Streaming response",
|
|
"schema": {
|
|
"$ref": "#/definitions/restapi.StreamResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/models/names": {
|
|
"get": {
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Get a list of all available AI models grouped by vendor",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"models"
|
|
],
|
|
"summary": "List all available models",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Returns models (array) and vendors (map)",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/patterns/{name}": {
|
|
"get": {
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Retrieve a pattern by name",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"patterns"
|
|
],
|
|
"summary": "Get a pattern",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Pattern name",
|
|
"name": "name",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/fsdb.Pattern"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/patterns/{name}/apply": {
|
|
"post": {
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Apply a pattern with variable substitution",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"patterns"
|
|
],
|
|
"summary": "Apply pattern with variables",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Pattern name",
|
|
"name": "name",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Pattern application request",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/restapi.PatternApplyRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/fsdb.Pattern"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/youtube/transcript": {
|
|
"post": {
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Retrieves the transcript of a YouTube video along with video metadata (title and description)",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"youtube"
|
|
],
|
|
"summary": "Get YouTube video transcript",
|
|
"parameters": [
|
|
{
|
|
"description": "YouTube transcript request with URL, language, and timestamp options",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/restapi.YouTubeRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful response with transcript and metadata",
|
|
"schema": {
|
|
"$ref": "#/definitions/restapi.YouTubeResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request - invalid URL or playlist URL provided",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal server error - failed to retrieve transcript or metadata",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"definitions": {
|
|
"domain.ThinkingLevel": {
|
|
"type": "string",
|
|
"enum": [
|
|
"off",
|
|
"low",
|
|
"medium",
|
|
"high"
|
|
],
|
|
"x-enum-varnames": [
|
|
"ThinkingOff",
|
|
"ThinkingLow",
|
|
"ThinkingMedium",
|
|
"ThinkingHigh"
|
|
]
|
|
},
|
|
"domain.UsageMetadata": {
|
|
"type": "object",
|
|
"properties": {
|
|
"input_tokens": {
|
|
"type": "integer"
|
|
},
|
|
"output_tokens": {
|
|
"type": "integer"
|
|
},
|
|
"total_tokens": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"fsdb.Pattern": {
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"pattern": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"restapi.ChatRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"audioFormat": {
|
|
"type": "string"
|
|
},
|
|
"audioOutput": {
|
|
"type": "boolean"
|
|
},
|
|
"frequencyPenalty": {
|
|
"type": "number",
|
|
"format": "float64"
|
|
},
|
|
"imageBackground": {
|
|
"type": "string"
|
|
},
|
|
"imageCompression": {
|
|
"type": "integer"
|
|
},
|
|
"imageFile": {
|
|
"type": "string"
|
|
},
|
|
"imageQuality": {
|
|
"type": "string"
|
|
},
|
|
"imageSize": {
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"description": "Add Language field to bind from request",
|
|
"type": "string"
|
|
},
|
|
"maxTokens": {
|
|
"type": "integer"
|
|
},
|
|
"model": {
|
|
"type": "string"
|
|
},
|
|
"modelContextLength": {
|
|
"type": "integer"
|
|
},
|
|
"notification": {
|
|
"type": "boolean"
|
|
},
|
|
"notificationCommand": {
|
|
"type": "string"
|
|
},
|
|
"presencePenalty": {
|
|
"type": "number",
|
|
"format": "float64"
|
|
},
|
|
"prompts": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/restapi.PromptRequest"
|
|
}
|
|
},
|
|
"quiet": {
|
|
"type": "boolean"
|
|
},
|
|
"raw": {
|
|
"type": "boolean"
|
|
},
|
|
"search": {
|
|
"type": "boolean"
|
|
},
|
|
"searchLocation": {
|
|
"type": "string"
|
|
},
|
|
"seed": {
|
|
"type": "integer"
|
|
},
|
|
"showMetadata": {
|
|
"type": "boolean"
|
|
},
|
|
"suppressThink": {
|
|
"type": "boolean"
|
|
},
|
|
"temperature": {
|
|
"type": "number",
|
|
"format": "float64"
|
|
},
|
|
"thinkEndTag": {
|
|
"type": "string"
|
|
},
|
|
"thinkStartTag": {
|
|
"type": "string"
|
|
},
|
|
"thinking": {
|
|
"$ref": "#/definitions/domain.ThinkingLevel"
|
|
},
|
|
"topP": {
|
|
"type": "number",
|
|
"format": "float64"
|
|
},
|
|
"updateChan": {
|
|
"type": "object"
|
|
},
|
|
"voice": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"restapi.PatternApplyRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"input": {
|
|
"type": "string"
|
|
},
|
|
"variables": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"restapi.PromptRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"contextName": {
|
|
"type": "string"
|
|
},
|
|
"model": {
|
|
"type": "string"
|
|
},
|
|
"patternName": {
|
|
"type": "string"
|
|
},
|
|
"sessionName": {
|
|
"description": "Session name for multi-turn conversations",
|
|
"type": "string"
|
|
},
|
|
"strategyName": {
|
|
"description": "Optional strategy name",
|
|
"type": "string"
|
|
},
|
|
"userInput": {
|
|
"type": "string"
|
|
},
|
|
"variables": {
|
|
"description": "Pattern variables",
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"vendor": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"restapi.StreamResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "string"
|
|
},
|
|
"format": {
|
|
"description": "\"markdown\", \"mermaid\", \"plain\"",
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"description": "\"content\", \"usage\", \"error\", \"complete\"",
|
|
"type": "string"
|
|
},
|
|
"usage": {
|
|
"$ref": "#/definitions/domain.UsageMetadata"
|
|
}
|
|
}
|
|
},
|
|
"restapi.YouTubeRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"url"
|
|
],
|
|
"properties": {
|
|
"language": {
|
|
"description": "Language code for transcript (default: \"en\")",
|
|
"type": "string",
|
|
"example": "en"
|
|
},
|
|
"timestamps": {
|
|
"description": "Include timestamps in the transcript (default: false)",
|
|
"type": "boolean",
|
|
"example": false
|
|
},
|
|
"url": {
|
|
"description": "YouTube video URL (required)",
|
|
"type": "string",
|
|
"example": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
|
|
}
|
|
}
|
|
},
|
|
"restapi.YouTubeResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"description": "Video description from YouTube metadata",
|
|
"type": "string",
|
|
"example": "This is the video description from YouTube..."
|
|
},
|
|
"title": {
|
|
"description": "Video title from YouTube metadata",
|
|
"type": "string",
|
|
"example": "Example Video Title"
|
|
},
|
|
"transcript": {
|
|
"description": "The video transcript text",
|
|
"type": "string",
|
|
"example": "This is the video transcript..."
|
|
},
|
|
"videoId": {
|
|
"description": "YouTube video ID",
|
|
"type": "string",
|
|
"example": "dQw4w9WgXcQ"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"securityDefinitions": {
|
|
"ApiKeyAuth": {
|
|
"type": "apiKey",
|
|
"name": "X-API-Key",
|
|
"in": "header"
|
|
}
|
|
}
|
|
} |