'required|integer|exists:groups,id', '*.inner_name' => 'required|string|max:255', '*.level' => ['required', 'string', Rule::in(Level::values())], ]; } public function handle($groups): void { foreach ($groups as $payload) { Group::find($payload['id'])->update(['level' => $payload['level'], 'inner_name' => $payload['inner_name']]); } } public function asController(ActionRequest $request): JsonResponse { $this->handle($request->validated()); return response()->json([]); } }