Skip to main content

List All Projects

Authentication Required: This endpoint requires a valid JWT token.
GET /api/me/projects
Retrieve all project entries for the authenticated user.

Response

status
string
Response status (“success” or “error”)
message
string
Response message
data
array
Array of project entries
id
long
Project ID
title
string
Project title
slug
string
URL-friendly project slug
summary
string
Brief project summary
description
string
Detailed project description
repoUrl
string
Repository URL (e.g., GitHub)
liveUrl
string
Live demo URL
coverImage
string
Cover image URL
startDate
string
Project start date (ISO 8601 format: YYYY-MM-DD)
endDate
string
Project end date (ISO 8601 format: YYYY-MM-DD)
Whether this project is featured
sortOrder
integer
Display order for sorting
skills
array
Array of associated skills
id
long
Skill ID
name
string
Skill name
globalSkillId
long
Global skill reference ID
level
integer
Skill proficiency level (0-100)
icon
string
Skill icon identifier
curl -X GET https://api.portfoliohub.com/api/me/projects \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

Get Project by ID

Authentication Required: This endpoint requires a valid JWT token.
GET /api/me/projects/{id}
Retrieve a specific project entry by ID.

Path Parameters

id
long
required
Project ID

Response

status
string
Response status (“success” or “error”)
message
string
Response message
data
object
Project details (same structure as list items)
curl -X GET https://api.portfoliohub.com/api/me/projects/1 \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

Create Project

Authentication Required: This endpoint requires a valid JWT token.
POST /api/me/projects
Create a new project entry.

Request Body

title
string
required
Project title (max 140 characters)
summary
string
required
Brief project summary (max 280 characters)
description
string
Detailed project description (max 65535 characters)
repoUrl
string
Repository URL (max 512 characters)
liveUrl
string
Live demo URL (max 512 characters)
coverImage
string
Cover image URL (max 512 characters)
startDate
string
Project start date in ISO 8601 format (YYYY-MM-DD)
endDate
string
Project end date in ISO 8601 format (YYYY-MM-DD)
Whether this project should be featured
sortOrder
integer
required
Display order for sorting projects

Response

status
string
Response status (“success” or “error”)
message
string
Response message
data
object
Created project entry
curl -X POST https://api.portfoliohub.com/api/me/projects \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "E-Commerce Platform",
    "summary": "Full-stack e-commerce solution with real-time inventory",
    "description": "Built a scalable e-commerce platform using microservices architecture...",
    "repoUrl": "https://github.com/user/ecommerce",
    "liveUrl": "https://demo.ecommerce.com",
    "coverImage": "https://example.com/projects/ecommerce.jpg",
    "startDate": "2023-01-15",
    "endDate": "2023-06-30",
    "featured": true,
    "sortOrder": 1
  }'

Update Project

Authentication Required: This endpoint requires a valid JWT token.
PUT /api/me/projects/{id}
Update an existing project entry.

Path Parameters

id
long
required
Project ID to update

Request Body

title
string
required
Project title (max 140 characters)
summary
string
required
Brief project summary (max 280 characters)
description
string
Detailed project description (max 65535 characters)
repoUrl
string
Repository URL (max 512 characters)
liveUrl
string
Live demo URL (max 512 characters)
coverImage
string
Cover image URL (max 512 characters)
startDate
string
Project start date in ISO 8601 format (YYYY-MM-DD)
endDate
string
Project end date in ISO 8601 format (YYYY-MM-DD)
Whether this project should be featured
sortOrder
integer
required
Display order for sorting projects

Response

status
string
Response status (“success” or “error”)
message
string
Response message
data
object
Updated project entry
curl -X PUT https://api.portfoliohub.com/api/me/projects/1 \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Advanced E-Commerce Platform",
    "summary": "Enterprise-grade e-commerce solution with AI-powered recommendations",
    "description": "Enhanced the platform with machine learning features...",
    "repoUrl": "https://github.com/user/ecommerce",
    "liveUrl": "https://demo.ecommerce.com",
    "coverImage": "https://example.com/projects/ecommerce-v2.jpg",
    "startDate": "2023-01-15",
    "endDate": "2023-12-30",
    "featured": true,
    "sortOrder": 1
  }'

Delete Project

Authentication Required: This endpoint requires a valid JWT token.
DELETE /api/me/projects/{id}
Delete a project entry.

Path Parameters

id
long
required
Project ID to delete

Response

status
string
Response status (“success” or “error”)
message
string
Response message
data
null
No data returned on successful deletion
curl -X DELETE https://api.portfoliohub.com/api/me/projects/1 \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

Associate Skills to Project

Authentication Required: This endpoint requires a valid JWT token.
POST /api/me/projects/{projectId}/skills
Associate multiple skills with a project.

Path Parameters

projectId
long
required
Project ID to associate skills with

Request Body

skillIds
array
required
Array of skill IDs to associate with the project

Response

status
string
Response status (“success” or “error”)
message
string
Response message
data
object
Updated project with associated skills
curl -X POST https://api.portfoliohub.com/api/me/projects/1/skills \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "skillIds": [10, 15, 22]
  }'

Build docs developers (and LLMs) love