API Reference

SkillLoop Core Endpoints and Payload Specifications.

API Status: Active

Base Configuration

All API requests must be routed through the base path below. Authentication tokens are verified on all guarded routes.
Base Server URL: /api/v1
  • All paths documented below are appended to the Base URL.
  • Secure requests require either the token Cookie (HttpOnly) or a Bearer Token in the Authorization header.

1. Authentication

POST /auth/register Public
Register a new platform account.
Request Payload
{
  "email": "user@example.com",
  "password": "securepassword",
  "firstName": "John",
  "lastName": "Doe"
}
Success Response
{
  "id": "uuid-string",
  "email": "user@example.com",
  "firstName": "John",
  "lastName": "Doe"
}
POST /auth/login Public
Authenticate profile credentials. Returns an HttpOnly JWT cookie.
Request Payload
{
  "email": "user@example.com",
  "password": "securepassword"
}
Success Response
{
  "message": "Logged in successfully",
  "user": {
    "id": "uuid-string",
    "email": "user@example.com"
  }
}
GET /auth/me Guard
Verify connection token and return active session owner profile.

2. Skill Listings

POST /skills Guard
Offer a technical skill to the platform marketplace.
Request Payload
{
  "title": "TypeScript Tutoring",
  "description": "Learn advanced type mechanics",
  "category": "Technology"
}
GET /skills Guard
Query active marketplace skill offerings. Supports pagination & filtering.

3. Skill Requests

POST /requests Guard
Submit a session request to a skill provider.
Request Payload
{
  "skillListingId": "uuid-listing-id",
  "schedulingLink": "https://calendly.com/...",
  "message": "Hi, I would love to learn typescript!"
}
PATCH /requests/:id Guard
Accept, reject, or cancel requests. Accepting creates a session and schedules meeting links.
Request Payload
{
  "status": "ACCEPTED"
}

4. Zoom OAuth API

GET /zoom/connect Guard
Generate authorization redirect URL for connecting a Zoom account.
Response
{
  "url": "https://zoom.us/oauth/authorize?response_type=code..."
}
GET /zoom/status Guard
Fetch connectivity status of user's Zoom account.
Response
{
  "connected": true,
  "updatedAt": "2026-07-16T22:30:00.000Z"
}
DELETE /zoom/disconnect Guard
Revoke Zoom access credentials.

5. Sessions & Feedback

PATCH /sessions/:id/complete Guard
Conclude a session, triggering token point awards to the tutor.
POST /sessions/:id/feedback Guard
Submit feedback ratings (1-5 scale) and reviews.

6. Admin & User Project APIs

Endpoints for Admins to create, list, edit, and delete user projects, plus dashboard metric counts and eligible user queries.
POST /admin/projects Admin
Create and assign a new project to a user.
Request Payload
{
  "userId": "user-uuid-here",
  "title": "Portfolio Website",
  "description": "Describe project goals...",
  "category": "UI/UX Design",
  "tasks": ["Wireframes", "Frontend"],
  "attachments": [],
  "startDate": "2026-06-20T09:30:00.000Z",
  "deadline": "2026-06-20T16:30:00.000Z",
  "deliverableTypes": ["FIGMA", "GITHUB"]
}
Success Response
{
  "message": "Project created successfully",
  "project": {
    "id": "prj-uuid",
    "projectCode": "PRJ-2026-14431",
    "status": "PENDING"
  }
}
GET /admin/projects Admin
List all projects with pagination filters and summary metric counts (total, completed, active, failed).
GET /admin/projects/eligible-users Admin
List users with completed session counts for project assignment eligibility.
PUT /admin/projects/:id Admin
Update project details, timelines, or status (PENDING, IN_PROGRESS, COMPLETED, FAILED).
DELETE /admin/projects/:id Admin
Delete a project by ID.
GET /projects Guard
Retrieve assigned projects for logged-in user.
POST /projects/:id/deliverables Guard
Submit project deliverables with optional rating and feedback.
POST /projects/:id/rating Guard
Rate project (1-5 stars) and submit feedback review.
GET /projects/:id/rating Guard
Retrieve rating summary and feedback entries for a project.