Files
Brain/tekdek-employees-api/docs/API.md

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-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

# 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