Portfolio — Public Endpoints
The Portfolio module exposes public endpoints for external websites to fetch portfolio data. All endpoints require API token authentication.
Base URL
{API_BASE}/api/portfolio/v1/public
Endpoints
GET /all
Fetch all portfolio data in a single request. This is the recommended endpoint for building portfolio sites.
Response:
{
"data": {
"profile": { ... },
"projects": [ ... ],
"skills": [ ... ],
"experiences": [ ... ],
"education": [ ... ],
"testimonials": [ ... ],
"certifications": [ ... ],
"socialLinks": [ ... ],
"customSections": [ ... ]
}
}
GET /profile
Fetch the portfolio owner's profile.
Response:
{
"data": {
"id": 1,
"firstName": "John",
"lastName": "Doe",
"title": "Full Stack Developer",
"bio": "...",
"avatarUrl": "...",
"location": "Paris, France",
"email": "john@example.com",
"phone": "+33...",
"website": "https://johndoe.dev"
}
}
GET /projects
Fetch all portfolio projects.
Response:
{
"data": [
{
"id": 1,
"title": "E-Commerce Platform",
"description": "...",
"imageUrl": "...",
"projectUrl": "...",
"githubUrl": "...",
"technologies": ["React", "Node.js", "PostgreSQL"],
"featured": true,
"sortOrder": 1
}
]
}
GET /skills
Fetch all skills grouped by category.
GET /experiences
Fetch work experiences sorted by date.
GET /education
Fetch education entries.
GET /testimonials
Fetch client/colleague testimonials.
GET /certifications
Fetch professional certifications.
GET /social-links
Fetch social media links.
Response Format
All responses follow the standard format:
{
"data": { ... },
"meta": {
"cached": true,
"cacheExpires": "2024-01-01T00:00:00Z"
}
}
Cache Headers
Public endpoints include cache headers:
Cache-Control: public, max-age=300- Responses are cached server-side for 5 minutes