diff --git a/toot/api.py b/toot/api.py
index b4e0bd1..3d9e956 100644
--- a/toot/api.py
+++ b/toot/api.py
@@ -549,3 +549,15 @@ def create_list(app, user, title, replies_policy):
def delete_list(app, user, id):
return http.delete(app, user, f"/api/v1/lists/{id}")
+
+
+def add_accounts_to_list(app, user, list_id, account_ids):
+ url = f"/api/v1/lists/{list_id}/accounts"
+ json = {'account_ids': account_ids}
+ return http.post(app, user, url, json=json).json()
+
+
+def remove_accounts_from_list(app, user, list_id, account_ids):
+ url = f"/api/v1/lists/{list_id}/accounts"
+ json = {'account_ids[]': account_ids}
+ return http.delete(app, user, url, json=json)
diff --git a/toot/commands.py b/toot/commands.py
index 5ac4aca..4a7c908 100644
--- a/toot/commands.py
+++ b/toot/commands.py
@@ -446,6 +446,22 @@ def list_delete(app, user, args):
print_out(f"✓ List \"{args.title}\" deleted.")
+def list_add_account(app, user, args):
+ list_id = args.id if args.id else api.find_list_id(app, user, args.title)
+ if not list_id:
+ print_out("List not found")
+ return
+ account = find_account(app, user, args.account)
+ if not account:
+ print_out("Account not found")
+ return
+ try:
+ api.add_accounts_to_list(app, user, list_id, [account['id']])
+ print_out(f"✓ Added account \"{account['acct']}\"")
+ except Exception as ex:
+ print_out(f"{ex}")
+
+
def mute(app, user, args):
account = find_account(app, user, args.account)
api.mute(app, user, account['id'])
diff --git a/toot/console.py b/toot/console.py
index b53f339..cfe20ff 100644
--- a/toot/console.py
+++ b/toot/console.py
@@ -779,6 +779,25 @@ LIST_COMMANDS = [
],
require_auth=True,
),
+ Command(
+ name="list_add_account",
+ description="Add account to list",
+ arguments=[
+ (["--id"], {
+ "type": str,
+ "help": "ID of the list"
+ }),
+ (["--title"], {
+ "type": str,
+ "help": "title of the list"
+ }),
+ (["--account"], {
+ "type": str,
+ "help": "Account to add"
+ }),
+ ],
+ require_auth=True,
+ ),
]
COMMAND_GROUPS = [
("Authentication", AUTH_COMMANDS),