View .md

Knowledgebase endpoints (Admin API)

18 FeatherPanel Admin API endpoints from admin/knowledgebase.php: methods, paths, auth, permissions, rate limits, parameters and responses.

Last synced from FeatherPanel 15b94e9 on .

On this page

Defined in backend/app/routes/admin/knowledgebase.php. Authentication used here: Admin. Read Authentication for how to send credentials and Rate limits and errors for the response envelope.

Paths, methods, permissions and rate limits come from the route file. Summaries, parameters and response codes come from the OpenAPI annotations on the controllers; endpoints without annotations show only what the route file declares.

Endpoints

GET/api/admin/knowledgebase/categories

Auth: AdminPermission: admin.knowledgebase.categories.viewRoute name: admin-knowledgebase-categoriesController: KnowledgebaseController::categoriesIndexroute source

Get all knowledgebase categories Retrieve a paginated list of all knowledgebase categories with optional search functionality.

ParameterInTypeRequiredDescription
pagequeryintegernoPage number for pagination
limitqueryintegernoNumber of records per page
searchquerystringnoSearch term to filter categories
Response data fieldTypeDescription
categoriesKnowledgebaseCategory[]
paginationKnowledgebasePagination
searchobject
curl -X GET "$PANEL_URL/api/admin/knowledgebase/categories" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:admin:knowledgebase:categories:retrieved

Responses: 200 Categories retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions

GET/api/admin/knowledgebase/categories/{id}

Auth: AdminPermission: admin.knowledgebase.categories.viewRoute name: admin-knowledgebase-categories-showController: KnowledgebaseController::categoriesShowroute source

Get knowledgebase category by ID Retrieve a specific knowledgebase category by its ID.

ParameterInTypeRequiredDescription
idpathintegeryesCategory ID
Response data fieldTypeDescription
categoryKnowledgebaseCategory
curl -X GET "$PANEL_URL/api/admin/knowledgebase/categories/$ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:admin:knowledgebase:category:retrieved

Responses: 200 Category retrieved successfully · 400 Bad request - Invalid ID · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Category not found

PUT/api/admin/knowledgebase/categories

Auth: AdminPermission: admin.knowledgebase.categories.createRoute name: admin-knowledgebase-categories-createController: KnowledgebaseController::categoriesCreateroute source

Create new knowledgebase category Create a new knowledgebase category with name, slug, and icon.

Request body: KnowledgebaseCategoryCreate (application/json)

Body fieldTypeRequiredDescription
namestringyesCategory name
slugstringnoCategory slug
iconstringyesCategory icon URL
descriptionstringnoCategory description
positionintegernoCategory position for sorting
Response data fieldTypeDescription
categoryKnowledgebaseCategory
curl -X PUT "$PANEL_URL/api/admin/knowledgebase/categories" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name":"","slug":"","icon":"","description":"","position":0}'

Plugin events: featherpanel:admin:knowledgebase:category:created

Responses: 201 Category created successfully · 400 Bad request - Validation errors · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 500 Internal server error

PATCH/api/admin/knowledgebase/categories/{id}

Auth: AdminPermission: admin.knowledgebase.categories.editRoute name: admin-knowledgebase-categories-updateController: KnowledgebaseController::categoriesUpdateroute source

Update knowledgebase category Update an existing knowledgebase category. Only provided fields will be updated.

ParameterInTypeRequiredDescription
idpathintegeryesCategory ID

Request body: KnowledgebaseCategoryUpdate (application/json)

Body fieldTypeRequiredDescription
namestringnoCategory name
slugstringnoCategory slug
iconstringnoCategory icon URL
descriptionstringnoCategory description
positionintegernoCategory position for sorting
Response data fieldTypeDescription
categoryKnowledgebaseCategory
curl -X PATCH "$PANEL_URL/api/admin/knowledgebase/categories/$ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name":"","slug":"","icon":"","description":"","position":0}'

Plugin events: featherpanel:admin:knowledgebase:category:updated

Responses: 200 Category updated successfully · 400 Bad request - Validation errors · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Category not found · 500 Internal server error

DELETE/api/admin/knowledgebase/categories/{id}

Auth: AdminPermission: admin.knowledgebase.categories.deleteRoute name: admin-knowledgebase-categories-deleteController: KnowledgebaseController::categoriesDeleteroute source

Delete knowledgebase category Permanently delete a knowledgebase category. This will also delete all articles in this category.

ParameterInTypeRequiredDescription
idpathintegeryesCategory ID
Response data fieldTypeDescription
messagestringSuccess message
curl -X DELETE "$PANEL_URL/api/admin/knowledgebase/categories/$ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:admin:knowledgebase:category:deleted

Responses: 200 Category deleted successfully · 400 Bad request - Invalid category ID · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Category not found · 500 Internal server error

GET/api/admin/knowledgebase/articles

Auth: AdminPermission: admin.knowledgebase.articles.viewRoute name: admin-knowledgebase-articlesController: KnowledgebaseController::articlesIndexroute source

Get all knowledgebase articles Retrieve a paginated list of all knowledgebase articles with optional filters.

ParameterInTypeRequiredDescription
pagequeryintegernoPage number for pagination
limitqueryintegernoNumber of records per page
searchquerystringnoSearch term to filter articles
category_idqueryintegernoFilter by category ID
statusquerystringnoFilter by status
pinnedquerybooleannoFilter by pinned status
Response data fieldTypeDescription
articlesKnowledgebaseArticle[]
paginationKnowledgebasePagination
searchobject
curl -X GET "$PANEL_URL/api/admin/knowledgebase/articles" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:admin:knowledgebase:articles:retrieved

Responses: 200 Articles retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions

GET/api/admin/knowledgebase/articles/{id}

Auth: AdminPermission: admin.knowledgebase.articles.viewRoute name: admin-knowledgebase-articles-showController: KnowledgebaseController::articlesShowroute source

Get knowledgebase article by ID Retrieve a specific knowledgebase article by its ID.

ParameterInTypeRequiredDescription
idpathintegeryesArticle ID
Response data fieldTypeDescription
articleKnowledgebaseArticle
curl -X GET "$PANEL_URL/api/admin/knowledgebase/articles/$ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:admin:knowledgebase:article:retrieved

Responses: 200 Article retrieved successfully · 400 Bad request - Invalid ID · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Article not found

PUT/api/admin/knowledgebase/articles

Auth: AdminPermission: admin.knowledgebase.articles.createRoute name: admin-knowledgebase-articles-createController: KnowledgebaseController::articlesCreateroute source

Create new knowledgebase article Create a new knowledgebase article with title, slug, content, and optional icon.

Request body: KnowledgebaseArticleCreate (application/json)

Body fieldTypeRequiredDescription
category_idintegeryesCategory ID
titlestringyesArticle title
slugstringnoArticle slug
iconstringnoArticle icon/logo URL
contentstringyesArticle content
author_idintegeryesAuthor user ID
statusstringnoArticle status
pinnedbooleannoWhether article is pinned
sort_orderintegernoArticle sort order for positioning
published_atstring (date-time)noPublication timestamp
Response data fieldTypeDescription
articleKnowledgebaseArticle
curl -X PUT "$PANEL_URL/api/admin/knowledgebase/articles" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"category_id":0,"title":"","slug":"","icon":"","content":"","author_id":0,"status":"","pinned":false,"sort_order":0,"published_at":""}'

Plugin events: featherpanel:admin:knowledgebase:article:created

Responses: 201 Article created successfully · 400 Bad request - Validation errors · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 500 Internal server error

PATCH/api/admin/knowledgebase/articles/{id}

Auth: AdminPermission: admin.knowledgebase.articles.editRoute name: admin-knowledgebase-articles-updateController: KnowledgebaseController::articlesUpdateroute source

Update knowledgebase article Update an existing knowledgebase article. Only provided fields will be updated.

ParameterInTypeRequiredDescription
idpathintegeryesArticle ID

Request body: KnowledgebaseArticleUpdate (application/json)

Body fieldTypeRequiredDescription
category_idintegernoCategory ID
titlestringnoArticle title
slugstringnoArticle slug
iconstringnoArticle icon/logo URL
contentstringnoArticle content
author_idintegernoAuthor user ID
statusstringnoArticle status
pinnedbooleannoWhether article is pinned
sort_orderintegernoArticle sort order for positioning
published_atstring (date-time)noPublication timestamp
Response data fieldTypeDescription
articleKnowledgebaseArticle
curl -X PATCH "$PANEL_URL/api/admin/knowledgebase/articles/$ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"category_id":0,"title":"","slug":"","icon":"","content":"","author_id":0,"status":"","pinned":false,"sort_order":0,"published_at":""}'

Plugin events: featherpanel:admin:knowledgebase:article:updated

Responses: 200 Article updated successfully · 400 Bad request - Validation errors · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Article not found · 500 Internal server error

DELETE/api/admin/knowledgebase/articles/{id}

Auth: AdminPermission: admin.knowledgebase.articles.deleteRoute name: admin-knowledgebase-articles-deleteController: KnowledgebaseController::articlesDeleteroute source

Delete knowledgebase article Permanently delete a knowledgebase article. This will also delete all tags and attachments.

ParameterInTypeRequiredDescription
idpathintegeryesArticle ID
Response data fieldTypeDescription
messagestringSuccess message
curl -X DELETE "$PANEL_URL/api/admin/knowledgebase/articles/$ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:admin:knowledgebase:article:deleted

Responses: 200 Article deleted successfully · 400 Bad request - Invalid article ID · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Article not found · 500 Internal server error

POST/api/admin/knowledgebase/articles/reorder

Auth: AdminPermission: admin.knowledgebase.articles.editRoute name: admin-knowledgebase-articles-reorderController: KnowledgebaseController::articlesReorderroute source

Reorder knowledgebase articles Update the sort order of multiple articles at once for custom positioning.

Request body: KnowledgebaseArticleReorder (application/json)

Body fieldTypeRequiredDescription
articlesobject[]yesArray of articles with their new sort orders
Response data fieldTypeDescription
messagestringSuccess message
curl -X POST "$PANEL_URL/api/admin/knowledgebase/articles/reorder" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"articles":[]}'

Plugin events: featherpanel:admin:knowledgebase:articles:reordered

Responses: 200 Articles reordered successfully · 400 Bad request - Invalid request data · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 500 Internal server error

POST/api/admin/knowledgebase/upload-icon

Auth: AdminPermission: admin.knowledgebase.categories.createRoute name: admin-knowledgebase-upload-iconController: KnowledgebaseController::uploadIconroute source

Upload icon for category or article Upload an icon image file for knowledgebase categories or articles. Supports JPG, PNG, GIF, and WebP formats with a maximum size of 5MB.

Body fieldTypeRequiredDescription
iconstring (binary)yesIcon image file (JPG, PNG, GIF, WebP, max 5MB)
Response data fieldTypeDescription
urlstringPublic URL of the uploaded icon
filenamestringFilename of the uploaded icon
curl -X POST "$PANEL_URL/api/admin/knowledgebase/upload-icon" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -F "icon=@./file"

Plugin events: featherpanel:admin:knowledgebase:icon:uploaded

Responses: 201 Icon uploaded successfully · 400 Bad request - No file provided, invalid file type, or file too large · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 500 Internal server error - Failed to save file

POST/api/admin/knowledgebase/articles/{id}/upload-attachment

Auth: AdminPermission: admin.knowledgebase.articles.editRoute name: admin-knowledgebase-articles-upload-attachmentController: KnowledgebaseController::uploadAttachmentroute source

Upload attachment for article Upload an attachment file for a knowledgebase article. Supports various file types with a maximum size of 50MB.

ParameterInTypeRequiredDescription
idpathintegeryesArticle ID
Body fieldTypeRequiredDescription
filestring (binary)yesAttachment file (max 50MB)
Response data fieldTypeDescription
attachmentobjectAttachment record
curl -X POST "$PANEL_URL/api/admin/knowledgebase/articles/$ID/upload-attachment" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -F "file=@./file"

Plugin events: featherpanel:admin:knowledgebase:attachment:uploaded

Responses: 201 Attachment uploaded successfully · 400 Bad request - No file provided, invalid file type, or file too large · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Article not found · 500 Internal server error - Failed to save file

GET/api/admin/knowledgebase/articles/{id}/attachments

Auth: AdminPermission: admin.knowledgebase.articles.viewRoute name: admin-knowledgebase-articles-attachmentsController: KnowledgebaseController::getAttachmentsroute source

Get all attachments for an article Retrieve all attachments for a specific knowledgebase article.

ParameterInTypeRequiredDescription
idpathintegeryesArticle ID
Response data fieldTypeDescription
attachmentsobject[]
curl -X GET "$PANEL_URL/api/admin/knowledgebase/articles/$ID/attachments" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:admin:knowledgebase:attachments:retrieved

Responses: 200 Attachments retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Article not found

DELETE/api/admin/knowledgebase/articles/{id}/attachments/{attachmentId}

Auth: AdminPermission: admin.knowledgebase.articles.editRoute name: admin-knowledgebase-articles-delete-attachmentController: KnowledgebaseController::deleteAttachmentroute source

Delete an attachment Permanently delete an attachment from a knowledgebase article.

ParameterInTypeRequiredDescription
idpathintegeryesArticle ID
attachmentIdpathintegeryesAttachment ID
Response data fieldTypeDescription
messagestringSuccess message
curl -X DELETE "$PANEL_URL/api/admin/knowledgebase/articles/$ID/attachments/$ATTACHMENT_ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:admin:knowledgebase:attachment:deleted

Responses: 200 Attachment deleted successfully · 400 Bad request - Invalid attachment ID · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Article or attachment not found · 500 Internal server error

GET/api/admin/knowledgebase/articles/{id}/tags

Auth: AdminPermission: admin.knowledgebase.articles.viewRoute name: admin-knowledgebase-articles-tagsController: KnowledgebaseController::getTagsroute source

Get all tags for an article Retrieve all tags associated with a specific knowledgebase article.

ParameterInTypeRequiredDescription
idpathintegeryesArticle ID
Response data fieldTypeDescription
tagsobject[]
curl -X GET "$PANEL_URL/api/admin/knowledgebase/articles/$ID/tags" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:admin:knowledgebase:tags:retrieved

Responses: 200 Tags retrieved successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Article not found

POST/api/admin/knowledgebase/articles/{id}/tags

Auth: AdminPermission: admin.knowledgebase.articles.editRoute name: admin-knowledgebase-articles-create-tagController: KnowledgebaseController::createTagroute source

Add a tag to an article Add a new tag to a knowledgebase article.

ParameterInTypeRequiredDescription
idpathintegeryesArticle ID
Body fieldTypeRequiredDescription
tag_namestringyesTag name
Response data fieldTypeDescription
tagobject
curl -X POST "$PANEL_URL/api/admin/knowledgebase/articles/$ID/tags" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"tag_name":""}'

Plugin events: featherpanel:admin:knowledgebase:tag:created

Responses: 201 Tag added successfully · 400 Bad request - Validation errors · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Article not found · 409 Tag already exists for this article

DELETE/api/admin/knowledgebase/articles/{id}/tags/{tagId}

Auth: AdminPermission: admin.knowledgebase.articles.editRoute name: admin-knowledgebase-articles-delete-tagController: KnowledgebaseController::deleteTagroute source

Delete a tag from an article Remove a tag from a knowledgebase article.

ParameterInTypeRequiredDescription
idpathintegeryesArticle ID
tagIdpathintegeryesTag ID
Response data fieldTypeDescription
messagestringSuccess message
curl -X DELETE "$PANEL_URL/api/admin/knowledgebase/articles/$ID/tags/$TAG_ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:admin:knowledgebase:tag:deleted

Responses: 200 Tag deleted successfully · 400 Bad request - Invalid tag ID · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 Article or tag not found · 500 Internal server error