# TekDek Employees API Documentation ## Base URL ``` https://your-domain.com/api ``` ## Endpoints ### List All Employees ``` GET /api/employees ``` **Response: 200 OK** ```json { "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** ```json { "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** ```json { "success": false, "error": "Employee 'unknown-slug' not found." } ``` **Response: 400 Bad Request** (invalid slug format) ```json { "success": false, "error": "Invalid slug format. Use lowercase letters, numbers, and hyphens (1-50 chars)." } ``` ## Error Responses All errors follow the same structure: ```json { "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-8` - `Access-Control-Allow-Origin: *` - `Cache-Control: public, max-age=300, s-maxage=600` - `X-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 ```bash # 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 ```