[ 'required', ], 'key' => [ 'required', ], 'currencies' => [ 'nullable', ], 'currencies.*' => [ 'nullable', ], 'driver_config' => [ 'nullable', ], // Only the CurrencyConverter "DEDICATED" plan reads a custom URL from // driver_config; guard it against SSRF (private/reserved targets). 'driver_config.url' => [ 'nullable', 'string', 'url', new PublicHttpUrl, ], 'active' => [ 'nullable', 'boolean', ], ]; return $rules; } public function getExchangeRateProviderPayload() { return collect($this->validated()) ->merge([ 'company_id' => $this->header('company'), ]) ->toArray(); } }