RemoveFileFromKnowledge removes a file from a knowledge source
(ctx context.Context, knowledgeID, fileID string)
| 405 | |
| 406 | // RemoveFileFromKnowledge removes a file from a knowledge source |
| 407 | func (c *Client) RemoveFileFromKnowledge(ctx context.Context, knowledgeID, fileID string) error { |
| 408 | url := fmt.Sprintf("%s/api/v1/knowledge/%s/file/remove", c.baseURL, knowledgeID) |
| 409 | |
| 410 | payload := map[string]string{ |
| 411 | "file_id": fileID, |
| 412 | } |
| 413 | |
| 414 | jsonData, err := json.Marshal(payload) |
| 415 | if err != nil { |
| 416 | return fmt.Errorf("failed to marshal payload: %w", err) |
| 417 | } |
| 418 | |
| 419 | req, err := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(jsonData)) |
| 420 | if err != nil { |
| 421 | return fmt.Errorf("failed to create request: %w", err) |
| 422 | } |
| 423 | |
| 424 | req.Header.Set("Content-Type", "application/json") |
| 425 | if c.apiKey != "" { |
| 426 | req.Header.Set("Authorization", "Bearer "+c.apiKey) |
| 427 | } |
| 428 | |
| 429 | resp, err := c.client.Do(req) |
| 430 | if err != nil { |
| 431 | return fmt.Errorf("failed to send request: %w", err) |
| 432 | } |
| 433 | defer resp.Body.Close() |
| 434 | |
| 435 | // Consider 404 as success - file already doesn't exist in knowledge base |
| 436 | if resp.StatusCode == http.StatusNotFound { |
| 437 | logrus.Debugf("File %s not found in knowledge %s (already removed or doesn't exist)", fileID, knowledgeID) |
| 438 | return nil |
| 439 | } |
| 440 | |
| 441 | if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { |
| 442 | body, _ := io.ReadAll(resp.Body) |
| 443 | return fmt.Errorf("remove file from knowledge failed with status %d: %s", resp.StatusCode, string(body)) |
| 444 | } |
| 445 | |
| 446 | return nil |
| 447 | } |
| 448 | |
| 449 | // DeleteFile deletes a file from OpenWebUI |
| 450 | func (c *Client) DeleteFile(ctx context.Context, fileID string) error { |
no outgoing calls