Habilidade Yaak CLI
A CLI yaak (@yaakapp/cli) controla o cliente de API de desktop Yaak a partir do terminal. Ela lê/escreve no mesmo banco de dados SQLite local que o aplicativo desktop — as alterações são refletidas instantaneamente em ambas as direções.
Pré-requisitos
- CLI
yaakinstalada:npm install -g @yaakapp/cli - Aplicativo desktop Yaak (opcional, mas recomendado para verificação visual)
Flags globais
| Flag | Finalidade |
|---|---|
--data-dir <DIR> | Diretório de dados personalizado |
-e, --environment <ID> | ID do ambiente para substituição de variáveis |
--cookie-jar <ID> | ID do pote de cookies para execução de requisições |
-v, --verbose | Saída detalhada (eventos, corpo transmitido) |
--log [LEVEL] | Log da CLI (error|warn|info|debug|trace) |
Árvore de comandos
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 <name> [<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> # request, folder, ou workspace
├── auth login | logout | whoami
└── plugin build | dev | generate | install | publish
Regra de múltiplos workspaces: Quando existe apenas um workspace, [<ws-id>] é opcional. Com vários workspaces, você DEVE passar o ID do workspace como o primeiro argumento posicional.
Workspaces
yaak workspace list # listar todos os workspaces
yaak workspace show <ws-id> # JSON completo
yaak workspace create -n "Minha API" # criar por nome
yaak workspace create --json '{"name":"Minha API","headers":[...]}' # criar com configuração
yaak workspace update <ws-id> --json '{"name":"Renomeado"}'
yaak workspace delete <ws-id> --yes # exclusão não interativa
Pastas
yaak folder list [<ws-id>] # listar pastas no workspace
yaak folder show <folder-id> # JSON completo
yaak folder create -n "Autenticação" [<ws-id>] # criar no workspace
yaak folder create --json '{"name":"Autenticação","workspaceId":"wk_..."}' [<ws-id>]
yaak folder update <folder-id> --json '{"name":"Renomeada"}'
yaak folder delete <folder-id> --yes
Requisições
Listar e inspecionar
yaak request list [<ws-id>] # listar todas as requisições
yaak request show <req-id> # JSON completo (método, url, cabeçalhos, corpo, etc.)
Criar
Flags rápidas:
yaak request create [<ws-id>] -n "Obter Usuários" -m GET -u "https://api.exemplo.com/usuarios"
JSON completo:
yaak request create [<ws-id>] --json '{
"name": "Criar Usuário",
"method": "POST",
"url": "https://api.exemplo.com/usuarios",
"folderId": "fl_...",
"bodyType": "application/json",
"body": {
"text": "{\"name\":\"teste\",\"email\":\"[email protected]\"}"
},
"headers": [
{"name":"Authorization","value":"Bearer token","enabled":true}
]
}'
Campos principais para --json:
| Campo | Tipo | Observações |
|---|---|---|
name | string | Nome de exibição |
method | string | GET, POST, PUT, PATCH, DELETE |
url | string | URL da requisição |
folderId | string | ID da pasta pai |
bodyType | string | application/json, multipart/form-data, application/x-www-form-urlencoded, text/plain, etc. |
body.text | string | Conteúdo do corpo (transformar JSON em string para application/json) |
headers | array | [{name, value, enabled}] |
authenticationType | string | basic, bearer, oauth2, etc. |
authentication | object | Configuração de autenticação por tipo |
Atualizar
yaak request update <req-id> --json '{"name":"Nome Atualizado","url":"https://nova-url.com"}'
Excluir
yaak request delete <req-id> --yes
Enviar
yaak send <req-id> # enviar uma única requisição
yaak send <req-id> -v # detalhado (cabeçalhos, eventos)
yaak send <folder-id> # enviar todas as requisições na pasta
yaak send <ws-id> --parallel --fail-fast # enviar workspace inteiro
Flags de envio:
--parallel— executar requisições concorrentemente--fail-fast— abortar na primeira falha (funciona com envios de pasta/workspace)-e <env-id>— usar ambiente para substituição de variáveis-v— saída detalhada (mostra cabeçalhos de requisição/resposta, corpo transmitido)
Introspecção de schema
yaak request schema http # JSON Schema para requisições HTTP
yaak request schema grpc # JSON Schema para requisições gRPC
yaak request schema websocket # JSON Schema para requisições WebSocket
Use isso para entender a estrutura exata do payload --json para criar/atualizar.
Ambientes
yaak environment list [<ws-id>] # listar ambientes
yaak environment show <env-id> # JSON completo com variáveis
yaak environment create [<ws-id>] -n "Produção"
yaak environment update <env-id> --json '{
"name": "Produção",
"variables": [
{"name":"BASE_URL","value":"https://api.prod.com"},
{"name":"API_KEY","value":"segredo123"}
]
}'
yaak environment delete <env-id> --yes
Usando ambientes
Passe -e <env-id> para qualquer comando send para substituição de variáveis:
yaak send <req-id> -e <env-id>
Sintaxe de template em requisições:
- Variáveis:
${[ minha_var ]} - Funções:
${[ uuid() ]},${[ timestamp() ]},${[ fs.readFile('/caminho') ]}
Autenticação
yaak auth whoami # verificar status de login
yaak auth login # fazer login via navegador
yaak auth logout # sair
Operações em lote
Criar múltiplas requisições a partir de um script
#!/bin/bash
WS="wk_..."
FL_AUTH="fl_..."
FL_PROD="fl_..."
# Endpoints de autenticação
yaak request create "$WS" --json '{"name":"Login","method":"POST","url":"https://api.exemplo.com/auth/login","folderId":"'