Skip to main content
POST
/
api
/
management
/
categories
Create Category
curl --request POST \
  --url https://api.example.com/api/management/categories \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>"
}
'
{
  "success": true,
  "timestamp": "<string>",
  "data": {
    "id": 123,
    "name": "<string>"
  },
  "message": "<string>",
  "error": {}
}

Endpoint

POST /api/management/categories

Authentication

Required: ADMIN role This endpoint requires authentication with an admin user account. Include a valid JWT token in the Authorization header.

Request Headers

Authorization: Bearer <token>
Content-Type: application/json

Request Body

name
string
required
Name of the categoryValidation:
  • Cannot be blank
  • Must be between 2 and 100 characters

Response

success
boolean
required
Indicates if the request was successful
timestamp
string
required
ISO 8601 timestamp of the response
data
object
required
The created category object
id
long
required
Unique identifier for the newly created category
name
string
required
Name of the category
message
string
Optional message
error
object
Error details (null on success)

Example Request

curl -X POST "http://localhost:8080/api/management/categories" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Science Fiction"
  }'

Example Response

Success (200 OK)

{
  "success": true,
  "timestamp": "2026-03-03T10:30:00Z",
  "data": {
    "id": 4,
    "name": "Science Fiction"
  },
  "message": null,
  "error": null
}

Error - Validation Failed (400)

{
  "success": false,
  "timestamp": "2026-03-03T10:30:00Z",
  "data": null,
  "message": null,
  "error": {
    "message": "Validation failed",
    "details": [
      "Category name must be between 2 and 100 characters"
    ]
  }
}

Error - Unauthorized (401)

{
  "success": false,
  "timestamp": "2026-03-03T10:30:00Z",
  "data": null,
  "message": null,
  "error": {
    "message": "Unauthorized",
    "details": []
  }
}

Error - Forbidden (403)

{
  "success": false,
  "timestamp": "2026-03-03T10:30:00Z",
  "data": null,
  "message": null,
  "error": {
    "message": "Access denied. ADMIN role required.",
    "details": []
  }
}

Validation Rules

The category name must satisfy the following constraints:
  • Not blank: The name field is required and cannot be empty or contain only whitespace
  • Length: Must be between 2 and 100 characters (inclusive)

Source Code Reference

Controller: apps/spring-boot-app/src/main/java/me/seyrek/library_management_system/category/controller/CategoryManagementController.java:24 DTO: apps/spring-boot-app/src/main/java/me/seyrek/library_management_system/category/dto/CategoryCreateRequest.java:6

Build docs developers (and LLMs) love