GET /api/v1/public/help-centers/{slug}/tree
Authentication
This endpoint needs no authentication.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| slug | path | string | Yes | Help center slug. |
| locale | query | string | No | Locale code. Falls back to the help center's default locale when missing or not allowed. |
Responses
200
Published collections and articles of an active help center
Content type: application/json.
| Field | Type | Required | Description |
|---|---|---|---|
| status | string | No | example: "success" |
| data | object | No | |
| data.help_center | object | No | |
| data.help_center.id | integer | No | example: 1 |
| data.help_center.created_at | string (date-time) | No | example: "2025-08-28T10:00:00Z" |
| data.help_center.updated_at | string (date-time) | No | example: "2025-08-28T10:00:00Z" |
| data.help_center.name | string | No | example: "Help center" |
| data.help_center.slug | string | No | example: "help" |
| data.help_center.page_title | string | No | example: "Help center" |
| data.help_center.meta_description | string | No | example: "" |
| data.help_center.custom_css | string | No | example: "" |
| data.help_center.custom_js | string | No | example: "" |
| data.help_center.default_locale | string | No | example: "en" |
| data.help_center.allowed_locales | array of string | No | example: ["en"] |
| data.help_center.allowed_locales[] | string | ||
| data.help_center.is_active | boolean | No | example: true |
| data.help_center.theme | object | No | Help center theme settings. |
| data.help_center.custom_domain | string | No | example: "" |
| data.help_center.template | string | No | example: "classic" |
| data.tree | array of object | No | |
| data.tree[].id | integer | No | example: 1 |
| data.tree[].created_at | string (date-time) | No | example: "2025-08-28T10:00:00Z" |
| data.tree[].updated_at | string (date-time) | No | example: "2025-08-28T10:00:00Z" |
| data.tree[].help_center_id | integer | No | example: 1 |
| data.tree[].slug | string | No | example: "account" |
| data.tree[].parent_id | integer | No | nullable: true |
| data.tree[].locale | string | No | example: "en" |
| data.tree[].name | string | No | example: "Account" |
| data.tree[].description | string | No | example: "" |
| data.tree[].icon | string | No | example: "" |
| data.tree[].sort_order | integer | No | example: 0 |
| data.tree[].is_published | boolean | No | example: true |
| data.tree[].articles | array of object | No | |
| data.tree[].articles[].id | integer | No | example: 1 |
| data.tree[].articles[].created_at | string (date-time) | No | example: "2025-08-28T10:00:00Z" |
| data.tree[].articles[].updated_at | string (date-time) | No | example: "2025-08-28T10:00:00Z" |
| data.tree[].articles[].collection_id | integer | No | example: 1 |
| data.tree[].articles[].author_id | integer | No | nullable: true |
| data.tree[].articles[].author_name | string | No | nullable: true |
| data.tree[].articles[].author_avatar | string | No | nullable: true |
| data.tree[].articles[].created_by | integer | No | nullable: true |
| data.tree[].articles[].created_by_name | string | No | nullable: true |
| data.tree[].articles[].slug | string | No | example: "reset-password" |
| data.tree[].articles[].locale | string | No | example: "en" |
| data.tree[].articles[].title | string | No | example: "Reset your password" |
| data.tree[].articles[].content | string | No | example: "<p>...</p>" |
| data.tree[].articles[].excerpt | string | No | example: "" |
| data.tree[].articles[].meta_title | string | No | example: "" |
| data.tree[].articles[].meta_description | string | No | example: "" |
| data.tree[].articles[].meta_image_url | string | No | example: "" |
| data.tree[].articles[].sort_order | integer | No | example: 0 |
| data.tree[].articles[].status | string | No | example: "published" |
| data.tree[].articles[].view_count | integer | No | example: 0 |
| data.tree[].articles[].ai_enabled | boolean | No | example: false |
| data.tree[].articles[].helpful_count | integer | No | example: 0 |
| data.tree[].articles[].not_helpful_count | integer | No | example: 0 |
| data.tree[].children | array of object | No | |
| data.tree[].children[] | object | Recursive schema: #/components/schemas/HelpCenterTreeCollection | |
| data.tree[].article_count | integer | No | example: 3 |
| data.tree[].authors | array of object | No | |
| data.tree[].authors[].name | string | No | example: "Agent A" |
| data.tree[].authors[].avatar | string | No | example: "" |
| data.tree[].author_count | integer | No | example: 1 |
404
Not found
Content type: application/json.
| Field | Type | Required | Description |
|---|---|---|---|
| status | string | No | example: "error" |
| message | string | No | Error message example: "Invalid request" |
| data | unspecified | No | Additional error data nullable: true |
| error_type | string (enum) | No | enum: ["GeneralException", "PermissionException", "InputException", "DataException", "NetworkException", "NotFoundException", "ConflictException", "UnauthorizedException", "RateLimitException"] |
429
Rate limit exceeded
Content type: application/json.
| Field | Type | Required | Description |
|---|---|---|---|
| status | string | No | example: "error" |
| message | string | No | Error message example: "Invalid request" |
| data | unspecified | No | Additional error data nullable: true |
| error_type | string (enum) | No | enum: ["GeneralException", "PermissionException", "InputException", "DataException", "NetworkException", "NotFoundException", "ConflictException", "UnauthorizedException", "RateLimitException"] |
500
Internal server error
Content type: application/json.
| Field | Type | Required | Description |
|---|---|---|---|
| status | string | No | example: "error" |
| message | string | No | Error message example: "Invalid request" |
| data | unspecified | No | Additional error data nullable: true |
| error_type | string (enum) | No | enum: ["GeneralException", "PermissionException", "InputException", "DataException", "NetworkException", "NotFoundException", "ConflictException", "UnauthorizedException", "RateLimitException"] |
Specification
Download the complete OpenAPI specification.
OpenAPI definition for this endpoint
openapi: 3.0.0
info:
title: Libredesk API
description: >-
REST API documentation for Libredesk helpdesk system.
## Authentication
The Libredesk API supports two authentication methods:
### 1. Basic Authentication
Use your API key and secret with Basic authentication:
```
Authorization: Basic <base64_encoded_api_key:api_secret>
```
### 2. Token Authentication
Use your API key and secret with token authentication:
```
Authorization: token api_key:api_secret
```
To obtain API credentials, generate them from your agent profile in the
Libredesk dashboard.
version: 1.0.0
servers:
- url: http://localhost:8080
description: Local development server
security:
- basicAuth: []
- tokenAuth: []
paths:
/api/v1/public/help-centers/{slug}/tree:
get:
tags:
- Help center
summary: Get Public Help Center Tree
operationId: handleGetPublicHelpCenterTree
parameters:
- name: slug
in: path
required: true
schema:
type: string
description: Help center slug.
- name: locale
in: query
required: false
schema:
type: string
description: >-
Locale code. Falls back to the help center's default locale when
missing or not allowed.
responses:
'200':
description: Published collections and articles of an active help center
content:
application/json:
schema:
$ref: '#/components/schemas/HelpCenterTreeResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security: []
components:
schemas:
HelpCenterTreeResponse:
type: object
properties:
status:
type: string
example: success
data:
$ref: '#/components/schemas/HelpCenterTree'
ErrorResponse:
type: object
description: Error response format
properties:
status:
type: string
example: error
message:
type: string
description: Error message
example: Invalid request
data:
nullable: true
description: Additional error data
error_type:
type: string
enum:
- GeneralException
- PermissionException
- InputException
- DataException
- NetworkException
- NotFoundException
- ConflictException
- UnauthorizedException
- RateLimitException
HelpCenterTree:
type: object
properties:
help_center:
$ref: '#/components/schemas/HelpCenter'
tree:
type: array
items:
$ref: '#/components/schemas/HelpCenterTreeCollection'
HelpCenter:
type: object
properties:
id:
type: integer
example: 1
created_at:
type: string
format: date-time
example: '2025-08-28T10:00:00Z'
updated_at:
type: string
format: date-time
example: '2025-08-28T10:00:00Z'
name:
type: string
example: Help center
slug:
type: string
example: help
page_title:
type: string
example: Help center
meta_description:
type: string
example: ''
custom_css:
type: string
example: ''
custom_js:
type: string
example: ''
default_locale:
type: string
example: en
allowed_locales:
type: array
items:
type: string
example:
- en
is_active:
type: boolean
example: true
theme:
type: object
description: Help center theme settings.
custom_domain:
type: string
example: ''
template:
type: string
example: classic
HelpCenterTreeCollection:
type: object
properties:
id:
type: integer
example: 1
created_at:
type: string
format: date-time
example: '2025-08-28T10:00:00Z'
updated_at:
type: string
format: date-time
example: '2025-08-28T10:00:00Z'
help_center_id:
type: integer
example: 1
slug:
type: string
example: account
parent_id:
type: integer
nullable: true
locale:
type: string
example: en
name:
type: string
example: Account
description:
type: string
example: ''
icon:
type: string
example: ''
sort_order:
type: integer
example: 0
is_published:
type: boolean
example: true
articles:
type: array
items:
$ref: '#/components/schemas/HelpCenterArticle'
children:
type: array
items:
$ref: '#/components/schemas/HelpCenterTreeCollection'
article_count:
type: integer
example: 3
authors:
type: array
items:
$ref: '#/components/schemas/HelpCenterArticleAuthor'
author_count:
type: integer
example: 1
HelpCenterArticle:
type: object
properties:
id:
type: integer
example: 1
created_at:
type: string
format: date-time
example: '2025-08-28T10:00:00Z'
updated_at:
type: string
format: date-time
example: '2025-08-28T10:00:00Z'
collection_id:
type: integer
example: 1
author_id:
type: integer
nullable: true
author_name:
type: string
nullable: true
author_avatar:
type: string
nullable: true
created_by:
type: integer
nullable: true
created_by_name:
type: string
nullable: true
slug:
type: string
example: reset-password
locale:
type: string
example: en
title:
type: string
example: Reset your password
content:
type: string
example: <p>...</p>
excerpt:
type: string
example: ''
meta_title:
type: string
example: ''
meta_description:
type: string
example: ''
meta_image_url:
type: string
example: ''
sort_order:
type: integer
example: 0
status:
type: string
example: published
view_count:
type: integer
example: 0
ai_enabled:
type: boolean
example: false
helpful_count:
type: integer
example: 0
not_helpful_count:
type: integer
example: 0
HelpCenterArticleAuthor:
type: object
properties:
name:
type: string
example: Agent A
avatar:
type: string
example: ''
securitySchemes:
basicAuth:
type: http
scheme: basic
description: >-
Basic authentication using base64 encoded API key and secret. Format:
`Authorization: Basic <base64(api_key:api_secret)>`
tokenAuth:
type: apiKey
name: Authorization
in: header
description: >-
Token authentication using API key and secret. Format: `Authorization:
token api_key:api_secret`
