For uploading multiple distinct document types like those in EquipmentLegal, you have two viable design paths depending on the UX needs, document type clarity, and maintenance expectations.
This is clean, descriptive, and explicit:
java
CopyEdit
@PostMapping("/{equipmentId}/legal/purchase")
public ResponseEntity<String> uploadPurchaseAgreement(@PathVariable UUID equipmentId, @RequestParam MultipartFile file)
@PostMapping("/{equipmentId}/legal/warranty")
public ResponseEntity<String> uploadWarranty(@PathVariable UUID equipmentId, @RequestParam MultipartFile file)
@PostMapping("/{equipmentId}/legal/manual")
public ResponseEntity<String> uploadManual(@PathVariable UUID equipmentId, @RequestParam MultipartFile file)
@PostMapping("/{equipmentId}/legal/inspection")
public ResponseEntity<String> uploadInspectionCertificate(@PathVariable UUID equipmentId, @RequestParam MultipartFile file)
Instead of multiple methods, you expose one upload endpoint and a documentType parameter:
java
CopyEdit
public enum EquipmentLegalDocumentType {
PURCHASE, WARRANTY, MANUAL, INSPECTION
}
@PostMapping("/{equipmentId}/legal/upload")
public ResponseEntity<String> uploadLegalDocument(
@PathVariable UUID equipmentId,
@RequestParam EquipmentLegalDocumentType type,
@RequestParam MultipartFile file)
switch(type) or map type to entity field).