Deploy: TekDek Employees Portal (Daedalus, Talos, Icarus) - Live at web.tekdek.dev
This commit is contained in:
158
tekdek-employees-api/docs/API.md
Normal file
158
tekdek-employees-api/docs/API.md
Normal file
@@ -0,0 +1,158 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user