validate([ 'direction' => ['required', 'string', 'in:Outbound,Inbound'], 'type' => ['required', 'string', 'in:DOC_NORMAL,DOC_ECONOMY,PARCEL'], 'country_iso' => ['required', 'string', 'size:2'], 'weight' => ['required', 'numeric', 'min:0'], 'volumetric_weight' => ['required', 'numeric', 'min:0'], 'extra_service' => ['nullable', 'numeric', 'min:0'], 'packing_cost' => ['nullable', 'numeric', 'min:0'], 'domestic_pickup' => ['nullable', 'numeric', 'min:0'], 'domestic_delivery' => ['nullable', 'numeric', 'min:0'], 'warehousing_cost' => ['nullable', 'numeric', 'min:0'], 'discount' => ['nullable', 'numeric', 'min:0'], ]); } catch (ValidationException $e) { return response()->json([ 'message' => 'Validation failed', 'errors' => $e->errors(), ], 422); } $result = $this->calculator->calculate($validated); return response()->json($result); } }