## CLI Mainflux CLI makes it easy to manage users, things, channels and messages. CLI can be downloaded as separate asset from [project realeses](https://github.com/mainflux/mainflux/releases) or it can be built with `GNU Make` tool: ``` make cli ``` which will build `mainflux-cli` in `/build` folder. Executing `build/mainflux-cli` without any arguments will output help with all available commands and flags: ``` Usage: mainflux-cli [command] Available Commands: channels Channels management help Help about any command messages Send or read messages provision Provision things and channels from config file things Things management users Users management version Mainflux system version Flags: -c, --content-type string Mainflux message content type (default "application/senml+json") -h, --help help for mainflux-cli -a, --http-prefix string Mainflux http adapter prefix (default "http") -i, --insecure Do not check for TLS cert -l, --limit uint limit query parameter (default 100) -m, --mainflux-url string Mainflux host URL (default "http://localhost") -o, --offset uint offset query parameter -t, --things-prefix string Mainflux things service prefix -u, --users-prefix string Mainflux users service prefix Use "mainflux-cli [command] --help" for more information about a command. ``` You can execute each command with `-h` flag for more information about that command, e.g. ``` ./mainflux-cli channels -h ``` will get you usage info: ``` Channels management: create, get, update or delete Channels and get list of Things connected to Channels Usage: mainflux-cli channels [flags] mainflux-cli channels [command] Available Commands: connections connections create create delete delete get get update update ``` ## Service #### Get the version of Mainflux services ``` mainflux-cli version ``` ### Users management #### Create User ``` mainflux-cli users create john.doe@email.com password ``` #### Login User ``` mainflux-cli users token john.doe@email.com password ``` ### System Provisioning #### Create Thing (type Device) ``` mainflux-cli things create '{"type":"device", "name":"myDevice"}' ``` #### Create Thing (type Application) ``` mainflux-cli things create '{"type":"app", "name":"myDevice"}' ``` #### Update Thing ``` mainflux-cli things update '{"id":"", "name":"myNewName"}' ``` #### Remove Thing ``` mainflux-cli things delete ``` #### Retrieve a subset list of provisioned Things ``` mainflux-cli things get all --offset=1 --limit=5 ``` #### Retrieve Thing By ID ``` mainflux-cli things get ``` #### Create Channel ``` mainflux-cli channels create '{"name":"myChannel"}' ``` #### Update Channel ``` mainflux-cli channels update '{"id":"","name":"myNewName"}' ``` #### Remove Channel ``` mainflux-cli channels delete ``` #### Retrieve a subset list of provisioned Channels ``` mainflux-cli channels get all --offset=1 --limit=5 ``` #### Retrieve Channel By ID ``` mainflux-cli channels get ``` ### Access control #### Connect Thing to Channel ``` mainflux-cli things connect ``` #### Disconnect Thing from Channel ``` mainflux-cli things disconnect ``` #### Retrieve a subset list of Channels connected to Thing ``` mainflux-cli things connections ``` #### Retrieve a subset list of Things connected to Channel ``` mainflux-cli channels connections ``` ### Messaging #### Send a message over HTTP ``` mainflux-cli msg send '[{"bn":"Dev1","n":"temp","v":20}, {"n":"hum","v":40}, {"bn":"Dev2", "n":"temp","v":20}, {"n":"hum","v":40}]' ```