package main import ( "encoding/json" "log/slog" "net/http" "github.com/google/uuid" ) // writeJSONError sends a standard JSON error response. func writeJSONError(w http.ResponseWriter, logger *slog.Logger, statusCode int, message string, errType *string, errCode *string, param *string) { // CORRECTED: Explicitly add charset=utf-8 w.Header().Set("Content-Type", "application/json; charset=utf-8") w.WriteHeader(statusCode) resp := ErrorResponse{ Error: APIError{ Message: message, Type: errType, Code: errCode, Param: param, }, } if err := json.NewEncoder(w).Encode(resp); err != nil { // If encoding fails, log it but we can't send another response logger.Error("Failed to encode error response", "error", err) } } // generateUUID creates a new UUID string. func generateUUID() string { return uuid.NewString() } // Helper function to get string pointer func stringPtr(s string) *string { if s == "" { return nil // Don't return pointer to empty string unless intended } return &s }