# Endpoint Request Schema Audit

**Date**: 2025-01-27  
**Action**: 1.2.1.3 - Audit all API endpoints for request schemas  
**Status**: ✅ Complete

## Overview

This document provides a comprehensive audit of all API endpoints and their request schema coverage status.

## Methodology

1. Extracted all endpoints from `veza-backend-api/docs/swagger.json`
2. Identified endpoints that require request bodies (POST, PUT, PATCH)
3. Cross-referenced with existing schemas in `apps/web/src/schemas/apiRequestSchemas.ts`
4. Categorized by schema status: ✅ Has Schema, ⚠️ Missing Schema, ➖ No Body Required

## Summary Statistics

- **Total Endpoints**: 56 endpoints
- **Endpoints Requiring Request Bodies**: 25 endpoints
- **Endpoints with Schemas**: 9 endpoints (36%)
- **Endpoints Missing Schemas**: 16 endpoints (64%)
- **GET/DELETE Endpoints** (no body): 31 endpoints

## Endpoints with Request Schemas ✅

### Authentication (3/6)
- ✅ `POST /auth/login` - `loginRequestSchema`
- ✅ `POST /auth/register` - `registerRequestSchema`
- ✅ `POST /auth/refresh` - `refreshRequestSchema`
- ⚠️ `POST /auth/2fa/setup` - Missing schema
- ⚠️ `POST /auth/2fa/verify` - Missing schema
- ⚠️ `POST /auth/2fa/disable` - Missing schema

### Tracks (2/6)
- ✅ `POST /tracks` - `createTrackRequestSchema` / `uploadTrackRequestSchema`
- ✅ `PUT /tracks/{id}` - `updateTrackRequestSchema`
- ⚠️ `POST /tracks/batch/delete` - Missing schema (BatchDeleteRequest)
- ⚠️ `POST /tracks/initiate` - Missing schema (InitiateChunkedUploadRequest)
- ⚠️ `POST /tracks/chunk` - Missing schema (UploadChunkRequest)
- ⚠️ `POST /tracks/complete` - Missing schema (CompleteChunkedUploadRequest)

### Playlists (2/3)
- ✅ `POST /playlists` - `createPlaylistRequestSchema`
- ✅ `POST /playlists/{id}/tracks` - `addTrackToPlaylistRequestSchema`
- ⚠️ `PUT /playlists/{id}` - Missing schema (updatePlaylistRequestSchema exists but not verified)

### Comments (2/2)
- ✅ `POST /tracks/{id}/comments` - `createCommentRequestSchema`
- ✅ `PUT /comments/{id}` - `updateCommentRequestSchema` (via PUT /tracks/{id}/comments/{comment_id})

### Users (2/2)
- ✅ `POST /users` - `createUserRequestSchema`
- ✅ `PUT /users/{id}` - `updateUserRequestSchema`

## Endpoints Missing Request Schemas ⚠️

### Analytics (1)
- ⚠️ `POST /analytics/events` - RecordEventRequest
  - **Fields**: event_type, properties, user_id, timestamp
  - **Priority**: MEDIUM

### Marketplace (2)
- ⚠️ `POST /api/v1/marketplace/products` - CreateProductRequest
  - **Fields**: name, description, price, type, file_url
  - **Priority**: LOW (feature may not be active)
  
- ⚠️ `POST /api/v1/marketplace/orders` - CreateOrderRequest
  - **Fields**: product_id, quantity, payment_method
  - **Priority**: LOW (feature may not be active)

### Webhooks (1)
- ⚠️ `POST /webhooks` - CreateWebhookRequest
  - **Fields**: url, events[], secret
  - **Priority**: MEDIUM

### Two-Factor Authentication (3)
- ⚠️ `POST /auth/2fa/setup` - Setup2FARequest
  - **Fields**: password (for verification)
  - **Priority**: HIGH (security feature)
  
- ⚠️ `POST /auth/2fa/verify` - Verify2FARequest
  - **Fields**: code (TOTP code)
  - **Priority**: HIGH (security feature)
  
- ⚠️ `POST /auth/2fa/disable` - Disable2FARequest
  - **Fields**: password, code
  - **Priority**: HIGH (security feature)

### Upload Chunking (3)
- ⚠️ `POST /tracks/initiate` - InitiateChunkedUploadRequest
  - **Fields**: filename, total_chunks, total_size
  - **Priority**: MEDIUM
  
- ⚠️ `POST /tracks/chunk` - UploadChunkRequest
  - **Fields**: upload_id, chunk_number, chunk_data
  - **Priority**: MEDIUM
  
- ⚠️ `POST /tracks/complete` - CompleteChunkedUploadRequest
  - **Fields**: upload_id
  - **Priority**: MEDIUM

### Batch Operations (1)
- ⚠️ `POST /tracks/batch/delete` - BatchDeleteRequest
  - **Fields**: track_ids[]
  - **Priority**: MEDIUM

### Frontend Logging (1)
- ⚠️ `POST /api/v1/logs/frontend` - FrontendLogRequest
  - **Fields**: level, message, context, timestamp
  - **Priority**: LOW

### Other (1)
- ⚠️ `POST /auth/resend-verification` - ResendVerificationRequest
  - **Fields**: email
  - **Priority**: LOW

## Endpoints Not Requiring Request Bodies ➖

### GET Endpoints (28)
- `GET /analytics`
- `GET /analytics/tracks/{id}`
- `GET /analytics/tracks/top`
- `GET /audit/activity`
- `GET /audit/logs`
- `GET /audit/stats`
- `GET /auth/2fa/status`
- `GET /auth/check-username`
- `GET /auth/me`
- `GET /chat/token`
- `GET /comments/{id}/replies`
- `GET /playlists`
- `GET /playlists/{id}`
- `GET /tracks`
- `GET /tracks/{id}`
- `GET /tracks/{id}/analytics/plays`
- `GET /tracks/{id}/comments`
- `GET /tracks/{id}/stats`
- `GET /tracks/{id}/status`
- `GET /tracks/quota/{id}`
- `GET /tracks/resume/{uploadId}`
- `GET /users`
- `GET /users/by-username/{username}`
- `GET /users/{id}`
- `GET /users/{id}/analytics/stats`
- `GET /users/{id}/completion`
- `GET /webhooks`
- `GET /webhooks/stats`

**Note**: GET endpoints may have query parameters that should be validated, but they don't require request body schemas.

### DELETE Endpoints (3)
- `DELETE /playlists/{id}`
- `DELETE /playlists/{id}/tracks/{trackId}`
- `DELETE /tracks/{id}`
- `DELETE /tracks/{id}/comments/{comment_id}`
- `DELETE /users/{id}`
- `DELETE /webhooks/{id}`

**Note**: DELETE endpoints typically don't require request bodies.

## Priority Ranking for Missing Schemas

### HIGH Priority (Security Features)
1. `POST /auth/2fa/setup` - Two-factor setup
2. `POST /auth/2fa/verify` - Two-factor verification
3. `POST /auth/2fa/disable` - Two-factor disable

### MEDIUM Priority (Core Features)
4. `POST /tracks/batch/delete` - Batch operations
5. `POST /tracks/initiate` - Chunked upload initiation
6. `POST /tracks/chunk` - Chunk upload
7. `POST /tracks/complete` - Chunked upload completion
8. `POST /analytics/events` - Analytics tracking
9. `POST /webhooks` - Webhook creation

### LOW Priority (Optional/Edge Cases)
10. `POST /api/v1/marketplace/products` - Marketplace (may not be active)
11. `POST /api/v1/marketplace/orders` - Marketplace (may not be active)
12. `POST /api/v1/logs/frontend` - Frontend logging
13. `POST /auth/resend-verification` - Email verification

## Next Steps

- ✅ **Action 1.2.1.3**: Audit complete - This document
- ⏭️ **Action 1.2.1.4**: Add request validation schemas for missing endpoints
  - Start with HIGH priority (2FA schemas)
  - Then MEDIUM priority (upload chunking, batch operations)
  - Finally LOW priority (marketplace, logging)

## Validation

✅ All endpoints extracted from Swagger spec  
✅ Request body endpoints identified  
✅ Existing schemas mapped  
✅ Missing schemas categorized by priority  
✅ 16 missing schemas identified (64% coverage gap)
