Portfolio — Public Endpoints

Complete reference for Portfolio module public API endpoints

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.

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