3.0 KiB
3.0 KiB
Tag API
Prefix:
/api/v1/tags,/api/v1/admin/tag
Tags are used for categorizing blog posts.
GET /api/v1/tags
List all active tags.
Permission: PUBLIC
Response 200
{
"success": true,
"data": [
{ "id": 1, "name": "دیابت", "slug": "diabat", "status": "active" },
{ "id": 2, "name": "قلب", "slug": "ghalb", "status": "active" }
]
}
GET /api/v1/admin/tags
List all tags with pagination (admin view — includes inactive).
Permission: ROLE_ADMIN
Query Parameters
| Param | Type | Required | Description |
|---|---|---|---|
page |
integer | ❌ | Default: 1 |
limit |
integer | ❌ | Default: 20 |
search |
string | ❌ | Search in name |
Response 200
{
"success": true,
"data": [ ... ],
"meta": { "totalRecords": 10, "totalPages": 1, "currentPage": 1 }
}
Errors
| Code | HTTP | Description |
|---|---|---|
ERR_AUTH_001 |
401 | Missing token |
ERR_AUTH_006 |
403 | Not admin |
POST /api/v1/admin/tag
Create a new tag.
Permission: ROLE_ADMIN
Request Body (application/json)
{
"name": "دیابت",
"slug": "diabat",
"status": "active"
}
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | ✅ | Tag name |
slug |
string | ❌ | Auto-generated from name if omitted |
status |
string | ❌ | "active" (default) or "inactive" |
Response 201
Tag object.
Errors
| Code | HTTP | Description |
|---|---|---|
ERR_AUTH_001 |
401 | Missing token |
ERR_AUTH_006 |
403 | Not admin |
ERR_VALIDATION_002 |
422 | Missing name |
PATCH /api/v1/admin/tag/{id}
Update a tag.
Permission: ROLE_ADMIN
Path Parameters
| Param | Type | Description |
|---|---|---|
id |
integer | Tag ID |
All fields optional.
Response 200
Updated tag object.
Errors
| Code | HTTP | Description |
|---|---|---|
ERR_AUTH_001 |
401 | Missing token |
ERR_AUTH_006 |
403 | Not admin |
ERR_NOT_FOUND_001 |
404 | Tag not found |
DELETE /api/v1/admin/tag/{id}
Delete a tag.
Permission: ROLE_ADMIN
Response 200
{ "success": true, "data": { "message": "تگ حذف شد" } }
Errors
| Code | HTTP | Description |
|---|---|---|
ERR_AUTH_001 |
401 | Missing token |
ERR_AUTH_006 |
403 | Not admin |
ERR_NOT_FOUND_001 |
404 | Tag not found |
Bulk import / export
Full-table JSON export and strict wipe+replace import for this category live under
/api/v1/admin/categories/{bundle}/{export|import} — see category-import.md.
Sorting by id
The admin list endpoint accepts sort=id&order=asc|desc to order by id
(used by the admin «دستهبندیها» page when clicking the «شناسه» column).
Without sort, the default ordering (weight/name) is unchanged.