API Tester
Um cliente de API em tela cheia dentro do PocketCode: requisições REST com scripts e asserções sem código, GraphQL, WebSocket, Server-Sent Events, Socket.IO e MQTT. Coleções, ambientes com variáveis secretas, um histórico que você pode comparar, um executor de coleções, um teste de carga, um mock server e a geração de código completam o conjunto. Cada tela abaixo diz o que faz e, quando algo falta, o que falta e por quê.
O que é e como abrir
O API Tester abre como uma camada em tela cheia sobre o app e mantém a requisição aberta, a tela em que você estava e suas conexões ativas quando você gira o dispositivo. Ele fala seis protocolos: REST, WebSocket, GraphQL, SSE, Socket.IO e MQTT. Há um painel gRPC no código, mas esta versão o oculta até que ele funcione no Android.
Como abrir
- 1Toque em Ferramentas na barra de navegação. O painel Ferramentas de desenvolvimento abre: toque em API Test (o bloco mostra “API Test” em todos os idiomas do app).
- 2Ou abra a paleta de comandos e execute API Tester.
- 3Ou, na tela inicial, use a ação rápida API Tester ou toque no widget API tester, que mostra suas coleções salvas e as últimas requisições executadas.
- O gesto de voltar do sistema leva de uma requisição de volta ao Início; a partir do Início, fecha o API Tester.
- O API Tester não tem link direto próprio. Os atalhos de teclado só existem no layout de tablet em paisagem (veja Requisições abertas, salvar e atalhos).
Quem mais o usa
- O assistente de IA tem três ferramentas para este módulo: enviar uma requisição, listar suas coleções e interpretar um comando cURL. Elas respondem sem que a tela esteja aberta, usando o mesmo motor REST. O corpo da resposta que ele recebe é cortado em 4096 caracteres, ele não pode anexar arquivos, não chama o backend do próprio PocketCode, e interpretar um comando cURL só o lê: nada é carregado no editor.
- Workflows podem começar a partir de uma resposta enviada nesta tela. O evento leva a URL, o método, o código de status e o tempo, nunca o corpo nem os headers. As requisições que a IA envia não o disparam.
- Cloud Sync (Pro) não sincroniza suas coleções e ambientes por enquanto: essa parte está pausada. Veja Privacidade e segurança.
Mapa de telas
Uma linha por tela e painel. No celular, Início, Coleções e Histórico são acessados pelo menu ⋮ da requisição; no tablet a barra superior tem Início, o nome da requisição, o menu de ambiente e Abrir biblioteca (que abre Coleções).
| Tela | Como chegar | O que você pode fazer |
|---|---|---|
| Início | Abre primeiro; voltar a partir de uma requisição; Início no tablet | Escolher Nova requisição, Coleções ou Histórico, e voltar ao que ainda estiver conectado. |
| Requisição | Nova requisição, um chip no Início, ou carregar uma entrada de Coleções ou do Histórico | Montar e enviar uma requisição. Quatro layouts, conforme a janela. |
| Painéis de protocolo | O menu de protocolo na linha de contexto da requisição | WebSocket, GraphQL, SSE, Socket.IO e MQTT têm cada um seu painel, igual nos quatro layouts. |
| Ferramentas | O ícone de controles deslizantes na linha de contexto (só na tela de requisição) | Abrir Ambientes, Mock Server, Cookies, Importar e Ajustes. |
| Ambientes | Ferramentas → Ambientes, ou o menu de ambiente → Gerenciar ambientes | Escolher o ambiente ativo; editar variáveis, segredos e globais. |
| Mock Server | Ferramentas → Mock Server | Ligar o servidor local (Pro), definir porta e latência, adicionar rotas, ler o log. |
| Pote de cookies | Ferramentas → Cookies | Ver os cookies que os servidores guardaram; removê-los da lista. |
| Importar requisição | Ferramentas → Importar | Colar texto cURL, Postman, Insomnia, OpenAPI ou HAR; gerar um mock a partir de OpenAPI. |
| Importar do projeto | Importar → Importar do projeto | Visualizar e importar coleções salvas como arquivos no projeto aberto. |
| Ajustes da requisição | Ferramentas → Ajustes | Tempo limite, redirecionamentos, SSL, cookies e codificação de URL da requisição aberta. |
| Gerador de código | ⋮ → Gerar código | Ver a requisição como código em 26 saídas diferentes e copiá-la. |
| cURL gerado | ⋮ → Exportar cURL | Copiar a requisição como um comando cURL. |
| Salvar na coleção | ⋮ → Salvar, ou Ctrl+S num tablet em paisagem | Escolher uma coleção ou digitar um nome novo. |
| Coleções | Início → Coleções; ⋮ → Coleções no celular; o ícone de pasta no tablet | Buscar, criar, carregar uma requisição, executar, exportar, salvar no projeto, excluir. |
| Exportar | Coleções → ⋮ de uma coleção → Exportar | Visualizar e copiar uma coleção em cinco formatos. |
| Histórico | Início → Histórico; ⋮ → Histórico no celular | Buscar, filtrar, carregar, favoritar, comparar, usar como mock, limpar. |
| Comparar respostas | Histórico → ⋮ de uma entrada → Comparar com…, e depois outra entrada | Ler um diff de Corpo e Cabeçalhos de duas respostas. |
| Executor | Coleções → ⋮ → Executar | Executar todas as requisições de uma coleção, com iterações ou um arquivo de dados (Pro). |
| Teste de carga | ⋮ → Teste de carga | Enviar várias vezes a requisição REST aberta e ler percentis de latência (Pro). |
Início
O Início é onde o módulo abre. Ele não tem campo de URL, seletor de protocolo nem botão de Ferramentas: isso é da tela de requisição. Numa janela mais larga que alta, mostra duas colunas.


O que o Início oferece
Você pode
- Toque em Nova requisição. O cartão lista os seis protocolos (REST · WS · GQL · SSE · IO · MQTT) e abre a tela de requisição.
- Toque em Coleções ou Histórico. Cada cartão mostra quantos você tem, ou Vazio.
- Use a faixa de chips ao vivo no topo, que só aparece quando algo está em execução: cada requisição aberta, o mock server com sua porta, as sessões conectadas de WebSocket, SSE, Socket.IO e MQTT, um teste de carga ou uma execução de coleção. Tocar em um deles leva você de volta a ele.
Você não pode, e por quê
- Escolher um protocolo, digitar uma URL, escolher um ambiente ou abrir Ferramentas a partir do Início: nada disso está lá.De propósito
- Fechar as conexões ativas voltando ao Início: elas continuam rodando, e é por isso que os chips existem.De propósito
A requisição (REST)
É aqui que as requisições REST são montadas e enviadas. Uma requisição tem seis seções: Parâmetros, Headers, Corpo, Auth, Scripts e Ajustes. Os outros protocolos usam a mesma barra de URL e linha de contexto, com um painel próprio (veja Outros protocolos).
Quatro layouts
O layout segue a janela, não o dispositivo, então um tablet em tela dividida recebe o do celular.
| Celular, retrato (menos de 600 dp de largura) | Uma chave Requisição | Resposta abaixo da barra de URL e as seis seções como abas. Ao enviar, a tela passa para a Resposta sozinha. |
| Celular, paisagem (600 dp ou mais de largura, menos de 480 dp de altura) | Abas de seção e uma divisória arrastável entre requisição e resposta. Com o teclado aberto, a resposta encolhe para uma faixa de 48 dp. |
| Tablet, retrato | Requisição em cima e resposta embaixo, com uma divisória arrastável e predefinições de 30 / 50 / 70 %. Seções em acordeão; Coleções como gaveta lateral (ícone de pasta). |
| Tablet, paisagem (840 dp ou mais de largura, 480 dp ou mais de altura, e mais largo que alto) | Três colunas com divisórias arrastáveis: a barra lateral de Coleções, a requisição com abas para as requisições abertas e a resposta. Toque duas vezes numa divisória para restaurá-la. |
Barra de URL, linha de contexto e menu ⋮
Digite a URL (monoespaçada, sem maiúscula automática). Sem http:// ou https://, o app adiciona https://. Abaixo dela, a linha de contexto reúne o menu de protocolo, o menu de ambiente, o ícone de Ferramentas e o menu ⋮.
Você pode
- Escolha o método entre oito: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS e TRACE, cada um com sua cor. O seletor aparece em REST e GraphQL.
- Toque em Enviar (o avião de papel). Enquanto a requisição roda, ele vira Cancelar requisição.
- Escolha o protocolo: REST, WebSocket, GraphQL, SSE, Socket.IO ou MQTT.
- Escolha o ambiente ativo, ou Sem ambiente; Gerenciar ambientes abre o editor.
- Abra o menu ⋮: Nova, Duplicar (acrescenta “ (copy)” ao nome), Salvar, Exportar cURL, Gerar código e Teste de carga. No celular ele também lista Início, Coleções e Histórico.
Você não pode, e por quê
- Escolher o método de uma requisição GraphQL: o seletor está lá, mas o painel sempre envia POST.Ainda não
- Dar nome a uma requisição: não há campo para isso, então as requisições que você salva se chamam New Request (as importadas mantêm o próprio nome).Ainda não
O painel Ferramentas
Cinco linhas, cada uma com uma frase sobre o que contém e, à direita, seu estado ao vivo: o ambiente ativo, o mock server (por exemplo :8090 · 3 atendidas) e o número de cookies guardados. O painel só abre a partir da tela de requisição, nunca a partir do Início.
| Linha | O que abre |
|---|---|
| Ambientes | URLs base, tokens e variáveis |
| Mock Server | Serve respostas fixas numa porta local |
| Cookies | O que os servidores guardaram neste dispositivo |
| Importar | cURL, Postman, OpenAPI, HAR |
| Ajustes | Tempo limite, redirecionamentos, SSL |

Parâmetros e Headers
Os dois são listas de chave–valor com o mesmo editor. As abas trazem um contador de linhas ativas (por exemplo Headers 25). Uma requisição nova começa com um header Content-Type: application/json.
Você pode
- Adicione linhas com Adicionar parâmetro ou Adicionar header, ative ou desative cada uma com sua caixa de seleção, arraste para reordenar e deslize para excluir.
- Abra os detalhes de uma linha para acrescentar uma descrição ou ligar Valor secreto: o valor fica mascarado na interface e fora do cURL exportado e do código gerado.
- Use Edição em bloco para colar linhas no formato
Key: value.
Você não pode, e por quê
- Escolher headers comuns numa lista: não há autocompletar de headers.Ainda não
- Ter os parâmetros de consulta codificados com percentual: eles vão para a URL como você digitou, e a chave Codificar URL não tem efeito.Ainda não
Corpo
Você pode
- Escolha o tipo. None, JSON, Form URL-Encoded, Multipart Form e Raw Text são chips; XML, HTML, JavaScript, Binary e GraphQL ficam em Mais…. Dez no total, com nome em inglês em todos os idiomas.
- Em JSON: números de linha, validação ao vivo (JSON inválido: …) e Formatar / Minimizar.
- Em Form URL-Encoded e Multipart Form: linhas de chave–valor. As linhas multipart podem ser um campo de texto ou de arquivo (Escolher arquivo, pelo seletor de arquivos do sistema).
- Em Binary: Selecionar arquivo binário. Em GraphQL como tipo de corpo: uma Consulta e Variáveis (JSON).
- Use
{{variables}}em corpos raw, JSON, XML, HTML e JavaScript e nos campos de formulário: elas são substituídas ao enviar.
Você não pode, e por quê
- Ter destaque de sintaxe no editor de corpo.De propósito
- Definir um nome de operação para um corpo GraphQL, ou usar
{{variables}}dentro da consulta e das variáveis.Ainda não
Autenticação
Escolha o tipo no menu Tipo de autenticação; só o formulário desse tipo aparece.
| No Auth | Nada é adicionado. |
| Bearer Token | Um token e um prefixo (padrão Bearer). |
| Basic Auth | Um usuário e uma senha. |
| API Key | Um nome de chave, um valor e onde ele vai: header ou parâmetro de consulta. |
| OAuth 2.0 | Quatro tipos de concessão, descritos abaixo. |
| Digest Auth | Um usuário e uma senha. O realm, o nonce e o resto vêm do desafio 401 do servidor. |
| AWS Signature | Access key ID, Secret access key, Region (padrão us-east-1), Service e um Session token opcional. As requisições são assinadas com SigV4 de verdade. |
| Custom | Um nome de header e um valor. |
| Hawk Auth, NTLM Auth | Listados com um selo Em breve. Ainda não fazem nada. |

Você pode
- Escolha um Tipo de concessão: Authorization Code, Client Credentials, Password Credentials ou Implicit.
- Com Client Credentials, preencha URL do token, ID do cliente, Segredo do cliente e Escopo, e toque em Obter token.
- Com Authorization Code, toque em Abrir navegador, entre na conta, copie o valor de
codedo endereço para o qual você foi levado de volta, cole em Código de autorização e toque em Trocar código. - Com Password Credentials ou Implicit, cole você mesmo o token em Token de acesso: não há botão.
- Use
{{variables}}nas credenciais. Para manter um token fora da vista, guarde-o como variável de ambiente secreta e escreva{{token}}aqui.
Você não pode, e por quê
- Ter o redirecionamento do OAuth capturado para você: o módulo não consegue registrar um link de volta ao app, então você cola o código.De propósito
- Usar PKCE ou um refresh token.Ainda não
- Enviar um token OAuth 2.0 em qualquer lugar que não seja um header
Authorization: Bearer ….Ainda não - Usar Hawk ou NTLM: escolhê-los não faz nada ao enviar.Ainda não
- Mascarar o que você digita em Auth: tokens e senhas aparecem em texto simples nesta tela.Ainda não
Scripts e asserções
A seção Scripts tem três partes: Asserções (sem código), um Script de pré-requisição e um Script de teste.
Você pode
- Adicione uma asserção com Adicionar asserção: um campo (Status code, Response time, Header, Body (JSONPath) ou Body size), um operador (equals, does not equal, contains, does not contain, is greater than, is less than, exists, does not exist) e um valor esperado. As asserções sempre rodam, sem motor de JavaScript.
- Insira um dos nove Modelos rápidos: Status is 200, Status is 2xx, Response time < 500ms, Has JSON body, Body not empty, Has Content-Type, JSON schema valid, Body contains string, Array length > 0.
- Escreva JavaScript para os scripts de pré-requisição e de teste. Eles rodam num motor isolado (
androidx.javascriptengine), um novo a cada vez, então um script que quebra não derruba o app. - Use o subconjunto de
pm:pm.test(name, fn);pm.expect(value)comequal,include,above,below,within,an(type),emptye suas formas comnot;pm.environment.getepm.environment.set;pm.globals.get(somente leitura);pm.request(method, url, headers, body: uma cópia somente leitura); nos testes,pm.response(code,status,headers,responseTime,text(),json()eto.have.status/header/jsonBody); econsole.log/info/warn/error. - Conte com o
pm.environment.setsendo salvo: ele atualiza primeiro uma global existente, depois uma variável do ambiente ativo, e caso contrário cria uma no ambiente ativo (ou uma global, se não houver ambiente ativo). - Leia os resultados na aba Testes da resposta e a saída do script em Console.
Você não pode, e por quê
- Usar o resto da API do Postman:
pm.sendRequest,pm.variables,pm.collectionVariables,setNextRequest,requireepm.globals.setnão existem, os scripts não podem alterar a requisição e não há async. Um script do Postman que precise deles termina com Script error: … no console.De propósito - Rodar scripts num dispositivo sem um WebView moderno: o script é ignorado, com um aviso no console, e só as asserções rodam.Dispositivo
- Ter os scripts de uma coleção ou pasta executados: eles são importados e salvos, mas só os scripts da própria requisição executam.Ainda não
- Validar um corpo contra um JSON schema: o modelo JSON schema valid só verifica se o corpo é JSON.Ainda não
Ajustes
Três ajustes ficam na própria seção Ajustes; o painel Ajustes da requisição (Ferramentas → Ajustes, “Só afeta o pedido aberto”) tem cinco. Eles acompanham a requisição.
Você pode
- Defina Tempo limite (ms) direto na seção (qualquer número, padrão 30000), ou escolha 5, 10, 15, 30, 60 ou 120 s no painel. Um único valor cobre conexão, leitura e escrita.
- Ligue ou desligue Seguir redirecionamentos e Verificar SSL.
- Ligue ou desligue Habilitar cookies e Codificar URL: só no painel.
Você não pode, e por quê
- Definir um proxy, um certificado de cliente ou um número máximo de redirecionamentos: nenhuma tela oferece isso.Ainda não
- Fazer a opção Codificar URL funcionar: a chave está lá, mas o envio a ignora.Ainda não
Requisições abertas, salvar e atalhos
No layout de tablet em paisagem, a coluna da requisição tem abas para várias requisições abertas e estes atalhos:
| Atalho | Ação |
|---|---|
Ctrl+Enter | Enviar (ou conectar / desconectar num protocolo de streaming) |
Ctrl+T | Nova aba |
Ctrl+W | Fechar a aba |
Ctrl+S | Salvar numa coleção |
Você pode
- Abra uma Nova aba, troque de aba e feche-as com ✕. Um ponto marca uma requisição alterada desde que foi salva; uma vazia aparece como Sem título.
- Toque em ⋮ → Salvar para ver Salvar na coleção: escolha uma coleção (ela mostra quantas requisições tem) ou digite um nome novo e toque em Criar.
- Use Duplicar e Nova no menu ⋮, e Exportar cURL para ler o cURL gerado e Copiar.
Você não pode, e por quê
- Abrir requisições em abas num celular ou num tablet em retrato: as abas só existem no layout de tablet em paisagem, e os atalhos também. Também não há
Ctrl+FnemCtrl+K.De propósito - Manter a resposta ao trocar de aba: ela é apagada.Ainda não
A resposta
O painel tem quatro estados: vazio (Envie uma requisição para ver a resposta), carregando (Enviando requisição…), sucesso e erro. No celular em retrato, o resumo aparece na própria chave, por exemplo Resposta · 200 · 679 ms.

Status e abas
Você pode
- Leia o chip de status, colorido por faixa (2xx verde, 3xx turquesa, 4xx laranja, 5xx vermelho), com o tempo total, o tamanho e o tipo de conteúdo.
- Alterne entre seis abas, nesta ordem: Corpo, Headers (com contagem; copie qualquer header), Cookies (name=value, domínio e caminho, com selos Secure e HttpOnly), Testes (resultados de asserções e scripts; Esta resposta não executou testes quando vazia), Linha do tempo e Console.
- Leia a Linha do tempo: DNS, TCP, TLS, TTFB e Transfer, mais Total.
- Leia o Console: um log de toda a sessão (envios, scripts, o mock server, conexões) com a hora e um nível, LOG, INFO, WARN ou ERROR.
Você não pode, e por quê
- Ver o protocolo, o IP remoto ou a cadeia de redirecionamentos: o painel não os mostra.Ainda não
- Ver por que uma requisição falhou: num erro de rede, TLS ou tempo limite, o painel mostra só um chip 0 Error e um corpo vazio. O motivo vai para o log do Console.Ainda não
- Limpar o console: ele não tem botão de limpar.Ainda não
Corpo
Você pode
- Troque a visualização com o botão flutuante no canto inferior direito: Pretty, Raw ou Preview. Copiar fica ao lado dele.
- Com Pretty, navegue por uma árvore JSON recolhível com dois filtros, Buscar chaves… e Filtro JSONPath · $.a.b[0].c (um caminho exato; Nenhum resultado para esse caminho se nada for encontrado).
- Abra o menu ⋮ de um nó: Copiar valor, Copiar caminho e Salvar como variável (escolha um ambiente e um nome).
- Com Raw, leia texto monoespaçado; corpos com mais de 512 K caracteres usam uma lista virtualizada.
- Com Preview, veja
text/htmlrenderizado num WebView com JavaScript desligado; qualquer outro tipo mostra Não há pré-visualização para este tipo de conteúdo.
Você não pode, e por quê
- Ter XML ou HTML formatados: só o JSON é formatado, o resto aparece como foi recebido.Ainda não
- Visualizar uma imagem: a pré-visualização nunca recebe os bytes da imagem.Ainda não
- Buscar no corpo com ocorrências destacadas, ir ao topo ou ao fim, ou compartilhar ou salvar a resposta num arquivo.Ainda não
Comparar duas respostas
A comparação começa no Histórico, não neste painel: ⋮ de uma entrada → Comparar com…, e depois outra entrada. Veja Histórico para os passos.
Outros protocolos
Escolha o protocolo na linha de contexto da tela de requisição. Cada painel abaixo fica na área da requisição; o endereço e o Enviar (que conecta, nos de streaming) ficam na barra de URL. As {{variables}} não são substituídas em nenhum deles, exceto na URL do endpoint do GraphQL. http:// e ws:// simples só chegam a localhost, 127.0.0.1 e 10.0.2.2; todo o resto precisa de HTTPS ou wss://.
GraphQL
Você pode
- Digite o endpoint e toque em Buscar esquema (um POST de introspecção padrão). Esquema mostra quantos tipos encontrou; cada tipo se expande nos campos, com seus tipos e uma contagem de argumentos como
2 argumento(s). Os tipos que começam com__ficam ocultos. - Escreva a Consulta e, na seção recolhível, as Variáveis (JSON); envie; leia a resposta no painel de resposta de sempre. Consultas e mutations saem como POST HTTP.
Você não pode, e por quê
- Definir um nome de operação, headers ou autenticação neste painel: ele envia só
Content-Type: application/json. Para autenticação, use uma requisição REST com corpo GraphQL.Ainda não - Usar subscriptions: o explorador lista um tipo Subscription, mas tudo é enviado por POST HTTP, sem transporte
graphql-ws.Ainda não - Ver os nomes dos argumentos: só a quantidade.Ainda não
WebSocket
Digite ws:// ou wss:// (sem esquema, wss:// é adicionado) e conecte. Não há tempo limite de leitura: a conexão fica aberta até você desconectar ou o servidor fechá-la.
Você pode
- Acompanhe o estado: CONNECTING, CONNECTED, DISCONNECTING, DISCONNECTED ou ERROR.
- Digite uma Mensagem e envie-a depois de conectar.
- Leia o log em estilo de chat (enviadas à direita, recebidas à esquerda, com a hora) e esvazie-o com Limpar mensagens.
Você não pode, e por quê
- Adicionar headers ou subprotocolos, reconectar automaticamente ou salvar modelos de mensagem.Ainda não
- Enviar ou ler mensagens binárias: só texto.Ainda não
- Usar
{{variables}}na URL.Ainda não
SSE
Digite a URL do stream e conecte. O app envia um GET com Accept: text/event-stream e sem tempo limite de leitura.
Você pode
- Acompanhe o estado (CONNECTING, CONNECTED, DISCONNECTED ou ERROR) e o contador, por exemplo
12 eventos. - Leia o log de eventos: um selo de tipo,
id: …e os primeiros 300 caracteres dedata.
Você não pode, e por quê
- Enviar headers, filtrar por tipo de evento, reconectar automaticamente ou respeitar o valor
retry:do servidor.Ainda não - Ver a hora ou o
retryde cada evento, ou retomar a partir de umLast-Event-ID: o id é guardado, mas não é mostrado nem enviado.Ainda não - Usar
{{variables}}, o pote de cookies ou Verificar SSL: nada disso se aplica aqui.Ainda não
Socket.IO
Você pode
- Digite a URL (por exemplo
http://localhost:3000) e um Namespace (padrão/, que não acrescenta nada; qualquer outro nome é anexado à URL). - Ligue ou desligue Reconexão automática (ligada por padrão).
- Use Adicionar escuta para ouvir um nome de evento e Emitir para enviar um evento com um Payload JSON: ele sai como um valor JSON de verdade (objeto, array ou escalar), ou como texto se não for interpretado.
- Leia o log em estilo de chat, em que cada balão traz o nome do evento, e limpe-o.
Você não pode, e por quê
- Definir headers,
auth, uma query ou o transporte, remover uma escuta, ou usar mais de um namespace por conexão.Ainda não - Saber com quais versões de servidor Socket.IO ele conversa: o cliente é o
socket.io-clientoficial 2.1.2, e é essa biblioteca que decide.Terceiros
MQTT
Digite host ou host:port na barra de URL. Sem porta, o app usa 1883, ou 8883 se Usar TLS estava ligado quando você digitou o endereço.
Você pode
- Ligue Usar TLS (os certificados do sistema) e defina ID do cliente (gerado como
pocketcode-mais oito caracteres), Usuário e Senha (enviados só se o usuário não estiver vazio; o campo é mascarado, com um olho para mostrar/ocultar). - Toque em Inscrever-se num Topic com QoS 0 (At most once), 1 (At least once) ou 2 (Exactly once); a lista Inscrições mostra todas.
- Publique num Topic de publicação com um Payload de texto e um QoS.
- Leia as mensagens, enviadas e recebidas, agrupadas por tópico.
Você não pode, e por quê
- Escolher a versão do MQTT: o cliente fala só MQTT 5, então um broker que suporte apenas 3.1.1 pode recusar a conexão.Ainda não
- Publicar com a flag retain.Ainda não
- Cancelar uma inscrição, definir will, keep-alive ou clean-session, propriedades do MQTT 5, seus próprios certificados TLS, ou conectar por WebSocket.Ainda não
gRPC (oculto nesta versão)
O código tem um painel gRPC, mas esta versão o oculta: o gRPC não aparece no cartão Nova requisição nem no menu de protocolo. O painel precisa da biblioteca protobuf-java completa, que o app deixa de fora para que o Firestore continue funcionando, então ainda não pode funcionar no Android. Ele volta quando funcionar.
Coleções
Uma coleção agrupa requisições salvas. Coleções é uma tela própria, não uma aba de uma biblioteca compartilhada: no celular, abre-se a partir do Início ou do menu ⋮, sem barra de título (volte com o gesto do sistema); no tablet é uma gaveta lateral em retrato e uma barra lateral fixa em paisagem.

Você pode
- Buscar coleções pelo nome.
- Crie uma com Nova coleção (o botão redondo). No Free, com uma coleção já criada, ele abre no lugar a janela API Tester Pro.
- Expanda uma coleção para listar suas requisições (o método em cor e depois o nome ou a URL) e toque em uma para carregá-la: você volta à tela de requisição.
- Abra o menu ⋮ de uma coleção: Executar (com um selo Pro), Exportar, Salvar no projeto e Excluir. Excluir não pede confirmação.
- Salve a requisição aberta numa coleção com Salvar na coleção.
- Digite um nome novo em Salvar na coleção para criar uma coleção na hora. No Free vale o mesmo limite de uma: com uma já criada, o diálogo fecha e a janela API Tester Pro abre.
Você não pode, e por quê
- Renomear, mover ou reordenar coleções ou requisições, ou criar pastas: não há tela para isso.Ainda não
- Abrir uma pasta: as pastas (que chegam com importações e arquivos de projeto) são desenhadas como uma linha Nome (n) que não responde. Você não pode expandi-las nem abrir suas requisições aqui, embora o executor as percorra.Ainda não
- Ter a autenticação, os headers ou os scripts de uma coleção ou pasta aplicados: eles são importados, salvos e exportados, mas o envio e a execução usam só o que está na própria requisição.Ainda não
- Editar as variáveis de uma coleção: elas só chegam por importações e arquivos de projeto, e são usadas quando uma requisição foi carregada dessa coleção.Ainda não
- Manter mais de uma coleção no Free: Nova coleção, um nome novo em Salvar na coleção e uma importação abrem a janela API Tester Pro.Pro
Ambientes e variáveis
Um ambiente é um conjunto de variáveis com nome, e um de cada vez fica ativo. Referencie uma variável como {{name}}.

O painel Ambientes
Você pode
- Abra-o em Ferramentas → Ambientes, ou no menu de ambiente → Gerenciar ambientes. O painel bloqueia capturas de tela.
- Escolha o ambiente ativo com os chips (Nenhum ou um dos seus); os cartões abaixo editam.
- Toque em Novo ambiente (uma caixa de diálogo pede um nome), exclua um ambiente (sem confirmação) e veja qual está Ativo.
- Edite variáveis em duas colunas, CHAVE e Valor, e adicione mais com Adicionar variável.
- Trave uma variável como secreta: o valor fica mascarado com pontos, um olho o revela, e ele volta a ser mascarado quando você sai.
- Abra Variáveis globais (recolhível) e use Adicionar variável global: elas ficam visíveis seja qual for o ambiente ativo.
- Crie uma variável a partir de uma resposta: na árvore JSON, o ⋮ de um nó → Salvar como variável.
Você não pode, e por quê
- Escolher um escopo por variável, editar um valor inicial ou escolher uma cor de ambiente: só existem variáveis de ambiente e globais no editor.Ainda não
- Importar ou exportar um único ambiente: ambientes do Postman não podem ser importados, e a importação do Insomnia achata as variáveis de todos os ambientes do arquivo em uma única lista de variáveis de coleção.Ainda não
- Ter um segundo ambiente no Free: criá-lo abre a janela API Tester Pro.Pro
Onde as variáveis são substituídas
| Substituídas em | A URL, os nomes e valores dos parâmetros de consulta, headers, corpos raw / JSON / XML / HTML / JavaScript, campos form-urlencoded, os campos de texto dos corpos multipart e as credenciais de autenticação (token bearer, Basic, API Key, token de acesso OAuth 2.0, Custom, Digest, AWS). |
| Não substituídas em | Um corpo GraphQL (consulta e variáveis), os protocolos de streaming (WebSocket, SSE, Socket.IO, MQTT), cookies e o prefixo do bearer. |
| Precedência | Primeiro as variáveis dinâmicas, depois uma linha do arquivo de dados do executor, depois as variáveis da coleção, depois o ambiente ativo, depois as globais: vence a mais específica. |
Variáveis dinâmicas
{{$guid}} (também {{$randomUUID}}), {{$timestamp}} (segundos), {{$isoTimestamp}}, {{$randomInt}} (de 0 a 1000, ou {{$randomInt(min,max)}}), {{$randomEmail}} (sempre em example.com), {{$randomFirstName}} e {{$randomLastName}}. Cada uma é gerada de novo a cada vez; um nome desconhecido fica como foi escrito.
{{name}} no cURL exportado e no código gerado (uma linha secreta mostra ••••••••). Quando você envia a requisição, porém, o valor real vai pela rede: precisa ir, senão a autenticação não funcionaria.Histórico
O Histórico guarda as requisições que você enviou, com suas respostas. É uma tela própria, sem barra de título.

Você pode
- Buscar histórico por URL ou nome, e filtrar por Favoritas e por método (só GET, POST, PUT e DELETE são oferecidos).
- Leia as entradas agrupadas em Hoje, Ontem, Esta semana (os últimos sete dias) e Anteriores, cada uma com seu método, código de status, tempo e hora.
- Toque numa entrada para carregar a requisição e a resposta salva; marque-a com a estrela.
- Abra o menu ⋮ de uma entrada: Comparar com… e Usar como mock (ambos esmaecidos se a entrada não tiver resposta).
- Toque em Limpar todo o histórico. Ele não pede confirmação.
Você não pode, e por quê
- Guardar mais de 200 entradas: as mais antigas são excluídas além disso, no Free e no Pro.De propósito
- Salvar histórico além de 10 entradas no Free: as novas requisições não são salvas até você limpá-lo.Pro
- Filtrar por intervalo de datas ou código de status, ou excluir uma única entrada.Ainda não
Comparar duas respostas
- 1Toque em ⋮ numa entrada e escolha Comparar com…. Um banner pede que você Escolha outra entrada com resposta para comparar, com Cancelar.
- 2Toque numa segunda entrada que tenha resposta. Comparar respostas abre com Corpo e Cabeçalhos, mostrando linhas adicionadas, removidas e inalteradas (Sem diferenças quando coincidem).
- 3O diff é linha a linha; corpos muito grandes recorrem a uma comparação posição por posição.
Usar como mock
⋮ → Usar como mock adiciona uma rota ao mock server a partir dessa entrada: seu método, só o caminho da URL, e o código de status e o corpo da resposta salva. Isso não exige Pro; ligar o servidor exige.
Executor de coleções
O executor envia todas as requisições de uma coleção em ordem, pastas incluídas, com o ambiente ativo e as globais, e informa sucesso ou falha por iteração. É um recurso Pro.
Você pode
- Abra-o em Coleções → ⋮ → Executar. O cabeçalho diz Executor, e o gesto de voltar retorna a Coleções.
- Escolha a coleção (Escolha uma coleção para executar) e defina Iterações com − e + (de 1 a 100).
- Escolha um Arquivo de dados (Escolher arquivo; CSV ou JSON). O número de linhas dele substitui as iterações e desativa o seletor; Remover arquivo de dados desfaz. O CSV precisa de uma linha de cabeçalho (vírgulas e aspas duplas, sem campos de várias linhas); o JSON deve ser um array de objetos simples. Cada linha alimenta variáveis
{{column}}e vence as da coleção, do ambiente e as globais. - Toque em Executar coleção, ou em Cancelar execução. O status aparece como Inativo, Em execução, Concluído, Falhou ou Cancelado; os números mostram Requisições, Testes (aprovados / total) e Duração; cada iteração lista suas requisições com método, código, tempo e aprovados / total.
Você não pode, e por quê
- Executá-lo no Free: Executar abre o executor, mas a janela API Tester Pro aparece por cima e Executar coleção não executa nada.Pro
- Adicionar um atraso entre requisições, parar no primeiro erro, salvar respostas ou manter variáveis entre execuções.Ainda não
- Guardar ou exportar os resultados: eles não são salvos.Ainda não
- Confiar em Falhou para erros de rede: ele significa que uma asserção falhou, então uma requisição que dá erro e não tem asserções não marca a execução como Falhou.Ainda não
Teste de carga
O Teste de carga envia a requisição REST aberta várias vezes e resume a latência. É um recurso Pro. Vários trabalhadores enviam as requisições ao mesmo tempo, então você mede carga paralela e não a latência de um único cliente.
Você pode
- Abra-o em ⋮ → Teste de carga. O ALVO é o método e a URL da requisição carregada no momento; sem nenhuma aberta, diz Nenhuma requisição selecionada.
- Defina Requisições (até cinco dígitos), Concorrência (quatro) e Rampa (s) (três), e toque em Iniciar, ou em Cancelar.
- Use Concorrência (padrão 10) para definir quantos trabalhadores enviam ao mesmo tempo. Eles dividem as Requisições entre si, e cada um envia a próxima assim que a anterior é respondida. No máximo 100 ao mesmo tempo, e nunca mais que Requisições; um campo vazio ou 0 significa uma por vez.
- Use Rampa (s) para escalonar a partida dos trabalhadores ao longo desses segundos: o trabalhador k de n (k a partir de 0) começa depois de rampa × k / n segundos. Com 0, todos começam juntos.
- Leia o progresso (
n / N requisições); p50, p90, p95 e p99; média, mín e máx; req/s; Sucesso e Falhas; a Distribuição de códigos de status; e até 20 mensagens de erro.
Você não pode, e por quê
- Rodar mais de 100 requisições ao mesmo tempo: Concorrência é limitada a 100 e ao número de Requisições.De propósito
- Definir uma duração total ou um tempo de espera: não há campos para isso.Ainda não
- Testar um protocolo de streaming: só a requisição REST carregada.Ainda não
- Iniciá-lo no Free: a tela abre, mas Iniciar abre a janela API Tester Pro e nenhuma requisição é enviada. A entrada não traz selo.Pro
Mock Server
Um pequeno servidor HTTP que roda dentro do app e responde com respostas fixas, útil para montar um cliente antes de a API real existir. Ligá-lo é um recurso Pro; configurar rotas é gratuito.

Você pode
- Abra Ferramentas → Mock Server. Ligue-o pelo cabeçalho: o subtítulo mostra
http://127.0.0.1:<port>, ou Parado. - Defina Porta (padrão 8090; 0 deixa o sistema escolher uma; travada enquanto roda) e Latência (ms) (de 0 a 60.000), somada a toda resposta.
- Leia o aviso Escuta apenas em loopback: acessível deste dispositivo, não pela rede.
- Toque em Adicionar rota. Nova rota mock pede um método (GET, POST, PUT ou DELETE), Caminho, Código de status e Corpo da resposta. Cada rota tem uma chave liga/desliga e um botão de excluir.
- Leia o log das requisições atendidas (o painel mostra as últimas 30 e guarda 200): hora, código,
METHOD pathe a rota que correspondeu, ou nenhuma rota correspondeu. Limpar tudo o esvazia. - Obtenha rotas também de outros lugares: uma importação OpenAPI (Gerar mock a partir deste OpenAPI) e Usar como mock no Histórico.
Você não pode, e por quê
- Editar uma rota depois de criada, ou definir seus headers, atraso ou prioridade na caixa de diálogo: você só pode ligá-la, desligá-la ou excluí-la. As importações preenchem esses campos com valores padrão.Ainda não
- Manter as rotas e o log quando você fecha o módulo: eles vivem na memória, e o servidor para junto com a tela.Ainda não
- Acessá-lo de outro dispositivo ou por HTTPS: ele escuta só em loopback, sem TLS, então seus dados de teste não ficam expostos no Wi-Fi de um café.De propósito
- Ligá-lo no Free: a chave continua desligada e a janela API Tester Pro abre.Pro
Como ele responde
HTTP/1.1 em 127.0.0.1, uma conexão por requisição. Uma rota corresponde por método e caminho: :name casa com um segmento, * um segmento e ** o resto; vence a de maior prioridade, depois a mais específica; uma barra final é ignorada. A query string e o corpo da requisição são ignorados. Sem correspondência, você recebe um 404 com um corpo JSON que diz No mock route matched.
Cookies
O pote de cookies é de verdade: ele guarda os headers Set-Cookie das respostas e os devolve por domínio (subdomínios incluídos), prefixo de caminho, validade e Secure (só HTTPS). Fica no banco de dados do dispositivo. Desligue-o para uma requisição com Habilitar cookies em Ajustes.
Você pode
- Abra Ferramentas → Cookies. O subtítulo de Pote de cookies os conta (por exemplo
3 guardados); cada cookie mostra nome, valor, um cadeado se forSecure, HttpOnly, domínio e caminho. - Remova um com ✕, ou toque em Limpar tudo.
- Leia os cookies de uma única resposta na aba Cookies dela.
Você não pode, e por quê
- Adicionar ou editar um cookie manualmente.Ainda não
- Apagar de vez os cookies salvos: ✕ e Limpar tudo só esvaziam a lista mostrada, e a cópia guardada no dispositivo não é apagada, então eles podem reaparecer.Ainda não
- Distinguir cookies host-only de cookies de domínio: o pote os trata igual.Ainda não
Gerar código
⋮ → Gerar código abre o Gerador de código: escolha um destino, leia o código com a extensão de arquivo dele e toque em Copiar. Exportar cURL, no mesmo menu, mostra o cURL gerado.
Você pode
- Escolha entre 27 destinos, que dão 26 saídas diferentes (cURL e Shell — cURL são o mesmo comando): cURL, HTTPie, Wget; JavaScript (Fetch, Axios, XHR, jQuery); TypeScript (Fetch); Python (Requests, http.client); Java (OkHttp, HttpURLConnection, HttpClient 11+); Kotlin (OkHttp, Ktor); Swift (URLSession); Go (net/http); PHP (cURL, Guzzle); Ruby (Net::HTTP); C# (HttpClient, RestSharp); Rust (reqwest); Dart (http); R (httr); PowerShell; Shell (cURL).
- Obtenha o método, a URL com seus parâmetros de consulta ativos, os headers ativos e o corpo (raw, JSON, XML, HTML, JavaScript, form-urlencoded, ou GraphQL como
{"query":…,"variables":…}). As{{variables}}são resolvidas com o ambiente ativo, exceto os segredos, que ficam como{{name}}; as linhas secretas mostram••••••••.
Você não pode, e por quê
- Ter autenticação no código gerado, exceto no cURL: todos os outros destinos a omitem. O cURL inclui Bearer, Basic, Digest, Custom e API Key via header, mas não OAuth 2.0 nem AWS Signature.Ainda não
- Ter um corpo para requisições Multipart ou Binary: ele sai vazio.Ainda não
Importar e exportar
A importação fica em Ferramentas → Importar. A exportação é por coleção (Coleções → ⋮ → Exportar) e por requisição (Exportar cURL).
Importar
Você pode
- Em Importar requisição, escolha um Formato: cURL, Postman (v2.1), Insomnia, OpenAPI / Swagger, HAR File ou OpenAPI YAML. Cole o texto e toque em Importar; não há seletor de arquivos.
- Espere que o cURL substitua a requisição aberta e que os outros cinco criem uma coleção inteira, anunciada como Importado "name" — N requisições ou Falha ao importar: ….
- Com um formato OpenAPI, marque Gerar mock a partir deste OpenAPI para adicionar uma rota mock para cada método e caminho.
- Toque em Importar do projeto para ler coleções salvas como arquivos (veja Salvar no projeto).
Você não pode, e por quê
- Importar um ambiente do Postman (só coleções), ou importar de um arquivo: você cola o texto.Ainda não
- Importar uma segunda coleção no Free: o painel fecha e a janela API Tester Pro abre.Pro
- Ver por que uma importação de cURL falhou: o erro vai só para o console.Ainda não
O que cada formato traz
| Formato | Importado |
|---|---|
| cURL | As flags usuais: -X, -H, -d, --data-urlencode, -F, --data-binary, -u, --digest, --ntlm, --proxy, --connect-timeout, -k e -L. --max-redirs não é lido. Um --proxy é aplicado ao enviar, mas nenhuma tela o mostra. |
| Postman (v2.1) | Pastas, requisições, autenticação, variáveis de coleção e scripts de pré-requisição e de teste. O estado do OAuth 2.0 além do token, response[] e protocolProfileBehavior são ignorados. |
| Insomnia | Grupos e requisições, e as variáveis de todos os ambientes do arquivo, achatadas em uma única lista de variáveis de coleção (se um nome se repete, vale o primeiro encontrado). grpc_request, testes unitários, specs e scripts são ignorados. |
| OpenAPI / Swagger, OpenAPI YAML | OpenAPI 3.0 e Swagger 2.0 em JSON ou YAML: uma requisição por método e caminho, agrupadas em pastas pela primeira tag. $ref não é resolvido e security não é lido. O YAML é lido por um pequeno parser embutido: sem âncoras, aliases nem múltiplos documentos. |
| HAR File | HAR 1.2: uma requisição por entrada, sem pastas e sem respostas. |
Exportar
Você pode
- Em Exportar "name", escolha Postman Collection v2.1, Insomnia Export, OpenAPI 3.0, HAR Archive ou Markdown Documentation, leia a visualização e toque em Copiar (Copiado para a área de transferência). O Markdown acrescenta exemplos de resposta do seu histórico, casados por método e URL, vencendo o mais recente.
Você não pode, e por quê
- Salvar uma exportação num arquivo ou compartilhá-la: você só pode copiá-la.Ainda não
Salvar no projeto
Uma coleção pode ser espelhada como arquivos JSON simples dentro do projeto aberto, para que você a revise num pull request. O banco de dados do app continua sendo a fonte da verdade: os arquivos são uma cópia que você escreve à mão com um toque, e nada é commitado por você.
Salvar
- 1Abra um projeto. Sem um, o item ⋮ de Coleções diz Abra um projeto para salvar coleções como arquivos e só explica.
- 2Toque em Coleções → ⋮ → Salvar no projeto. O app escreve
.pocketcode/api/<collection>/e diz Salvo em .pocketcode/api/ — N arquivos. Confirme com o gerenciador Git do app para manter a alteração. - 3Faça o commit dos arquivos com o gerenciador Git do app quando quiser mantê-los.
_collection.jsonguarda o id, o nome, a autenticação, os headers, os scripts e as variáveis da coleção. Cada pasta é um subdiretório com um_folder.json. Cada requisição é um<name>.json, com slug do nome em letras minúsculas, dígitos e hifens (-2,-3em caso de conflito;untitledse não sobrar nada).- Salvar de novo limpa esse diretório e o reescreve a partir do banco de dados, então edições feitas à mão nos arquivos são sobrescritas. Os ambientes não são gravados.
- Os segredos ficam de fora. Antes de gravar, o app esvazia os valores da autenticação (token bearer, senhas, valor da chave de API, token de acesso e segredo do cliente do OAuth 2.0, chaves e token de sessão da AWS, e assim por diante), das linhas marcadas como Valor secreto ou cujo nome parece secreto (token, secret, key, password, passphrase, auth, cookie, credential) em cabeçalhos, parâmetros de consulta, campos de formulário e variáveis da coleção, dos parâmetros de consulta de nome secreto e da senha de uma URL
usuario:senha@, e a senha do proxy e a frase secreta do certificado. A estrutura permanece: tipo de autenticação, nomes de cabeçalho, nomes de usuário, URLs. - Uma referência
{{variável}}(sozinha ou depois deBearer) não é um segredo e é gravada como está. Guarde os tokens numa variável de ambiente secreta e escreva{{token}}na requisição.
Você pode
- Revisar os arquivos num pull request e fazer commit deles: os valores de autenticação, as linhas secretas e os cabeçalhos, parâmetros e campos de formulário de nome secreto são salvos vazios, então os arquivos mostram a forma da coleção e não as suas credenciais.
Você não pode, e por quê
- Manter um segredo fora de um corpo bruto ou de um script nos arquivos: ambos são gravados como foram digitados, então um token colado ali vai para o commit junto com eles.De propósito
Importar do projeto
Você pode
- Abra Importar do projeto no painel Importar (ele explica Abra um projeto para importar coleções de arquivos quando não há projeto aberto).
- Escolha uma pasta em
.pocketcode/api/e leia a prévia, que não toca nos seus dados: Nova coleção "name" — N requisições, ou Isso substituirá "name" (N requisições atuais) por M requisições dos arquivos (uma substituição quando oidem_collection.jsoncoincide com uma coleção existente), mais N arquivo(s) ignorados por erros. - Confirme com Importar ou Substituir (vermelho), ou Cancelar: nada é aplicado sozinho.
- Com Substituir, os segredos que você já tem permanecem: um valor que chega vazio dos arquivos não sobrescreve o da coleção local com o mesmo
id(mesmo tipo de autenticação, mesma linha). Uma coleção nova começa com esses valores vazios.
Você não pode, e por quê
- Importar uma nova coleção de arquivos no Free quando você já tem uma: a janela API Tester Pro abre. Substituir uma existente é sempre permitido.Pro
Free e Pro
Quase todo o API Tester é gratuito: os seis protocolos, o editor completo, scripts e asserções, as ferramentas de resposta, cookies, importação e exportação, geração de código, arquivos de projeto e comparação de respostas. O Pro acrescenta três ferramentas e remove três limites. No Free, uma ação bloqueada abre uma única janela, API Tester Pro, cujo texto muda conforme a ação (executor, mock server ou teste de carga). Ela lista Executor de coleções, Servidor mock no seu celular e Teste de carga com concorrência, e tem Desbloquear API Tester Pro e Agora não. Desbloquear API Tester Pro fecha o API Tester e abre a tela Pro.
| Recurso | Free | Pro |
|---|---|---|
| Coleções | 1. Criar (Nova coleção ou um nome novo em Salvar na coleção) ou importar uma segunda abre a janela API Tester Pro. | Sem limite |
| Ambientes | 1 (um Default já existe). Criar um segundo abre a janela API Tester Pro. | Sem limite |
| Histórico de requisições | 10 entradas. Depois disso, as novas requisições não são salvas até você usar Limpar todo o histórico; uma mensagem diz O plano gratuito guarda apenas as últimas 10 entradas do histórico. Esta requisição não foi salva. | As últimas 200 (as mais antigas são excluídas) |
| Mock server: ligá-lo | Não. A chave continua desligada e a janela API Tester Pro abre; as rotas ainda podem ser configuradas. | Sim |
| Executor de coleções | Não. Executar o abre, mas a janela API Tester Pro aparece por cima e Executar coleção não executa nada; o menu ⋮ de uma coleção traz um selo Pro. | Sim |
| Teste de carga | Não. Iniciar abre a janela API Tester Pro; a entrada não traz selo. | Sim |
| Todo o resto: os seis protocolos, scripts, ferramentas de resposta, cookies, importação e exportação, geração de código, arquivos de projeto, comparação, abas | Sim | Sim |
Privacidade e segurança
- O que é guardado e onde. Coleções, ambientes, histórico (cada entrada com sua requisição e resposta) e cookies ficam guardados no banco de dados do app, no seu dispositivo.
- O histórico guarda as requisições como você as escreveu. Uma referência
{{token}}continua sendo referência; um token digitado direto em Auth ou num header fica guardado como foi digitado. - Segredos. Uma variável ou linha marcada como secreta é mascarada na interface, fica como
{{name}}ou••••••••no cURL exportado e no código gerado, e nunca é enviada pelo Cloud Sync. O valor real é enviado quando você envia a requisição. - Os arquivos de projeto (Salvar no projeto) são gravados sem segredos: os valores listados em Salvar no projeto são salvos vazios, e as referências
{{variável}}permanecem. O corpo bruto e os scripts são gravados como foram digitados. - O Cloud Sync (Pro) não sincroniza coleções nem ambientes por enquanto (a opção está pausada), então eles ficam só no seu aparelho.
- HTTP simples só para o seu próprio dispositivo.
http://ews://funcionam só paralocalhost,127.0.0.1e10.0.2.2(o host do emulador Android); todo o resto precisa ser HTTPS ouwss://. Um endereço de rede local como192.168.x.xpor HTTP simples é bloqueado: use HTTPS ou um túnel. - Certificados. Só as autoridades certificadoras do sistema são confiáveis, não as que você mesmo instalou. Com Verificar SSL desligado, qualquer certificado e nome de host é aceito.
- O mock server escuta só em loopback: nada mais na sua rede consegue alcançá-lo.
- Workflows recebem a URL, o método, o status e o tempo de cada resposta enviada desta tela, nunca o corpo nem os headers.
- O assistente de IA pode enviar requisições por este módulo sem abri-lo; ele recebe no máximo 4096 caracteres do corpo da resposta e não pode ter como alvo o backend do próprio PocketCode.
Limitações
O que falta hoje, num só lugar. “Ainda não” significa que o código tem espaço para isso, mas nenhuma tela tem.
- O gRPC está no código, mas oculto nesta versão: seu painel precisa da biblioteca
protobuf-javacompleta, que o app deixa de fora, então ainda não pode funcionar no Android.Ainda não - HTTP simples e
ws://só chegam a localhost, 127.0.0.1 e 10.0.2.2; um endereço de rede local precisa de HTTPS.Precisa de rede - Só as autoridades certificadoras do sistema são confiáveis, então um proxy com um certificado que você mesmo instalou não funciona.Precisa de rede
- Sem ajuste de proxy nem de certificado de cliente.Ainda não
- Os redirecionamentos do OAuth 2.0 não podem ser capturados; você mesmo cola o
code. Sem PKCE e sem refresh token.De propósito - Hawk e NTLM aparecem como Em breve e não fazem nada.Ainda não
- WebSocket e SSE não conseguem enviar headers nem reconectar sozinhos; o SSE ignora
retry:.Ainda não - O GraphQL não tem subscriptions, nome de operação, headers nem autenticação no painel.Ainda não
- O MQTT fala só a versão 5 e não consegue publicar com retain.Ainda não
- Os scripts recebem um pequeno subconjunto de
pme precisam de um WebView moderno.De propósito - As rotas mock e o log delas vivem só na memória e não têm caixa de diálogo de edição.Ainda não
- As coleções não podem ser renomeadas nem reorganizadas, as pastas não podem ser criadas nem abertas, e as requisições salvas se chamam todas New Request.Ainda não
- Os cookies removidos do painel não são apagados da cópia salva.Ainda não
- Sem pré-visualização de imagem, sem compartilhar ou salvar uma resposta e sem mostrar o motivo de um erro de rede.Ainda não
- Só a saída cURL do gerador de código inclui autenticação.Ainda não
- O histórico guarda no máximo 200 entradas.De propósito
- Os erros escritos pelos clientes MQTT e Socket.IO estão em espanhol, qualquer que seja o idioma do app.Ainda não
- Corpos brutos e scripts são gravados como foram digitados nos arquivos de projeto (Salvar no projeto): o app não distingue um segredo dentro de texto livre.De propósito
Solução de problemas
0 Error e um corpo vazio
A requisição não recebeu resposta: uma falha de rede, de TLS ou de tempo limite. O painel não mostra o motivo, mas o app o escreve no log do Console como uma linha que começa com ✗ Request failed:; a tela de erro não tem abas, então leia-o na aba Console da próxima resposta que chegar (o log cobre a sessão inteira). Confira o endereço, sua conexão e Tempo limite (ms). Um endereço http:// simples fora de localhost, 127.0.0.1 e 10.0.2.2 é bloqueado: use HTTPS.
Requisição cancelada
Você tocou em Cancelar requisição (ou a requisição foi cancelada) antes de a resposta chegar. Não há nada de errado.
A janela API Tester Pro abre quando toco em Executar coleção, Iniciar ou na chave do Mock Server
No Free, esses três são recursos Pro, e a janela diz qual você tentou. Criar uma segunda coleção ou um segundo ambiente (inclusive com um nome novo em Salvar na coleção) e importar uma coleção quando você já tem uma abrem a mesma janela. Agora não a fecha; Desbloquear API Tester Pro abre a tela Pro.
O plano gratuito guarda apenas as últimas 10 entradas do histórico. Esta requisição não foi salva.
O histórico do Free para em 10 entradas. Toque em Limpar todo o histórico para abrir espaço (não há como excluir uma única entrada), ou passe para o Pro.
JSON inválido: …
O corpo JSON não pode ser interpretado; o texto depois dos dois-pontos diz onde. Corrija antes de enviar, ou use Formatar quando ele for válido.
Falha ao importar: …
O texto colado não corresponde ao Formato que você escolheu, ou o documento está malformado. Escolha o formato certo. Para cURL não há mensagem: o erro está no log do Console.
Não foi possível salvar no projeto: …
O app não conseguiu gravar .pocketcode/api/ no projeto aberto; o texto depois dos dois-pontos diz o motivo.
Abra um projeto para salvar coleções como arquivos
Salvar no projeto e Importar do projeto funcionam no projeto aberto. Abra um antes.
Nenhuma coleção encontrada em .pocketcode/api/ neste projeto
O projeto aberto não tem uma pasta .pocketcode/api/ com um _collection.json. Salve antes uma coleção no projeto, ou abra o projeto certo.
Não foi possível ler esse arquivo como linhas de dados CSV ou JSON
O arquivo de dados do executor precisa de uma linha de cabeçalho se for CSV (vírgulas e aspas duplas, sem campos de várias linhas), ou deve ser um array JSON de objetos simples.
Não foi possível obter o token: …
A requisição do token OAuth 2.0 falhou; o texto diz o motivo. Confira URL do token, ID do cliente e Segredo do cliente. Com Authorization Code, cole só o valor de code.
A resposta não continha um esquema interpretável
O endpoint GraphQL não respondeu à consulta de introspecção com um esquema. Confira a URL; alguns servidores desligam a introspecção.
Erro: … num painel MQTT ou Socket.IO
A conexão falhou; o texto diz o motivo. Confira o host, a porta e Usar TLS. Para MQTT, confirme que o broker fala MQTT 5. Algumas mensagens estão em espanhol, por exemplo El host no puede estar vacío.
Não há pré-visualização para este tipo de conteúdo
Preview renderiza só text/html. Use Pretty ou Raw para o resto; imagens não podem ser visualizadas.
Nenhum resultado para esse caminho
O Filtro JSONPath busca um caminho exato, como $.a.b[0].c, não faz uma pesquisa. Comece por $.
Esta resposta não executou testes
A requisição não tem asserções, e o script de teste dela (se houver) nunca chamou pm.test ou não pôde rodar. Adicione uma asserção em Scripts.
JavaScript engine unavailable on this device
Um aviso do console: este dispositivo não tem um WebView moderno para o motor de scripts, então o script de pré-requisição ou de teste não rodou. As asserções rodaram mesmo assim.
Script error: …
Seu script lançou um erro, muitas vezes porque usa uma parte da API do Postman que não existe (pm.sendRequest, pm.variables, require…). Só existe o subconjunto documentado de pm.
No enabled routes: every request will get 404 until you add one
Um aviso do console quando você liga o mock server sem rotas ativas. Um 404 cujo corpo diz No mock route matched significa que o método ou o caminho não casa com nenhuma rota. Se o console disser Mock server could not start: …, a porta provavelmente está ocupada: escolha outra, ou 0.