diff --git a/internal/api/api.go b/internal/api/api.go index f2e597bdfe7..bffc39ae0d4 100644 --- a/internal/api/api.go +++ b/internal/api/api.go @@ -560,6 +560,18 @@ func (a *API) onPathsList(ctx *gin.Context) { return } + // Filter by search parameter if provided + search := ctx.Query("search") + if search != "" { + filteredItems := make([]*defs.APIPath, 0, len(data.Items)) + for _, item := range data.Items { + if strings.Contains(strings.ToLower(item.Name), strings.ToLower(search)) { + filteredItems = append(filteredItems, item) + } + } + data.Items = filteredItems + } + data.ItemCount = len(data.Items) pageCount, err := paginate(&data.Items, ctx.Query("itemsPerPage"), ctx.Query("page")) if err != nil { diff --git a/internal/conf/path.go b/internal/conf/path.go index fec6c86b67e..ce33b870d4b 100644 --- a/internal/conf/path.go +++ b/internal/conf/path.go @@ -229,6 +229,9 @@ type Path struct { RunOnUnread string `json:"runOnUnread"` RunOnRecordSegmentCreate string `json:"runOnRecordSegmentCreate"` RunOnRecordSegmentComplete string `json:"runOnRecordSegmentComplete"` + + // Custom metadata + Metadata map[string]any `json:"metadata"` } func (pconf *Path) setDefaults() { diff --git a/internal/core/path.go b/internal/core/path.go index 92b32109263..7fad9b7d7af 100644 --- a/internal/core/path.go +++ b/internal/core/path.go @@ -590,6 +590,7 @@ func (pa *path) doAPIPathsGet(req pathAPIPathsGetReq) { } return ret }(), + Metadata: pa.conf.Metadata, }, } } diff --git a/internal/defs/api.go b/internal/defs/api.go index c0aa11e9a0f..90473ee34da 100644 --- a/internal/defs/api.go +++ b/internal/defs/api.go @@ -85,6 +85,7 @@ type APIPath struct { BytesReceived uint64 `json:"bytesReceived"` BytesSent uint64 `json:"bytesSent"` Readers []APIPathSourceOrReader `json:"readers"` + Metadata map[string]any `json:"metadata" yaml:"metadata"` } // APIPathList is a list of paths.