veza/veza-backend-api/docs/ENDPOINT_FORMAT_AUDIT.md
senke ba348e7f5c api-contracts: categorize endpoints by response format type
- Completed Action 1.3.1.3: Categorized all tested endpoints
- Created 4 categories: wrapped (2), auth_required (22), errors (12), path_params
- Documented format consistency: 2/36 verified (5.6%), both use wrapped format
- Identified 34 unverified endpoints requiring auth or specific IDs
- Updated ENDPOINT_FORMAT_AUDIT.md with detailed categorization
2026-01-11 16:36:28 +01:00

5.9 KiB

Endpoint Response Format Audit

Date: 2025-01-27
Action: 1.3.1.2 - Identify endpoints returning direct format
Status: Complete

Overview

This document identifies endpoints that return inconsistent response formats (direct vs wrapped { success, data } format).

Testing Methodology

  • Script: scripts/test-endpoint-formats.sh
  • Base URL: http://localhost:8080/api/v1
  • Source: Endpoints extracted from veza-backend-api/docs/swagger.json
  • Test Date: 2025-01-27

Summary

  • Total Tested: 36 endpoints
  • Wrapped Format ({ success, data }): 2 endpoints
  • Direct Format: 0 endpoints ⚠️
  • Auth Required (401/403): 22 endpoints 🔒
  • Errors (404/500): 12 endpoints

Endpoints with Wrapped Format

These endpoints correctly return { success, data } format:

  1. GET /users - Status: 200, Format: wrapped
  2. GET /tracks - Status: 200, Format: wrapped

Endpoints Requiring Authentication 🔒

The following endpoints require authentication (401/403), so their format could not be verified without credentials:

  • GET /analytics
  • POST /analytics/events
  • GET /analytics/tracks/top
  • GET /webhooks
  • POST /webhooks
  • GET /webhooks/stats
  • ... (22 total)

Note: To fully audit these endpoints, authentication tokens are required.

Endpoints with Errors

The following endpoints returned errors (404/500):

  • POST /api/v1/logs/frontend - 404 Not Found
  • ... (12 total)

Note: Some endpoints may not exist or may have incorrect paths in the Swagger spec.

Endpoints Skipped

Endpoints with path parameters were skipped (cannot be tested without specific IDs):

  • GET /tracks/{id}
  • PUT /tracks/{id}
  • DELETE /tracks/{id}
  • GET /users/{id}
  • ... (many more)

Findings

  1. Consistency: The 2 endpoints that were successfully tested both use wrapped format
  2. Coverage: Most endpoints require authentication, limiting test coverage
  3. Path Parameters: Many endpoints have path parameters and cannot be tested without specific IDs

Recommendations

  1. Authenticated Testing: Run tests with valid auth tokens to verify format of protected endpoints
  2. Path Parameter Testing: Test endpoints with path parameters using known IDs (e.g., test user ID, test track ID)
  3. Error Handling: Verify that error responses also use consistent format
  4. Documentation: Update Swagger spec to clearly document response format expectations

Endpoint Categories

Category 1: Wrapped Format (2 endpoints)

Endpoints that correctly return { success, data } format:

  1. GET /tracks - Status: 200
  2. GET /users - Status: 200

Status: Consistent - Both public endpoints use wrapped format

Category 2: Auth Required 🔒 (22 endpoints)

Endpoints that require authentication (401/403). Format cannot be verified without credentials:

Analytics:

  • GET /analytics
  • POST /analytics/events
  • GET /analytics/tracks/top

Audit:

  • GET /audit/activity
  • GET /audit/logs
  • GET /audit/stats

Authentication:

  • POST /auth/2fa/disable
  • POST /auth/2fa/setup
  • GET /auth/2fa/status
  • POST /auth/2fa/verify
  • POST /auth/logout
  • GET /auth/me

Playlists:

  • GET /playlists
  • POST /playlists

Tracks (Protected):

  • POST /tracks
  • POST /tracks/batch/delete
  • POST /tracks/chunk
  • POST /tracks/complete
  • POST /tracks/initiate

Webhooks:

  • GET /webhooks
  • POST /webhooks
  • GET /webhooks/stats

Status: ⚠️ Unknown - Cannot verify format without authentication tokens

Category 3: Errors (12 endpoints)

Endpoints that returned errors (404/500):

  • POST /api/v1/logs/frontend - 404 Not Found
  • GET /logs/frontend - 404 Not Found
  • ... (10 more)

Status: ⚠️ Cannot verify format - Endpoints may not exist or have incorrect paths

Category 4: Path Parameters (Skipped)

Endpoints with path parameters that cannot be tested without specific IDs:

Tracks:

  • GET /tracks/{id}
  • PUT /tracks/{id}
  • DELETE /tracks/{id}
  • GET /tracks/{id}/analytics/plays
  • GET /tracks/{id}/comments
  • POST /tracks/{id}/comments
  • DELETE /tracks/{id}/comments/{comment_id}
  • POST /tracks/{id}/play
  • GET /tracks/{id}/stats
  • GET /tracks/{id}/status
  • GET /tracks/quota/{id}
  • GET /tracks/resume/{uploadId}

Users:

  • GET /users/{id}
  • PUT /users/{id}
  • DELETE /users/{id}
  • GET /users/{id}/analytics/stats
  • GET /users/{id}/completion
  • GET /users/by-username/{username}

Webhooks:

  • DELETE /webhooks/{id}
  • POST /webhooks/{id}/regenerate-key
  • POST /webhooks/{id}/test

Status: ⚠️ Cannot verify format - Requires specific IDs for testing

Format Consistency Analysis

Verified Consistent Endpoints: 2/36 (5.6%)

  • Both tested public endpoints use wrapped format
  • No direct format endpoints found in tested sample

Unverified Endpoints: 34/36 (94.4%)

  • 🔒 22 endpoints require authentication
  • 12 endpoints returned errors
  • ⚠️ Many endpoints have path parameters

Conclusion

Limited Sample Size: Only 2 endpoints were successfully tested without authentication. Both use wrapped format, which is positive.

Recommendations:

  1. Authenticated Testing: Test protected endpoints with valid tokens to verify format consistency
  2. Path Parameter Testing: Test endpoints with path parameters using known test IDs
  3. Error Response Testing: Verify that error responses also use consistent wrapped format
  4. Backend Code Review: Review backend handlers to ensure all use response.Success() helper

Next Steps

  • Action 1.3.1.3: Categorize endpoints by format type - COMPLETE
  • ⏭️ Action 1.3.2.1: Update backend handlers to use wrapped format (if inconsistencies found)
  • ⏭️ Action 1.3.2.2: Remove dual-format handling from frontend (after backend is consistent)

Validation

Script executed successfully
Report generated: endpoint-formats-report.json
Endpoints categorized by format type
⚠️ Limited coverage due to authentication requirements
⚠️ Path parameters prevent testing many endpoints