*/ public static function rules(bool $hosted): array { return [ 'media' => ['sometimes', 'array'], 'media.*.id' => $hosted ? ['required', 'string'] : ['sometimes', 'nullable', 'string'], 'media.*.path' => $hosted ? ['required', 'string', 'max:500'] : ['sometimes', 'nullable', 'string', 'max:500'], 'media.*.url' => $hosted ? ['required', 'string', 'max:2048'] : ['required', 'string', 'max:2048', 'url:http,https'], 'media.*.type' => ['sometimes', 'nullable', 'string', 'max:32'], 'media.*.mime_type' => ['sometimes', 'nullable', 'string', 'max:255'], 'media.*.original_filename' => ['sometimes', 'nullable', 'string', 'max:500'], 'media.*.size' => ['sometimes', 'nullable', 'integer'], 'media.*.meta' => ['sometimes', 'nullable', 'array'], 'media.*.source' => ['sometimes', 'nullable', 'string', Rule::in(array_column(Source::cases(), 'value'))], 'media.*.source_meta' => ['sometimes', 'nullable', 'array'], ]; } }