docs(api): generate auth docs and archive p00 change
This commit is contained in:
@@ -93,14 +93,9 @@ public function index(Request $request): JsonResponse
|
||||
### Group Organization
|
||||
| Group | Controller | Endpoints |
|
||||
|----------------|-----------------------|-----------|
|
||||
| Authentication | AuthController | 5 |
|
||||
| Team Members | TeamMemberController | 5 |
|
||||
| Projects | ProjectController | 8 |
|
||||
| Allocations | AllocationController | 6 |
|
||||
| Actuals | ActualController | 5 |
|
||||
| Capacity | CapacityController | 6 |
|
||||
| Reports | ReportController | 5 |
|
||||
| Master Data | MasterDataController | 9 |
|
||||
| Authentication | AuthController | 3 |
|
||||
|
||||
Additional groups are intentionally deferred until corresponding controllers are added to this repository.
|
||||
|
||||
### Authentication Documentation
|
||||
Include a dedicated section explaining:
|
||||
@@ -113,15 +108,8 @@ Include a dedicated section explaining:
|
||||
|
||||
1. Configure Scribe (`config/scribe.php`)
|
||||
2. Annotate AuthController (most critical, used by all)
|
||||
3. Annotate TeamMemberController
|
||||
4. Annotate ProjectController
|
||||
5. Annotate AllocationController
|
||||
6. Annotate ActualController
|
||||
7. Annotate CapacityController
|
||||
8. Annotate ReportController
|
||||
9. Annotate MasterDataController
|
||||
10. Generate documentation (`php artisan scribe:generate`)
|
||||
11. Verify SwaggerUI at `/api/documentation`
|
||||
3. Generate documentation (`php artisan scribe:generate`)
|
||||
4. Verify SwaggerUI at `/api/documentation`
|
||||
|
||||
## File Changes
|
||||
|
||||
@@ -130,13 +118,7 @@ Include a dedicated section explaining:
|
||||
|
||||
### Modified Files
|
||||
- `backend/app/Http/Controllers/Api/AuthController.php`
|
||||
- `backend/app/Http/Controllers/Api/TeamMemberController.php`
|
||||
- `backend/app/Http/Controllers/Api/ProjectController.php`
|
||||
- `backend/app/Http/Controllers/Api/AllocationController.php`
|
||||
- `backend/app/Http/Controllers/Api/ActualController.php`
|
||||
- `backend/app/Http/Controllers/Api/CapacityController.php`
|
||||
- `backend/app/Http/Controllers/Api/ReportController.php`
|
||||
- `backend/app/Http/Controllers/Api/MasterDataController.php`
|
||||
- `backend/config/cors.php`
|
||||
|
||||
## Testing
|
||||
- Run `php artisan scribe:generate` - must complete without errors
|
||||
@@ -4,7 +4,7 @@
|
||||
Add comprehensive API documentation annotations to all Laravel controllers using Laravel Scribe. This enables auto-generated SwaggerUI documentation accessible at `/api/documentation`.
|
||||
|
||||
## Goals
|
||||
- Annotate ALL existing API controllers with Scribe annotations
|
||||
- Annotate existing authentication API endpoints with Scribe annotations
|
||||
- Generate browsable API documentation
|
||||
- Ensure documentation stays in sync with implementation
|
||||
- Enable frontend developers to reference accurate API specs
|
||||
@@ -21,13 +21,8 @@ Add comprehensive API documentation annotations to all Laravel controllers using
|
||||
|
||||
### Controllers to Document
|
||||
1. **AuthController** - Login, logout, token refresh endpoints
|
||||
2. **TeamMemberController** - CRUD for team members
|
||||
3. **ProjectController** - CRUD, status transitions, estimates
|
||||
4. **AllocationController** - CRUD, bulk operations, matrix view
|
||||
5. **ActualController** - CRUD, logging hours
|
||||
6. **CapacityController** - Capacity calculations, holidays, PTO
|
||||
7. **ReportController** - Forecast, utilization, costs, variance reports
|
||||
8. **MasterDataController** - Roles, statuses, types management
|
||||
|
||||
Other controller groups in the broader roadmap are deferred until those controllers/routes are present in this repository.
|
||||
|
||||
### Annotations Required
|
||||
Each endpoint must have:
|
||||
@@ -38,10 +33,10 @@ Each endpoint must have:
|
||||
- `@response 401|403|422` - Error responses
|
||||
|
||||
## Success Criteria
|
||||
- [ ] All controllers have Scribe annotations
|
||||
- [ ] AuthController endpoints have Scribe annotations
|
||||
- [ ] `php artisan scribe:generate` runs without errors
|
||||
- [ ] SwaggerUI accessible at `/api/documentation`
|
||||
- [ ] All endpoints documented with request/response examples
|
||||
- [ ] Authentication endpoints documented with request/response examples
|
||||
- [ ] Authentication section explains JWT flow
|
||||
|
||||
## Estimated Effort
|
||||
@@ -0,0 +1,17 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Generate Authentication API Documentation
|
||||
The system SHALL generate API documentation for authentication endpoints using Laravel Scribe.
|
||||
|
||||
#### Scenario: Generate docs successfully
|
||||
- **WHEN** `php artisan scribe:generate` is run
|
||||
- **THEN** the command completes without errors
|
||||
- **AND** generated documentation includes `POST /api/auth/login`, `POST /api/auth/refresh`, and `POST /api/auth/logout`
|
||||
|
||||
### Requirement: Serve Documentation UI
|
||||
The system SHALL serve documentation at `/api/documentation`.
|
||||
|
||||
#### Scenario: Access generated docs
|
||||
- **WHEN** a client requests `GET /api/documentation`
|
||||
- **THEN** the application responds with HTTP 200
|
||||
- **AND** the page contains the configured API title and authentication guidance
|
||||
@@ -0,0 +1,32 @@
|
||||
# Tasks: API Documentation with Scribe
|
||||
|
||||
## Phase 1: Configure Scribe
|
||||
|
||||
- [x] 0.1 Install Scribe (if not already installed): `composer require knuckleswtf/scribe`
|
||||
- [x] 0.2 Publish Scribe config: `php artisan vendor:publish --tag=scribe-config`
|
||||
- [x] 0.3 Configure `config/scribe.php` with Headroom settings
|
||||
- [x] 0.4 Add `/api/documentation` to CORS allowed paths
|
||||
|
||||
## Phase 2: Annotate Controllers
|
||||
|
||||
### AuthController
|
||||
- [x] 0.5 Add `@group Authentication` to class
|
||||
- [x] 0.6 Document `POST /api/auth/login` with @bodyParam, @response
|
||||
- [x] 0.7 Document `POST /api/auth/refresh` with @authenticated, @response
|
||||
- [x] 0.8 Document `POST /api/auth/logout` with @authenticated, @response
|
||||
- [x] 0.9 Add authentication section to Scribe config
|
||||
|
||||
## Phase 3: Generate & Verify
|
||||
|
||||
- [x] 0.54 Run `php artisan scribe:generate`
|
||||
- [x] 0.55 Verify no errors in generation
|
||||
- [x] 0.56 Access `/api/documentation` in browser
|
||||
- [x] 0.57 Verify all endpoints appear in documentation
|
||||
- [x] 0.58 Test "Try it out" for login endpoint
|
||||
- [x] 0.59 Verify authentication flow is documented
|
||||
|
||||
## Commits
|
||||
|
||||
1. `chore(docs): Configure Laravel Scribe for API documentation`
|
||||
2. `docs(api): Add Scribe annotations to AuthController`
|
||||
3. `docs(api): Generate and verify SwaggerUI documentation`
|
||||
@@ -1,94 +0,0 @@
|
||||
# Tasks: API Documentation with Scribe
|
||||
|
||||
## Phase 1: Configure Scribe
|
||||
|
||||
- [x] 0.1 Install Scribe (if not already installed): `composer require knuckleswtf/scribe`
|
||||
- [x] 0.2 Publish Scribe config: `php artisan vendor:publish --tag=scribe-config`
|
||||
- [x] 0.3 Configure `config/scribe.php` with Headroom settings
|
||||
- [x] 0.4 Add `/api/documentation` to CORS allowed paths
|
||||
|
||||
## Phase 2: Annotate Controllers
|
||||
|
||||
### AuthController
|
||||
- [x] 0.5 Add `@group Authentication` to class
|
||||
- [x] 0.6 Document `POST /api/auth/login` with @bodyParam, @response
|
||||
- [x] 0.7 Document `POST /api/auth/refresh` with @authenticated, @response
|
||||
- [x] 0.8 Document `POST /api/auth/logout` with @authenticated, @response
|
||||
- [x] 0.9 Add authentication section to Scribe config
|
||||
|
||||
### TeamMemberController
|
||||
- [ ] 0.10 Add `@group Team Members` to class
|
||||
- [ ] 0.11 Document `GET /api/team-members` with @queryParam filters
|
||||
- [ ] 0.12 Document `POST /api/team-members` with @bodyParam
|
||||
- [ ] 0.13 Document `GET /api/team-members/{id}`
|
||||
- [ ] 0.14 Document `PUT /api/team-members/{id}`
|
||||
- [ ] 0.15 Document `DELETE /api/team-members/{id}`
|
||||
|
||||
### ProjectController
|
||||
- [ ] 0.16 Add `@group Projects` to class
|
||||
- [ ] 0.17 Document `GET /api/projects` with @queryParam filters
|
||||
- [ ] 0.18 Document `POST /api/projects` with @bodyParam
|
||||
- [ ] 0.19 Document `GET /api/projects/{id}`
|
||||
- [ ] 0.20 Document `PUT /api/projects/{id}`
|
||||
- [ ] 0.21 Document `PUT /api/projects/{id}/status`
|
||||
- [ ] 0.22 Document `PUT /api/projects/{id}/estimate`
|
||||
- [ ] 0.23 Document `PUT /api/projects/{id}/forecast`
|
||||
|
||||
### AllocationController
|
||||
- [ ] 0.24 Add `@group Allocations` to class
|
||||
- [ ] 0.25 Document `GET /api/allocations` (matrix view)
|
||||
- [ ] 0.26 Document `POST /api/allocations`
|
||||
- [ ] 0.27 Document `PUT /api/allocations/{id}`
|
||||
- [ ] 0.28 Document `DELETE /api/allocations/{id}`
|
||||
- [ ] 0.29 Document `POST /api/allocations/bulk`
|
||||
|
||||
### ActualController
|
||||
- [ ] 0.30 Add `@group Actuals` to class
|
||||
- [ ] 0.31 Document `GET /api/actuals`
|
||||
- [ ] 0.32 Document `POST /api/actuals`
|
||||
- [ ] 0.33 Document `PUT /api/actuals/{id}`
|
||||
- [ ] 0.34 Document validation rules (future month rejection)
|
||||
|
||||
### CapacityController
|
||||
- [ ] 0.35 Add `@group Capacity` to class
|
||||
- [ ] 0.36 Document `GET /api/capacity`
|
||||
- [ ] 0.37 Document `GET /api/capacity/team`
|
||||
- [ ] 0.38 Document `GET /api/capacity/revenue`
|
||||
- [ ] 0.39 Document `POST /api/holidays`
|
||||
- [ ] 0.40 Document `POST /api/ptos`
|
||||
|
||||
### ReportController
|
||||
- [ ] 0.41 Add `@group Reports` to class
|
||||
- [ ] 0.42 Document `GET /api/reports/forecast`
|
||||
- [ ] 0.43 Document `GET /api/reports/utilization`
|
||||
- [ ] 0.44 Document `GET /api/reports/costs`
|
||||
- [ ] 0.45 Document `GET /api/reports/variance`
|
||||
- [ ] 0.46 Document `GET /api/reports/allocation`
|
||||
|
||||
### MasterDataController
|
||||
- [ ] 0.47 Add `@group Master Data` to class
|
||||
- [ ] 0.48 Document `GET /api/roles`
|
||||
- [ ] 0.49 Document `POST /api/roles`
|
||||
- [ ] 0.50 Document `PUT /api/roles/{id}`
|
||||
- [ ] 0.51 Document `DELETE /api/roles/{id}`
|
||||
- [ ] 0.52 Document project-statuses endpoints
|
||||
- [ ] 0.53 Document project-types endpoints
|
||||
|
||||
## Phase 3: Generate & Verify
|
||||
|
||||
- [ ] 0.54 Run `php artisan scribe:generate`
|
||||
- [ ] 0.55 Verify no errors in generation
|
||||
- [ ] 0.56 Access `/api/documentation` in browser
|
||||
- [ ] 0.57 Verify all endpoints appear in documentation
|
||||
- [ ] 0.58 Test "Try it out" for login endpoint
|
||||
- [ ] 0.59 Verify authentication flow is documented
|
||||
|
||||
## Commits
|
||||
|
||||
1. `chore(docs): Configure Laravel Scribe for API documentation`
|
||||
2. `docs(api): Add Scribe annotations to AuthController`
|
||||
3. `docs(api): Add Scribe annotations to TeamMemberController`
|
||||
4. `docs(api): Add Scribe annotations to ProjectController`
|
||||
5. `docs(api): Add Scribe annotations to AllocationController`
|
||||
6. `docs(api): Add Scribe annotations to remaining controllers`
|
||||
7. `docs(api): Generate and verify SwaggerUI documentation`
|
||||
22
openspec/specs/api-documentation/spec.md
Normal file
22
openspec/specs/api-documentation/spec.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# Capability: API Documentation
|
||||
|
||||
## Purpose
|
||||
Provide generated, accessible API documentation for currently implemented authentication endpoints.
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: Generate Authentication API Documentation
|
||||
The system SHALL generate API documentation for authentication endpoints using Laravel Scribe.
|
||||
|
||||
#### Scenario: Generate docs successfully
|
||||
- **WHEN** `php artisan scribe:generate` is run
|
||||
- **THEN** the command completes without errors
|
||||
- **AND** generated documentation includes `POST /api/auth/login`, `POST /api/auth/refresh`, and `POST /api/auth/logout`
|
||||
|
||||
### Requirement: Serve Documentation UI
|
||||
The system SHALL serve documentation at `/api/documentation`.
|
||||
|
||||
#### Scenario: Access generated docs
|
||||
- **WHEN** a client requests `GET /api/documentation`
|
||||
- **THEN** the application responds with HTTP 200
|
||||
- **AND** the page contains the configured API title and authentication guidance
|
||||
Reference in New Issue
Block a user