Que fait Compétence Yaak CLI ?
Le CLI yaak (@yaakapp/cli) contrôle le client API de bureau Yaak depuis le terminal. Il lit/écrit la même base de données SQLite locale que l'application de bureau — les modifications sont répercutées instantanément dans les deux sens.
Prérequis
- CLI
yaakinstallé :npm install -g @yaakapp/cli - Application de bureau Yaak (optionnelle mais recommandée pour la vérification visuelle)
Indicateurs globaux
| Indicateur | Objectif |
|---|---|
--data-dir <RÉP> | Répertoire de données personnalisé |
-e, --environment <ID> | ID d'environnement pour la substitution de variables |
--cookie-jar <ID> | ID de jarre de cookies pour l'exécution des requêtes |
-v, --verbose | Sortie détaillée (événements, corps streamé) |
--log [NIVEAU] | Journalisation CLI (error |
Arborescence des commandes
yaak
├── workspace list | show <id> | create | update <id> | delete <id> [--yes]
├── request list [<ws-id>] | show <id> | create [<ws-id>] | update <id> | delete <id> [--yes] | send <id> | schema <type>
├── folder list [<ws-id>] | show <id> | create -n <nom> [<ws-id>] | update <id> | delete <id> [--yes]
├── environment list [<ws-id>] | show <id> | create | update <id> | delete <id> [--yes]
├── cookie-jar list [<ws-id>]
├── send <ID> # requête, dossier ou espace de travail
├── auth login | logout | whoami
└── plugin build | dev | generate | install | publish
Règle multi-espace de travail : Lorsqu'un seul espace de travail existe, [<ws-id>] est facultatif. Avec plusieurs espaces de travail, vous DEVEZ passer l'ID de l'espace de travail comme premier argument positionnel.
Espaces de travail
yaak workspace list # lister tous les espaces de travail
yaak workspace show <ws-id> # JSON complet
yaak workspace create -n "Mon API" # créer par nom
yaak workspace create --json '{"name":"Mon API","headers":[...]}' # créer avec config
yaak workspace update <ws-id> --json '{"name":"Renommé"}'
yaak workspace delete <ws-id> --yes # suppression non interactive
Dossiers
yaak folder list [<ws-id>] # lister les dossiers d'un espace de travail
yaak folder show <dossier-id> # JSON complet
yaak folder create -n "Auth" [<ws-id>] # créer dans un espace de travail
yaak folder create --json '{"name":"Auth","workspaceId":"wk_..."}' [<ws-id>]
yaak folder update <dossier-id> --json '{"name":"Renommé"}'
yaak folder delete <dossier-id> --yes
Requêtes
Lister et inspecter
yaak request list [<ws-id>] # lister toutes les requêtes
yaak request show <req-id> # JSON complet (méthode, url, en-têtes, corps, etc.)
Créer
Indicateurs rapides :
yaak request create [<ws-id>] -n "Obtenir Utilisateurs" -m GET -u "https://api.exemple.com/utilisateurs"
JSON complet :
yaak request create [<ws-id>] --json '{
"name": "Créer Utilisateur",
"method": "POST",
"url": "https://api.exemple.com/utilisateurs",
"folderId": "fl_...",
"bodyType": "application/json",
"body": {
"text": "{\"name\":\"test\",\"email\":\"[email protected]\"}"
},
"headers": [
{"name":"Authorization","value":"Bearer token","enabled":true}
]
}'
Champs clés pour --json :
| Champ | Type | Remarques |
|---|---|---|
name | string | Nom d'affichage |
method | string | GET, POST, PUT, PATCH, DELETE |
url | string | URL de la requête |
folderId | string | ID du dossier parent |
bodyType | string | application/json, multipart/form-data, application/x-www-form-urlencoded, text/plain, etc. |
body.text | string | Contenu du corps (stringifier JSON pour application/json) |
headers | array | [{name, value, enabled}] |
authenticationType | string | basic, bearer, oauth2, etc. |
authentication | object | Configuration d'authentification par type |
Mettre à jour
yaak request update <req-id> --json '{"name":"Nom mis à jour","url":"https://nouvelle-url.com"}'
Supprimer
yaak request delete <req-id> --yes
Envoyer
yaak send <req-id> # envoyer une seule requête
yaak send <req-id> -v # détaillé (en-têtes, événements)
yaak send <dossier-id> # envoyer toutes les requêtes d'un dossier
yaak send <ws-id> --parallel --fail-fast # envoyer tout l'espace de travail
Indicateurs d'envoi :
--parallel— exécuter les requêtes en parallèle--fail-fast— abandonner à la première erreur (fonctionne avec les envois de dossier/espace de travail)-e <env-id>— utiliser un environnement pour la substitution de variables-v— sortie détaillée (affiche les en-têtes requête/réponse, corps streamé)
Introspection de schéma
yaak request schema http # Schéma JSON pour les requêtes HTTP
yaak request schema grpc # Schéma JSON pour les requêtes gRPC
yaak request schema websocket # Schéma JSON pour les requêtes WebSocket
Utilisez ceci pour comprendre la structure exacte du payload --json pour la création/mise à jour.
Environnements
yaak environment list [<ws-id>] # lister les environnements
yaak environment show <env-id> # JSON complet avec variables
yaak environment create [<ws-id>] -n "Production"
yaak environment update <env-id> --json '{
"name": "Production",
"variables": [
{"name":"BASE_URL","value":"https://api.prod.com"},
{"name":"API_KEY","value":"secret123"}
]
}'
yaak environment delete <env-id> --yes
Utiliser les environnements
Passez -e <env-id> à toute commande send pour la substitution de variables :
yaak send <req-id> -e <env-id>
Syntaxe des modèles dans les requêtes :
- Variables :
${[ ma_variable ]} - Fonctions :
${[ uuid() ]},${[ timestamp() ]},${[ fs.readFile('/chemin') ]}
Authentification
yaak auth whoami # vérifier l'état de connexion
yaak auth login # se connecter via navigateur
yaak auth logout # se déconnecter
Opérations par lots
Créer plusieurs requêtes depuis un script
#!/bin/bash
WS="wk_..."
FL_AUTH="fl_..."
FL_PROD="fl_..."
# Points de terminaison d'authentification
yaak request create "$WS" --json '{"name":"Connexion","method":"POST","url":"https://api.exemple.com/auth/connexion","folderId":"'"$FL_AUTH"'","bodyType":"application/json","body":{"text":"{\"username\":\"utilisateur\",\"password\":\"motdepasse\"}"}}'
yaak request create "$WS" --json '{"name":"Moi","method":"GET","url":"https://api.exemple.com/auth/moi","folderId":"'"$FL_AUTH"'"}'
# Points de terminaison CRUD
for op in "GET list /utilisateurs" "POST créer /utilisateurs" "GET obtenir /utilisateurs/1" "PUT mettre à jour /utilisateurs/1" "DELETE supprimer /utilisateurs/1"; do
read -r method label chemin <<< "$op"
yaak request create "$WS" --json '{"name":"'"${label^}"' '"${chemin#/}"'","method":"'"$method"'","url":"https://api.exemple.com'"$chemin"'","folderId":"'"$FL_PROD"'"}'
done
Supprimer toutes les requêtes d'un espace de travail
yaak request list <ws-id> | awk '{print $1}' | while read id; do
yaak request delete "$id" --yes
done
Cloner la structure d'un espace de travail vers un nouvel espace de travail
# Créer un nouvel espace de travail
NOUV_WS=$(yaak workspace create -n "Copie" | awk '{print $NF}')
# Créer les dossiers
yaak folder list <ancien-ws> | while read id nom; do
yaak folder create -n "$nom" "$NOUV_WS"
done
# Puis créer les requêtes avec les nouveaux IDs de dossier
Sortie JSON
Toutes les commandes show et list produisent une sortie JSON (ou une ligne par élément pour list). Dirigez vers jq pour filtrer :
yaak request show <req-id> | jq '.url'
yaak workspace list | jq -r '.[] | .id + " " + .name'
Modèles courants
Organiser par ressource
Créez un dossier par ressource API, puis les requêtes CRUD à l'intérieur :
WS="wk_..."
FL=$(yaak folder create -n "Utilisateurs" "$WS" | awk '{print $NF}')
yaak request create "$WS" --json '{"name":"Lister Utilisateurs","method":"GET","url":"https://api.exemple.com/utilisateurs","folderId":"'"$FL"'"}'
yaak request create "$WS" --json '{"name":"Obtenir Utilisateur","method":"GET","url":"https://api.exemple.com/utilisateurs/1","folderId":"'"$FL"'"}'
yaak request create "$WS" --json '{"name":"Créer Utilisateur","method":"POST","url":"https://api.exemple.com/utilisateurs","folderId":"'"$FL"'","bodyType":"application/json","body":{"text":"{\"name\":\"nouvel utilisateur\"}"}}'
Changement d'URL basé sur l'environnement
# Environnement de développement
yaak environment create "$WS" -n "Dev"
yaak environment update <dev-env-id> --json '{"variables":[{"name":"BASE_URL","value":"http://localhost:3000"}]}'
# Environnement de production
yaak environment create "$WS" -n "Prod"
yaak environment update <prod-env-id> --json '{"variables":[{"name":"BASE_URL","value":"https://api.production.com"}]}'
# Utiliser dans l'URL de la requête
yaak request create "$WS" --json '{"name":"Obtenir Utilisateurs","method":"GET","url":"${[ BASE_URL ]}/utilisateurs","folderId":"..."}'
# Envoyer avec l'environnement
yaak send <req-id> -e <dev-env-id> # atteint localhost
yaak send <req-id> -e <prod-env-id> # atteint la production
Valeurs par défaut au niveau de l'espace de travail
Définissez des en-têtes/authentification au niveau de l'espace de travail (hérités par toutes les requêtes) :
yaak workspace update "$WS" --json '{
"headers": [
{"name":"Content-Type","value":"application/json","enabled":true},
{"name":"Accept","value":"application/json","enabled":true}
],
"authenticationType": "bearer",
"authentication": {"token":"${[ API_TOKEN ]}"}
}'
Astuces
- Utilisez toujours
yaak request schema <type>avant de créer des payloads complexes — le schéma montre les noms et types de champs exacts. - Utilisez
--verboseavecsendpour déboguer les détails requête/réponse. - Le CLI est idempotent pour les lectures — sans danger pour les scripts et les ré-exécutions.
- L'application de bureau reflète instantanément les modifications du CLI (BDD SQLite partagée).
--yesignore les invites de confirmation — essentiel pour les suppressions scriptées.