3.7 KiB
3.7 KiB
TekDek Employees API Documentation
Base URL
https://your-domain.com/api
Endpoints
List All Employees
GET /api/employees
Response: 200 OK
{
"success": true,
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"slug": "daedalus",
"name": "Daedalus",
"title": "Chief Architect",
"role": "Architecture & Systems Design",
"tagline": "The master builder who sees the whole labyrinth.",
"bio": "Daedalus is the architectural mind behind TekDek...",
"mythology": "Named for the mythological master craftsman...",
"avatar_url": null,
"accent_color": "#C4A24E",
"symbol": "labyrinth",
"skills": ["System Architecture", "Database Design", "API Specification", "Technical Planning", "Code Review"],
"quote": "A well-designed system is indistinguishable from inevitability.",
"sort_order": 1,
"created_at": "2025-07-27 00:00:00",
"updated_at": "2025-07-27 00:00:00"
}
],
"count": 3
}
Get Employee by Slug
GET /api/employees/:slug
Parameters:
| Parameter | Type | Description |
|---|---|---|
| slug | string | URL-safe identifier (lowercase, a-z, 0-9, hyphens) |
Response: 200 OK
{
"success": true,
"data": {
"id": "550e8400-e29b-41d4-a716-446655440001",
"slug": "talos",
"name": "Talos",
"title": "Lead Backend Engineer",
"role": "Backend Engineering & Implementation",
"tagline": "The bronze guardian who never stops running.",
"bio": "Talos is the engine room of TekDek...",
"mythology": "Named for the giant bronze automaton...",
"avatar_url": null,
"accent_color": "#7B8794",
"symbol": "gear",
"skills": ["PHP", "MySQL", "REST APIs", "Testing", "Performance Optimization", "Server Infrastructure"],
"quote": "If it compiles but can't survive production, it doesn't exist.",
"sort_order": 2,
"created_at": "2025-07-27 00:00:00",
"updated_at": "2025-07-27 00:00:00"
}
}
Response: 404 Not Found
{
"success": false,
"error": "Employee 'unknown-slug' not found."
}
Response: 400 Bad Request (invalid slug format)
{
"success": false,
"error": "Invalid slug format. Use lowercase letters, numbers, and hyphens (1-50 chars)."
}
Error Responses
All errors follow the same structure:
{
"success": false,
"error": "Description of what went wrong."
}
| Code | Meaning |
|---|---|
| 200 | Success |
| 400 | Invalid input |
| 404 | Not found |
| 405 | Method not allowed |
| 500 | Server error |
Headers
All responses include:
Content-Type: application/json; charset=utf-8Access-Control-Allow-Origin: *Cache-Control: public, max-age=300, s-maxage=600X-Content-Type-Options: nosniff
CORS
Full CORS support. Preflight OPTIONS requests return 204 No Content with appropriate headers.
Caching
Responses are cache-friendly with 5-minute browser cache and 10-minute CDN cache. Employee data changes infrequently.
Setup
# Install dependencies
composer install
# Run migrations
mysql -u root -p tekdek < database/migrations/001_create_employees_table.sql
# Seed data
mysql -u root -p tekdek < database/seeds/001_seed_employees.sql
# Run tests
composer test
# Set environment variables
export DB_HOST=127.0.0.1
export DB_PORT=3306
export DB_NAME=tekdek
export DB_USER=root
export DB_PASS=yourpassword