mirror of
https://github.com/absmach/supermq.git
synced 2026-06-23 06:20:18 +00:00
a0c40ba462
* chore(license): update copyright notices Add CI check for non go files to check that the files contain a license Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> * fix(ci): log failed files When the CI fails during check for license header, log the failed file to console so that someone can check on the actual file. Also simplify the grep check to make it more human readable and understandable Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> --------- Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>
Magistrala CLI
Build
From the project root:
make cli
Usage
Service
Get Magistrala Services Health Check
magistrala-cli health <service>
Users management
Create User
magistrala-cli users create <user_name> <user_email> <user_password>
magistrala-cli users create <user_name> <user_email> <user_password> <user_token>
Login User
magistrala-cli users token <user_email> <user_password>
Get User
magistrala-cli users get <user_id> <user_token>
Get Users
magistrala-cli users get all <user_token>
Update User Metadata
magistrala-cli users update <user_id> '{"name":"value1", "metadata":{"value2": "value3"}}' <user_token>
Update User Password
magistrala-cli users password <old_password> <password> <user_token>
Enable User
magistrala-cli users enable <user_id> <user_token>
Disable User
magistrala-cli users disable <user_id> <user_token>
System Provisioning
Create Thing
magistrala-cli things create '{"name":"myThing"}' <user_token>
Create Thing with metadata
magistrala-cli things create '{"name":"myThing", "metadata": {"key1":"value1"}}' <user_token>
Bulk Provision Things
magistrala-cli provision things <file> <user_token>
file- A CSV or JSON file containing thing names (must have extension.csvor.json)user_token- A valid user auth token for the current system
An example CSV file might be:
thing1,
thing2,
thing3,
in which the first column is the thing's name.
A comparable JSON file would be
[
{
"name": "<thing1_name>",
"status": "enabled"
},
{
"name": "<thing2_name>",
"status": "disabled"
},
{
"name": "<thing3_name>",
"status": "enabled",
"credentials": {
"identity": "<thing3_identity>",
"secret": "<thing3_secret>"
}
}
]
With JSON you can be able to specify more fields of the channels you want to create
Update Thing
magistrala-cli things update <thing_id> '{"name":"value1", "metadata":{"key1": "value2"}}' <user_token>
Identify Thing
magistrala-cli things identify <thing_key>
Enable Thing
magistrala-cli things enable <thing_id> <user_token>
Disable Thing
magistrala-cli things disable <thing_id> <user_token>
Get Thing
magistrala-cli things get <thing_id> <user_token>
Get Things
magistrala-cli things get all <user_token>
Get a subset list of provisioned Things
magistrala-cli things get all --offset=1 --limit=5 <user_token>
Create Channel
magistrala-cli channels create '{"name":"myChannel"}' <user_token>
Bulk Provision Channels
magistrala-cli provision channels <file> <user_token>
file- A CSV or JSON file containing channel names (must have extension.csvor.json)user_token- A valid user auth token for the current system
An example CSV file might be:
<channel1_name>,
<channel2_name>,
<channel3_name>,
in which the first column is channel names.
A comparable JSON file would be
[
{
"name": "<channel1_name>",
"description": "<channel1_description>",
"status": "enabled"
},
{
"name": "<channel2_name>",
"description": "<channel2_description>",
"status": "disabled"
},
{
"name": "<channel3_name>",
"description": "<channel3_description>",
"status": "enabled"
}
]
With JSON you can be able to specify more fields of the channels you want to create
Update Channel
magistrala-cli channels update '{"id":"<channel_id>","name":"myNewName"}' <user_token>
Enable Channel
magistrala-cli channels enable <channel_id> <user_token>
Disable Channel
magistrala-cli channels disable <channel_id> <user_token>
Get Channel
magistrala-cli channels get <channel_id> <user_token>
Get Channels
magistrala-cli channels get all <user_token>
Get a subset list of provisioned Channels
magistrala-cli channels get all --offset=1 --limit=5 <user_token>
Access control
Connect Thing to Channel
magistrala-cli things connect <thing_id> <channel_id> <user_token>
Bulk Connect Things to Channels
magistrala-cli provision connect <file> <user_token>
file- A CSV or JSON file containing thing and channel ids (must have extension.csvor.json)user_token- A valid user auth token for the current system
An example CSV file might be
<thing_id1>,<channel_id1>
<thing_id2>,<channel_id2>
in which the first column is thing IDs and the second column is channel IDs. A connection will be created for each thing to each channel. This example would result in 4 connections being created.
A comparable JSON file would be
{
"client_ids": ["<thing_id1>", "<thing_id2>"],
"group_ids": ["<channel_id1>", "<channel_id2>"]
}
Disconnect Thing from Channel
magistrala-cli things disconnect <thing_id> <channel_id> <user_token>
Get a subset list of Channels connected to Thing
magistrala-cli things connections <thing_id> <user_token>
Get a subset list of Things connected to Channel
magistrala-cli channels connections <channel_id> <user_token>
Messaging
Send a message over HTTP
magistrala-cli messages send <channel_id> '[{"bn":"Dev1","n":"temp","v":20}, {"n":"hum","v":40}, {"bn":"Dev2", "n":"temp","v":20}, {"n":"hum","v":40}]' <thing_secret>
Read messages over HTTP
magistrala-cli messages read <channel_id> <user_token> -R <reader_url>
Bootstrap
Add configuration
magistrala-cli bootstrap create '{"external_id": "myExtID", "external_key": "myExtKey", "name": "myName", "content": "myContent"}' <user_token> -b <bootstrap-url>
View configuration
magistrala-cli bootstrap get <thing_id> <user_token> -b <bootstrap-url>
Update configuration
magistrala-cli bootstrap update '{"thing_id":"<thing_id>", "name": "newName", "content": "newContent"}' <user_token> -b <bootstrap-url>
Remove configuration
magistrala-cli bootstrap remove <thing_id> <user_token> -b <bootstrap-url>
Bootstrap configuration
magistrala-cli bootstrap bootstrap <external_id> <external_key> -b <bootstrap-url>
Groups
Create Group
magistrala-cli groups create '{"name":"<group_name>","description":"<description>","parentID":"<parent_id>","metadata":"<metadata>"}' <user_token>
Get Group
magistrala-cli groups get <group_id> <user_token>
Get Groups
magistrala-cli groups get all <user_token>
Get Group Members
magistrala-cli groups members <group_id> <user_token>
Get Memberships
magistrala-cli groups membership <member_id> <user_token>
Assign Members to Group
magistrala-cli groups assign <member_ids> <member_type> <group_id> <user_token>
Unassign Members to Group
magistrala-cli groups unassign <member_ids> <group_id> <user_token>
Enable Group
magistrala-cli groups enable <group_id> <user_token>
Disable Group
magistrala-cli groups disable <group_id> <user_token>