Tencent/WeKnora · warning
wiki page slug is required
Error message
wiki page slug is required
What it means
CreatePage validates that a new wiki page carries a non-empty Slug, the URL-identifying name of the page within its knowledge base. A page without a slug cannot be addressed or looked up by path, so the service refuses to persist it. Unlike ID, no default is generated for slug — callers must supply it.
Source
Thrown at internal/application/service/wiki_page.go:75
taskPendingRepo interfaces.TaskPendingOpsRepository,
redisClient *redis.Client,
) interfaces.WikiPageService {
return &wikiPageService{
repo: repo,
chunkRepo: chunkRepo,
kbService: kbService,
taskPendingRepo: taskPendingRepo,
redisClient: redisClient,
}
}
// CreatePage creates a new wiki page
func (s *wikiPageService) CreatePage(ctx context.Context, page *types.WikiPage) (*types.WikiPage, error) {
if page.ID == "" {
page.ID = uuid.New().String()
}
if page.Slug == "" {
return nil, errors.New("wiki page slug is required")
}
if page.KnowledgeBaseID == "" {
return nil, errors.New("knowledge_base_id is required")
}
if page.Status == "" {
page.Status = types.WikiPageStatusPublished
}
if page.Version == 0 {
page.Version = 1
}
page.LastEditSource = types.WikiEditSourceFromContext(ctx)
page.LastEditorID, _ = types.UserIDFromContext(ctx)
stripWikiPageInlineChunkCitations(page)
// Parse outbound links from content
page.OutLinks = s.parseOutLinks(page.Content)
if err := s.applyFolderToPage(ctx, page); err != nil {
return nil, errView on GitHub (pinned to 988cbb0330)
Solutions
- Set page.Slug before calling CreatePage — derive it from the title (slugify) if not provided.
- Validate slug presence at the handler layer and return 400 with a clear message.
- If slugs should be optional, add auto-generation logic in the service instead of failing.
Example fix
// before
page := &types.WikiPage{Title: req.Title, KnowledgeBaseID: kbID}
// after
slug, _ := slugify(req.Title)
page := &types.WikiPage{Title: req.Title, Slug: slug, KnowledgeBaseID: kbID} Defensive patterns
Strategy: validation
Validate before calling
if strings.TrimSpace(page.Slug) == "" {
return httpError(400, "slug is required")
} Prevention
- Auto-derive slug from title in the handler when absent.
- Mark slug as binding:"required" on create-page request structs.
- Add a service-level test for pages created without a slug.
When it happens
Trigger: Calling CreatePage with page.Slug == "" — e.g. constructing a WikiPage from a request that omitted the slug field or where slug generation (from title) was skipped.
Common situations: Client sends a create-page payload without the slug field; backend assumes slug is auto-derived from title but that logic lives in the caller; import/bulk scripts forgetting to set slug.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- knowledge_base_id is required
- cannot revert to the current version
- wiki graph request is required
- slug is required
- cannot choose a knowledge base for new wiki page %s from %d
AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02).
Data as JSON: /api/errors/a4e5e86da46948bb.
Report an issue: GitHub.