['required', 'integer', 'min:1', 'max:50000'], 'purpose' => ['required', Rule::in([ QrCodeBatch::PURPOSE_FREE, QrCodeBatch::PURPOSE_STORE, QrCodeBatch::PURPOSE_PROMO, ])], 'household_id' => ['required', 'string', 'exists:households,uuid'], 'target_store_id' => ['nullable', 'integer'], 'expires_at' => ['nullable', 'date', 'after:today'], 'notes' => ['nullable', 'string', 'max:1000'], ]; } }