Jay's Portfolio API Documentation

Base path: /api
GET
/api/health
Health check
/api/public/site-config
Public site configuration for frontend
/api/public/projects
Public list of visible projects
/api/public/articles/:id
Public article by id with images and project
/api/projects
List all projects (admin)
🔒 Authentication required
/api/projects/:id
Get a single project by id
🔒 Authentication required
/api/articles
List all articles (admin)
🔒 Authentication required
/api/articles/:id
Get a single article
🔒 Authentication required
/api/site-config
Get all site configuration (admin)
🔒 Authentication required
POST
/api/auth/login
Issue admin JWT with password
Sample payload
{
  "password": "your-admin-password"
}
/api/connect/sendMessage
Submit a contact message and send notification email
Sample payload
{
  "email": "user@example.com",
  "message": "Hello!"
}
/api/projects
Create a new project
🔒 Authentication required
Sample payload
{
  "title": "Project title",
  "about": "Short about",
  "tech": ["Vue", "Node"],
  "year": 2024,
  "show": true
}
/api/articles
Create a new article
🔒 Authentication required
Sample payload
{
  "title": "Case study",
  "projectType": "personal",
  "overview": "...",
  "techStack": ["Vue", "Node"],
  "situation": "...",
  "task": "...",
  "action": "...",
  "result": "..."
}
/api/images
Upload image (currently disabled)
🔒 Authentication required
Sample payload
{
  "file": ""
}
PUT
/api/projects/:id
Update an existing project
🔒 Authentication required
/api/projects/:id/link-article
Link or unlink an article to a project
🔒 Authentication required
/api/articles/:id
Update an existing article
🔒 Authentication required
/api/images/reorder/batch
Reorder images in batch (currently disabled)
🔒 Authentication required
/api/images/:id
Update image metadata (currently disabled)
🔒 Authentication required
/api/site-config/:key
Update a site configuration entry
🔒 Authentication required
DELETE
/api/projects/:id
Delete a project
🔒 Authentication required
/api/articles/:id
Delete an article
🔒 Authentication required
/api/images/:id
Delete an image (currently disabled)
🔒 Authentication required