# Libervia CLI

Libervia CLI is the Command Line Interface of Libervia

`libervia-cli` is the command to launch it.

`li` is short alias for `libervia-cli`, it is the command used through this documentation.

## Overview

`li` is a powerful tool to work with Libervia/XMPP. With it you can send chat messages, share files, retrieve avatars, write blog entries, etc.

## Usage

To get help on commands or their options, use:

    $ li --help

which can be used on any command, so if you need help on `message send` command, just do:

    $ li message send --help

With li, you always enter commands first, then options and arguments.

There are several levels of commands: first one is the main category (`message`, `blog`, `avatar`, etc.), then there are often subcommands (e.g. `message send`).

After the commands come the options. For instance if you want to send a message, you can get the available options with `--help` as explained above:

    $ li message send --help
    usage: li message send [-h] [-p PROFILE] [--pwd PASSWORD] [-c] [-l LANG] [-s]
                           [-n] [-S SUBJECT] [-L SUBJECT_LANG]
                           [-t {chat,error,groupchat,headline,normal,auto}]
                           [-e ALGORITHM] [--encrypt-noreplace] [-x | -r]
                           jid

    positional arguments:
      jid                   the destination jid

    optional arguments:
      -h, --help            show this help message and exit
      -p PROFILE, --profile PROFILE
                            Use PROFILE profile key (default: @DEFAULT@)
      --pwd PASSWORD        Password used to connect profile, if necessary
      -c, --connect         Connect the profile before doing anything else
      -l LANG, --lang LANG  language of the message
      -s, --separate        separate xmpp messages: send one message per line
                            instead of one message alone.
      -n, --new-line        add a new line at the beginning of the input (usefull
                            for ascii art ;))
      -S SUBJECT, --subject SUBJECT
                            subject of the message
      -L SUBJECT_LANG, --subject_lang SUBJECT_LANG
                            language of subject
      -t {chat,error,groupchat,headline,normal,auto}, --type {chat,error,groupchat,headline,normal,auto}
                            type of the message
      -e ALGORITHM, --encrypt ALGORITHM
                            encrypt message using given algorithm
      --encrypt-noreplace   don't replace encryption algorithm if an other one is
                            already used
      -x, --xhtml           XHTML body

If you want to send a message to, say, `pierre@example.net`, and encrypt it with OMEMO, just do the following:

    echo "hi, I'm writing with li" | li message send -e omemo pierre@example.net

(note that with OMEMO, you need to have previously validated fingerprint of your contact for this to work).

The different commands are explained in dedicated sections.

li commands:

- common arguments
  - profile
  - pubsub
  - result set management
  - message archive management
  - order-by
  - progress
  - verbose
  - draft
  - output
  - Time Pattern
- account: XMPP account management
  - create
  - modify
  - delete
- ad-hoc: Ad-Hoc commands
  - run
  - list
  - remote
- application: external applications management
  - list
  - start
  - stop
  - exposed
- avatar: retrieve/upload avatars
  - get
  - set
- blocking: entities blocking
  - list
  - block
  - unblock
- blog: (micro)blogging management
  - Common Publishing Options
  - set
  - get
  - edit
  - rename
  - repeat
  - preview
  - import
  - attachments
- blog/attachments: (un)attach Metadata to Blog Items
- bookmarks: Manage bookmarks
  - list
  - set
  - remove
  - legacy
- bookmarks legacy: legacy bookmark commands
  - list
  - remove
  - add
- call: A/V Calls
  - Common UI
  - make
  - receive
- debug: tools to help debugging/monitoring Libervia
  - bridge method
  - bridge signal
  - monitor
  - theme
- encryption: encryption sessions handling
  - algorithms
  - get
  - start
  - stop
  - trust ui
- event: events management
  - get
  - create
  - modify
  - invitee
- event/invitee: event invitees management
  - get
  - set
  - list
- file: files sending/receiving/management
  - send
  - request
  - receive
  - get
  - upload
  - share
- file/share: advanced files sharing
  - list
  - path
  - invite
  - affiliations
  - configuration
- file/share/affiliations: file sharing affiliations management
  - get
  - set
- file/share/configuration: file sharing node configuration
  - get
  - set
- forums: forums topics handling
  - get
  - set
  - edit
- gateway: Gateway management
  - list
  - register
  - unregister
- identity: identity management
  - get
  - set
- info: retrieve various information
  - disco
  - version
- input: automatise commands using external inputs
  - csv
- invitation: invite people without XMPP account
  - create
  - get
  - modify
  - delete
  - list
- list: create and manage lists
  - get
  - set
  - delete
  - import
- merge-request: create and manage merge requests
  - set
  - get
  - import
- message: chat message management
  - send
  - retract
  - mam
- notification: notifications handling
  - add
  - get
  - delete
  - expire
- param: manage Libervia parameters
  - get
  - set
  - save
  - load
- ping: get response time of an XMPP entity
  - example
- pipe: send/receive data stream through shell pipes
  - in
  - out
- profile: Libervia profile handling
  - connect
  - disconnect
  - create
  - default
  - delete
  - info
  - list
  - modify
- pubsub: PubSub management
  - set
  - get
  - delete
  - edit
  - rename
  - subscribe
  - unsubscribe
  - subscriptions
  - affiliations
  - reference
  - search
  - transform
  - uri
  - node
  - attachments
  - signature
  - secret
  - hook
  - cache
- pubsub/attachments: (Un)Attach Metadata to Pubsub Items
  - get
  - set
- pubsub/cache: PubSub Cache Management
  - get
  - sync
  - purge
  - reset
  - search
- pubsub/hook: PubSub hooks management
  - create
  - delete
  - list
- pubsub/node: PubSub nodes management
  - info
  - create
  - purge
  - delete
  - set
  - import
  - affiliations
  - subscriptions
- pubsub/node/affiliations: nodes affiliations management
  - get
  - set
- pubsub/node/schema: nodes schema handling
  - set
  - edit
  - get
- pubsub/node/affiliations: nodes subscriptions management
  - get
  - set
- pubsub/secret: share, revoke or rotate node secrets
  - share
  - revoke
  - rotate
  - list
- pubsub/signature: Sign and Check Items Signatures
  - sign
  - check
- remote-control: Remote Control
  - send
  - receive
- roster: manager an entity roster
  - get
  - set
  - delete
  - stats
  - purge
  - resync
- shell: use Libervia with REPL
  - start the shell
  - use the shell
  - Shell commands
- uri: XMPP URI parsing/generation
  - parse
  - build

## Tutorial

You can check this third party tutorial: https://blog.agayon.be/sat_jp.html