package PVE::API2::Hardware::USB;

use strict;
use warnings;

use PVE::JSONSchema qw(get_standard_option);

use PVE::SysFSTools;

use base qw(PVE::RESTHandler);

__PACKAGE__->register_method({
    name => 'usbscan',
    path => '',
    method => 'GET',
    description => "List local USB devices.",
    protected => 1,
    proxyto => "node",
    permissions => {
	check => ['perm', '/', ['Sys.Modify']],
    },
    parameters => {
	additionalProperties => 0,
	properties => {
	    node => get_standard_option('pve-node'),
	},
    },
    returns => {
	type => 'array',
	items => {
	    type => "object",
	    properties => {
		busnum => { type => 'integer'},
		class => { type => 'integer'},
		devnum => { type => 'integer'},
		level => { type => 'integer'},
		manufacturer => { type => 'string', optional => 1 },
		port => { type => 'integer'},
		prodid => { type => 'string'},
		product => { type => 'string', optional => 1 },
		serial => { type => 'string', optional => 1 },
		speed => { type => 'string'},
		usbpath => { type => 'string', optional => 1},
		vendid => { type => 'string'},
	    },
	},
    },
    code => sub {
	my ($param) = @_;

	return PVE::SysFSTools::scan_usb();
    }
});
