StorageBinRequest.java
package com.v1rex.liftnexus.storagebin.dto;
import com.v1rex.liftnexus.storagebin.domain.ZoneType;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.Valid;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
@Schema(description = "Request payload for creating a new storage bin")
public record StorageBinRequest(
@NotNull(message = "Bin code is required")
@Schema(
description = "Human-readable bin identifier (e.g., A-01-02-03)",
example = "A-01-02-03")
String binCode,
@NotNull(message = "Coordinates are required")
@Valid
@Schema(description = "3D warehouse coordinates (aisle, bay, tier)")
CoordinateDto coordinate,
@NotNull(message = "Zone type is required")
@Schema(description = "Functional zone of the storage bin")
ZoneType zoneType,
@NotNull(message = "Max weight capacity is required")
@Min(value = 0, message = "Weight capacity cannot be negative")
@Schema(description = "Maximum weight capacity in kg", example = "2000")
Integer maxWeightCapacityKg) {}