Home Login

httpdrop

Mock server com CRUD persistente, Faker BR, Chaos Mode, API Portal, import/export OpenAPI, mascaramento LGPD e diff estruturado de requests. Simule, inspecione e proteja um backend completo sem escrever uma linha de código.

Quickstart

Crie um endpoint e comece a receber requisições em 30 segundos:

# 1. Crie um endpoint via API ou no dashboard
POST /api/endpoints
{ "name": "My API" }
→ { "id": "ABC123", ... }

# 2. Envie requisições para o endpoint
POST https://httpdrop.com/mock/ABC123/users
{ "name": "João", "email": "joao@email.com" }

# 3. Liste os dados salvos
GET  https://httpdrop.com/mock/ABC123/users
→ { "data": [...], "total": 1, "page": 1 }

Conceitos

Endpoint

Um namespace isolado para sua API. Cada endpoint tem um ID único (ex: ABC123) e agrupa tabelas CRUD, Mock Rules e configurações de Chaos Mode.

CRUD Table

Criada com um path (ex: /users), responde automaticamente a GET, POST, PUT, PATCH e DELETE. Dados persistem no banco SQLite.

Mock Rule

Intercepta requisições para um path específico e retorna uma resposta customizada — status HTTP, delay, body fixo. Tem prioridade sobre tabelas CRUD.

Chaos Mode

Injeta falhas aleatórias nas respostas de um endpoint — taxa de erro configurável, status HTTP ponderados, latência extra e regras por rota.

Workspace

Agrupa endpoints por time ou projeto. Suporta múltiplos membros com papéis de owner/editor. Cada usuário tem um workspace pessoal criado automaticamente.

API Tokens

Crie tokens de acesso pessoal no dashboard em Tokens. Use o token para autenticar chamadas à API sem depender de sessão de browser.

# Autenticação via Bearer token
GET /api/endpoints
Authorization: Bearer hd_xxxxxxxxxxxxxxxxxxxx

Tokens têm as mesmas permissões do usuário que os criou. Revogue no dashboard a qualquer momento.

GET/api/me/tokensLista tokens
POST/api/me/tokensCria token
DELETE/api/me/tokens/{id}Revoga token

Criar Tabela CRUD

No dashboard, clique em + Nova Tabela dentro do endpoint e informe o path (ex: /produtos). O sistema cria automaticamente:

GET/mock/{ID}/produtosLista todos com paginação
GET/mock/{ID}/produtos/{id}Busca por ID
POST/mock/{ID}/produtosCria registro
PUT/mock/{ID}/produtos/{id}Substitui registro
PATCH/mock/{ID}/produtos/{id}Atualiza campos
DELETE/mock/{ID}/produtos/{id}Remove registro

Paginação e Filtros

O GET de lista suporta parâmetros de query:

ParâmetroTipoDescrição
_pagenumberPágina (padrão: 1)
_limitnumberItens por página (padrão: todos)
_sortstringCampo para ordenar (ex: name)
_orderstringasc ou desc (padrão: asc)
{campo}stringFiltro por valor exato (ex: status=active)
GET /mock/{ID}/users?_page=2&_limit=10&_sort=name&status=active
→ { "data": [...], "total": 47, "page": 2, "limit": 10 }

Faker

Use tokens {{faker.field}} no body do POST para gerar dados dinâmicos com dados brasileiros reais:

POST /mock/{ID}/users
{
  "nome":    "{{faker.name}}",
  "email":   "{{faker.email}}",
  "cpf":     "{{faker.cpf}}",
  "cidade":  "{{faker.city}}",
  "empresa": "{{faker.company}}"
}
TokenExemplo
{{faker.name}}João Silva
{{faker.email}}joao.silva@email.com
{{faker.cpf}}123.456.789-00
{{faker.cnpj}}12.345.678/0001-90
{{faker.phone}}(11) 99999-0000
{{faker.city}}São Paulo
{{faker.state}}SP
{{faker.address}}Rua das Flores, 123
{{faker.company}}TechCorp Ltda
{{faker.price}}149.90
{{faker.uuid}}a1b2c3d4-e5f6-...
{{faker.date}}2024-03-15
{{faker.boolean}}true
{{faker.status}}active
{{faker.color}}#3a86ff
{{faker.int}}42
{{faker.float}}3.14
{{faker.word}}lorem
{{faker.sentence}}Lorem ipsum dolor sit.
{{faker.url}}https://example.com

Seed em massa

Use a rota de seed para popular uma tabela com N registros de uma vez:

POST /api/faker/{epId}/users
{
  "template": { "nome": "{{faker.name}}", "email": "{{faker.email}}", "cpf": "{{faker.cpf}}" },
  "count": 100
}
→ { "inserted": 100 }

Mock Rules

Intercepte requisições e retorne respostas fixas — ideal para simular autenticação, erros e estados específicos.

POST /api/rules/{epId}
{
  "method": "POST",
  "path":   "/auth/login",
  "status": 200,
  "delay":  300,
  "body":   "{\"token\": \"jwt-fake-123\", \"expiresIn\": 3600}"
}
Prioridade: Mock Rules têm prioridade sobre tabelas CRUD. Se um path bate em ambos, a Rule vence.
CampoTipoDescrição
methodstringGET, POST, PUT, PATCH, DELETE ou * (qualquer)
pathstringPath exato ou com wildcard (ex: /users/*)
statusnumberHTTP status code da resposta
bodystringBody da resposta (string JSON ou texto)
delaynumberDelay em ms antes de responder
headersobjectHeaders customizados na resposta

Delay Global

Configure um delay em ms para simular latência de rede em todas as requisições do endpoint:

PATCH /api/endpoints/{id}
{ "globalDelay": 1200 }  // 1.2s em todas as respostas
O delay global é somado ao delay individual de cada Mock Rule.

Request Templating

Use dados da requisição de entrada como variáveis na resposta mock. Funciona em qualquer campo body de Mock Rules e templates de IA.

# Rule que espelha dados da request
POST /api/rules/{epId}
{
  "method": "POST",
  "path":   "/users",
  "status": 201,
  "body":   "{"id": "{{uuid}}", "name": "{{req.body.name}}", "createdAt": "{{timestamp}}"}"
}

# Request de entrada
POST /mock/{epId}/users
{ "name": "João" }

→ { "id": "a1b2...", "name": "João", "createdAt": "1712345678901" }
TokenDescrição
{{req.body.campo}}Campo do body JSON da requisição
{{req.query.param}}Query string (ex: ?page=2 → {{req.query.page}})
{{req.headers.nome}}Header da requisição (lowercase)
{{req.params.id}}Path param (ex: /users/42 → {{req.params.id}} = "42")
{{req.method}}Método HTTP (GET, POST...)
{{req.path}}Path completo da requisição
{{timestamp}}Unix timestamp atual em ms
{{uuid}}UUID v4 aleatório
{{env.CHAVE}}Variável de ambiente do workspace
{{faker.xxx}}Qualquer gerador Faker (ex: {{faker.name}})
# Exemplo avançado: resposta de registro usa todos os tokens
{
  "id":        "{{uuid}}",
  "name":      "{{req.body.name}}",
  "email":     "{{req.body.email}}",
  "plan":      "{{env.DEFAULT_PLAN}}",
  "ip":        "{{req.headers.x-forwarded-for}}",
  "source":    "{{req.query.utm_source}}",
  "createdAt": "{{timestamp}}"
}

Response Sequences

Configure uma rule para retornar respostas diferentes em chamadas sucessivas. Ideal para testar retry logic, token refresh e fluxos de estado.

PATCH /api/rules/{epId}/{ruleId}
{
  "sequenceResponses": [
    { "status": 200, "body": "{"token": "abc"}" },
    { "status": 401, "body": "{"error": "expired"}" },
    { "status": 200, "body": "{"token": "xyz"}" }
  ],
  "sequenceMode": "loop"  // "loop" (repete) ou "last" (fica no último)
}
CampoTipoDescrição
sequenceResponsesarrayLista de {"status":N,"body":"..."}. Suporta tokens de templating no body.
sequenceModestringloop — cicla do início após último. last — fica na última resposta.
Prioridade: Se sequenceResponses está preenchido, os campos status e body da rule são ignorados.

Chaos Mode

Chaos Mode injeta falhas aleatórias nas respostas do endpoint para testar a resiliência da sua aplicação. Útil para simular instabilidade de rede, timeouts e erros de servidor.

# Ativar Chaos Mode
PATCH /api/endpoints/{id}/chaos
{
  "enabled":    true,
  "rate":       20,       // 20% das requests falham
  "status":     500,      // status padrão do erro
  "delay":      2000,     // latência extra máxima em ms
  "delayMin":   200,      // latência extra mínima
  "until":      "2024-12-31T23:59:59Z"  // expira automaticamente (opcional)
}

Status ponderados

Configure múltiplos status HTTP com pesos diferentes para simular cenários reais de falha:

PATCH /api/endpoints/{id}/chaos
{
  "enabled": true,
  "rate": 30,
  "statusWeights": [
    { "status": 500, "weight": 60 },
    { "status": 503, "weight": 25 },
    { "status": 429, "weight": 15 }
  ]
}

Chaos por rota Scale+

Defina taxa e status de chaos independentes para cada rota do endpoint:

POST /api/endpoints/{id}/chaos/routes
{
  "path":   "/payments/*",
  "rate":   50,
  "status": 503
}
// Apenas chamadas para /payments/* falharão 50% do tempo
Prioridade: Regras por rota sobrescrevem a taxa global. O Chaos Mode global ainda precisa estar ativo.

API Portal Individual+

Cada endpoint pode ter um portal público com documentação OpenAPI interativa gerada automaticamente a partir das suas tabelas CRUD e Mock Rules.

Acesse em: /portal/{epId}

# Tornar portal público ou privado
PATCH /api/endpoints/{id}/portal-public
{ "public": true }

# Download da spec OpenAPI
GET /api/portal/{id}/spec?format=json
GET /api/portal/{id}/spec?format=yaml
Privado por padrão: Portais são privados até você torná-los públicos. Apenas o owner e admins veem um portal privado.

Preview Page Individual+

Uma página de visualização pública do endpoint com estatísticas de requisições, dados das tabelas CRUD e métricas de latência.

Acesse em: /preview/{epId}

Também disponível como endpoint de dados para integrar em painéis próprios:

GET/api/preview/{epId}/dataRetorna stats + rows das tabelas

Workspaces

Organize endpoints por projeto ou time. Cada usuário tem um workspace pessoal automático. Planos Team+ suportam múltiplos workspaces com membros.

# Criar workspace
POST /api/workspaces
{ "name": "Projeto Alpha", "slug": "projeto-alpha" }

# Listar workspaces do usuário
GET /api/workspaces

# Criar endpoint em workspace específico
POST /api/endpoints
{ "name": "Users API", "workspaceId": "ws_abc123" }

Convidar membros

Convide membros por login GitHub ou compartilhe o link de convite:

POST /api/workspaces/{wsId}/invite
{ "login": "github-username" }
→ { "inviteLink": "https://httpdrop.com/invite?token=xxx" }
GET/api/workspaces/{wsId}/membersLista membros
DELETE/api/workspaces/{wsId}/members/{userId}Remove membro

Variáveis de Workspace

Defina variáveis nomeadas no workspace e referencie-as em qualquer Mock Rule via {{env.CHAVE}}. Útil para trocar configs (API keys, base URLs) sem editar cada rule.

# Criar ou atualizar variável
PUT /api/workspaces/{wsId}/vars
{ "key": "API_KEY", "value": "sk-prod-xxx" }

# Listar variáveis
GET /api/workspaces/{wsId}/vars

# Remover variável
DELETE /api/workspaces/{wsId}/vars/{key}

# Usar na rule
{ "body": "{"key": "{{env.API_KEY}}", "user": "{{req.body.email}}"}" }

Audit Log Scale+

Registro imutável de todas as ações no workspace: criação/edição/remoção de endpoints, rules e membros. Essencial para compliance e debugging em times.

GET /api/workspaces/{wsId}/audit?limit=20&offset=0
→ [
  {
    "action":      "endpoint.created",
    "userLogin":   "alice",
    "targetLabel": "Payments API",
    "createdAt":   "2024-03-15T12:00:00Z"
  },
  ...
]
AçãoDescrição
endpoint.createdEndpoint criado
endpoint.updatedEndpoint editado
endpoint.deletedEndpoint removido
rule.createdMock Rule criada
rule.deletedMock Rule removida
member.addedMembro adicionado ao workspace
member.removedMembro removido do workspace

Outgoing Webhooks

Configure uma URL para receber um POST a cada requisição recebida pelo endpoint mock. Integre com Slack, Discord, webhook.site, ou seus próprios sistemas de monitoramento.

# Configurar webhook no endpoint
PATCH /api/endpoints/{id}
{
  "webhookUrl":    "https://hooks.example.com/httpdrop",
  "webhookSecret": "meu-secret-hmac"  // opcional
}

# Payload enviado pelo httpdrop
{
  "event":      "request.received",
  "endpointId": "EP123",
  "request":    { "method": "POST", "path": "/users", "ip": "1.2.3.4", "body": "{...}" },
  "response":   { "status": 201 },
  "timestamp":  "2024-03-15T12:00:00Z"
}
Segurança: Com webhookSecret configurado, cada request inclui o header X-Httpdrop-Signature: sha256=<hmac>. Valide no seu servidor para garantir a autenticidade.
Fire-and-forget: O webhook é enviado em background com timeout de 5s. Falhas não afetam a resposta do mock.

Tráfego → Regras

Converta requisições capturadas em Mock Rules com um clique — ideal para clonar sua API real como mock em segundos.

No feed de requisições, clique em → Regras para converter todo o histórico. Ou abra uma requisição específica no inspector e clique em → Regra para criar uma rule a partir daquele request.

# Converter requisições específicas em rules
POST /api/rules/{epId}/from-requests
{
  "requestIds": ["REQ001", "REQ002", "REQ003"]
}
→ {
  "created": 2,
  "rules": [
    { "id": "RULE_NEW1", "method": "GET",  "path": "/users", ... },
    { "id": "RULE_NEW2", "method": "POST", "path": "/users", ... }
  ]
}
Sequence automática: Se o mesmo método + path teve respostas diferentes, o httpdrop cria automaticamente uma sequence rule — as respostas são alternadas em loop a cada chamada.

Diff Estruturado

Compare duas requisições capturadas lado a lado com diff LCS (Longest Common Subsequence). Útil para detectar regressões entre chamadas ou verificar que sua API retornou dados diferentes.

Na aba Diff do inspector:

  1. Selecione o request base no primeiro dropdown
  2. Selecione o request de comparação no segundo
  3. Escolha a seção: Response Body, Request Body ou Headers
  4. O diff LCS mostra linhas adicionadas em verde e removidas em vermelho
  5. Contexto comprimido: apenas ±3 linhas ao redor de cada mudança — o restante é colapsado com ···
Performance: Para respostas com mais de 800 linhas, o diff usa comparação posicional para evitar travamento do browser.

OpenAPI Export

Gere uma spec OpenAPI 3.0 a partir das Mock Rules configuradas. Importe diretamente no Swagger UI, Postman ou Insomnia.

GET /api/export/openapi/{epId}
→ {
  "openapi": "3.0.0",
  "info": { "title": "minha-api", "version": "1.0.0" },
  "servers": [{ "url": "https://httpdrop.dev/mock/ABC123" }],
  "paths": {
    "/users": {
      "post": {
        "responses": {
          "201": {
            "description": "201",
            "content": { "application/json": { "example": { "id": "uuid", "ok": true } } }
          }
        }
      }
    }
  }
}

No dashboard, clique em Export na aba Mock Rules para baixar o JSON da spec.

Privacidade & LGPD — Mascaramento

O httpdrop aplica mascaramento de dados sensíveis nas bordas de saída — o banco sempre guarda o dado bruto (necessário para replay). Só o payload que chega ao cliente passa pelo filtro.

Superfícies cobertas: histórico de requests, export JSON/NDJSON/CSV, feed WebSocket live, preview público e webhook outbound.

Configure em Workspace Settings → Privacidade:

# Listar políticas do workspace
GET /api/workspaces/{wsId}/mask-policies

# Criar política
POST /api/workspaces/{wsId}/mask-policies
{
  "type":      "preset",   // "preset" | "body_path" | "header"
  "pattern":   "cpf",
  "redaction": "mask"      // "mask" | "hash" | "remove"
}

# Habilitar/desabilitar política
PATCH /api/workspaces/{wsId}/mask-policies/{policyId}
{ "enabled": false }

# Remover política
DELETE /api/workspaces/{wsId}/mask-policies/{policyId}
Retroativo: Mudanças na política têm efeito imediato em todo o histórico — dados já armazenados aparecem mascarados na próxima consulta.

Presets BR

Presets prontos para os campos sensíveis mais comuns em APIs brasileiras:

PresetCampos cobertos
cpf$.cpf, $.cnpj, $.documento
email$.email, $.usuario.email, $.user.email
card$.card.number, $.cartao.numero, $.creditCard
authHeaders: Authorization, Cookie, X-Api-Key, X-Auth-Token
address$.endereco, $.address, $.logradouro
phone$.telefone, $.phone, $.celular

Campos personalizados: Use body_path com notação dot ($.user.cpf, pagamento.cartao.numero) ou header com o nome do header. Redações disponíveis: mask (substitui por ***), hash (SHA-256, auditável e irreversível) ou remove (remove o campo do objeto).

Template Library

Crie um endpoint completo em um clique. Cada template inclui Mock Rules pré-configuradas, tabelas CRUD e dados de seed prontos para usar.

# Listar templates disponíveis
GET /api/templates
GET /api/templates?category=Auth

# Aplicar template a um endpoint existente
POST /api/endpoints/{id}/apply-template
{ "templateId": "tpl-auth-jwt" }
→ { "ok": true, "rulesCreated": 6, "tablesCreated": 0 }
IDNomeCategoriaInclui
tpl-ecommerceE-CommerceE-CommercePedidos, carrinho, produtos, pagamentos
tpl-auth-jwtAuth JWTAuthLogin, logout, register, /me, refresh-token
tpl-blog-apiBlog APIContentPosts, comentários, categorias
tpl-social-feedSocial FeedSocialFeed, likes, follows, notificações
tpl-paymentsPayments APIBusinessTransações, saldo, Pix, webhook
tpl-user-crudUser CRUDGeneralCRUD completo de usuários com Faker

AI Generation Pro+

Descreva sua API em linguagem natural e o httpdrop gera Mock Rules, tabelas CRUD e templates Faker automaticamente usando Claude da Anthropic.

POST /api/ai/generate
{
  "prompt":     "API de delivery com pedidos, itens e rastreamento",
  "endpointId": "EP123"  // opcional — aplica direto ao endpoint
}
→ {
  "description": "API de delivery gerada",
  "rules": [
    { "method": "POST", "path": "/orders", "status": 201, "body": "{...}" },
    { "method": "GET",  "path": "/orders/{id}/track", "status": 200, "body": "{...}" }
  ],
  "crudTables": [{ "path": "/orders", "idField": "id" }]
}
Pré-requisito: Requer ANTHROPIC_API_KEY no servidor e plano Pro ou superior. Verifique disponibilidade em GET /api/ai/status.

CLI — Instalação

O CLI do httpdrop está disponível como pacote npm independente. Requer Node 18+.

# Usar sem instalar (recomendado)
npx @httpdrop/cli --help

# Instalar globalmente
npm install -g @httpdrop/cli

# Autenticar com seu token de API
httpdrop login https://httpdrop.dev

As credenciais são salvas em ~/.httpdrop-cli.json. Use as variáveis de ambiente HTTPDROP_URL e HTTPDROP_TOKEN para sobrescrever em CI/CD.

CLI — Comandos

httpdrop init              # Cria endpoint interativamente
httpdrop ls                # Lista endpoints da conta
httpdrop logs EP123        # Streama requisições em tempo real
httpdrop seed EP123 /users 50  # Seed de 50 usuários com Faker
httpdrop tunnel EP123      # Expõe endpoint via tunnel público
httpdrop import spec.yaml EP123  # Importa spec OpenAPI
httpdrop status            # Info da conta e do servidor
ComandoDescrição
login [url]Autentica e salva token em ~/.httpdrop-cli.json
initCriação guiada de endpoint com template opcional
lsLista endpoints em tabela formatada
logs <id>WebSocket stream de requisições em tempo real
seed <id> <path> [n]Insere N registros Faker na tabela CRUD
tunnel <id>Abre tunnel WebSocket e exibe URL pública
import <spec> <id>Importa spec OpenAPI (YAML ou JSON)
statusVersão do servidor, uptime e dados da conta

CLI — Variáveis de ambiente

VariávelDescrição
HTTPDROP_URLURL do servidor (padrão: https://httpdrop.dev)
HTTPDROP_TOKENToken de API — sobrescreve ~/.httpdrop-cli.json
DEBUGExibe stack traces em erros (DEBUG=1)
NO_COLORDesativa cores ANSI na saída

MCP Server — Instalação

O @httpdrop/mcp-server expõe o httpdrop como um servidor MCP (Model Context Protocol), permitindo que LLMs como Claude, Cursor e GitHub Copilot gerenciem endpoints mock diretamente via chat.

npm install -g @httpdrop/mcp-server

MCP Server — Configuração

Claude Desktop

Edite ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou %APPDATA%Claudeclaude_desktop_config.json (Windows):

{
  "mcpServers": {
    "httpdrop": {
      "command": "httpdrop-mcp",
      "env": {
        "HTTPDROP_TOKEN": "seu-token-aqui",
        "HTTPDROP_URL": "https://httpdrop.dev"
      }
    }
  }
}

Cursor

Em .cursor/mcp.json na raiz do projeto ou ~/.cursor/mcp.json:

{
  "mcpServers": {
    "httpdrop": {
      "command": "httpdrop-mcp",
      "env": {
        "HTTPDROP_TOKEN": "seu-token-aqui",
        "HTTPDROP_URL": "https://httpdrop.dev"
      }
    }
  }
}

MCP Server — Tools disponíveis

ToolDescrição
list_endpointsLista todos os endpoints mock do usuário
get_endpointDetalha um endpoint (config, rules, stats)
create_endpointCria um novo endpoint mock
get_requestsRetorna últimas N requests capturadas
update_responseAtualiza status/body/headers da resposta mock
replay_requestReenvia uma request capturada para a URL original

MCP Server — Exemplos de prompts

# Listar e inspecionar
Liste meus endpoints mock e me diga quais têm mais de 100 requests.

Mostre as últimas 10 requests do endpoint "checkout" e identifique erros 5xx.

# Criar e configurar
Crie um endpoint mock chamado "pagamentos" que responde 200 com
{"status": "approved", "id": "{{faker.uuid}}"} para POST /charges.

Configure o endpoint "auth" para retornar 401 quando o header Authorization
estiver ausente, e 200 com {"token": "jwt-here"} quando presente.

# Debugging e análise
Analise as últimas 50 requests do endpoint "users" e me diga
a distribuição de métodos HTTP e status codes.

Replay a última request POST /orders com o body modificado para
incluir "coupon": "DESCONTO10" e me diga a resposta.

Mock as Code — httpdrop.yaml

Versione seus mocks junto com o código. O formato httpdrop.yaml define endpoints, rules e dados CRUD em um arquivo declarativo.

# meu-projeto.httpdrop.yaml
httpdrop: '1.0'

endpoint:
  name: Users API
  cors: true
  delay: 0

rules:
  - method: GET
    path: /users
    status: 200
    body:
      users: []
  - method: POST
    path: /users
    status: 201
    body:
      id: 1
      name: Novo Usuário

crud:
  - path: /products
    idField: id
    seed:
      - id: 1
        name: Produto A
        price: 99.90

Importar via CLI

httpdrop import meu-projeto.httpdrop.yaml EP123

Exportar do dashboard

GET /api/endpoints/:id/httpdrop.yaml

Importar via API

POST /api/endpoints/:id/httpdrop.yaml
Content-Type: application/json
{ "spec": "httpdrop: '1.0'
rules:
  ..." }

GitHub Action

Use httpdrop/setup-action@v1 para atualizar mocks automaticamente no CI/CD, cada vez que a spec OpenAPI mudar.

# .github/workflows/deploy-mocks.yml
name: Deploy httpdrop mocks
on:
  push:
    paths: [openapi.yaml]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: httpdrop/setup-action@v1
        with:
          token: ${{ secrets.HTTPDROP_TOKEN }}
          spec: openapi.yaml
          endpoint-id: ${{ vars.HTTPDROP_ENDPOINT_ID }}
InputDescriçãoObrigatório
tokenToken de API httpdropSim
serverURL do servidor (padrão: httpdrop.dev)Não
specCaminho para o arquivo OpenAPI a importarNão
endpoint-idID do endpoint de destinoQuando spec definido
commandComando httpdrop a executar (ex: ls, status)Não

SDKs

JavaScript / TypeScript

npm install @httpdrop/sdk
const { Httpdrop } = require('@httpdrop/sdk');

const client = new Httpdrop({ token: 'mapi_...' });

// Criar endpoint + rule
const ep = await client.endpoints.create({ name: 'meu-mock' });
await client.rules.create(ep.id, { method: 'GET', path: '/users', status: 200, body: { users: [] } });

// Listar endpoints
const list = await client.endpoints.list();

Python

pip install httpdrop
from httpdrop import Httpdrop

client = Httpdrop(token="mapi_...")

ep = client.endpoints.create(name="meu-mock")
client.rules.create(ep["id"], method="GET", path="/users", status=200, body={"users": []})

Go

go get github.com/httpdrop/sdk-go
client := httpdrop.New("mapi_...")
ep, _ := client.Endpoints.Create(ctx, &httpdrop.EndpointInput{Name: "meu-mock"})
client.Rules.Create(ctx, ep.ID, &httpdrop.RuleInput{Method: "GET", Path: "/users", Status: 200})

Embed Widget

Incorpore um testador de endpoints interativo em qualquer documentação, site ou Notion.

<iframe
  src="https://httpdrop.dev/embed/SEU_ENDPOINT_ID"
  width="500"
  height="400"
  frameborder="0"
  style="border-radius:8px"
></iframe>
ParâmetroDescriçãoPadrão
themedark ou lightdark
compact1 para versão compacta0

URL: https://httpdrop.dev/embed/:endpointId?theme=dark&compact=0

Custom Domains PRO

Aponte um domínio próprio para um endpoint httpdrop. Seus clientes acessam api.minhapp.com/users ao invés de httpdrop.dev/mock/ABC123/users.

1. Registrar domínio

POST /api/endpoints/:id/domains
{ "domain": "api.minhapp.com" }
→ { id, domain, verified: false, cname_target: "httpdrop.dev" }

2. Configurar CNAME

Crie um registro CNAME no seu DNS:

api.minhapp.com  CNAME  httpdrop.dev

3. Verificar

POST /api/endpoints/:id/domains/:domainId/verify
→ { verified: true, domain: "api.minhapp.com" }

Após verificado, todo tráfego no domínio é roteado para o endpoint correspondente.

Nota: Custom domains requerem plano Pro ou superior. O routing usa o header HTTP Host para identificar o endpoint de destino.

VS Code Extension

Instale a extensão httpdrop no VS Code para syntax highlighting, autocomplete e deploy direto do editor.

ext install httpdrop.httpdrop

Recursos

RecursoDescrição
Syntax highlightingKeywords, métodos HTTP e status codes coloridos em .httpdrop.yaml
Snippetshttpdrop, hdrule, hdcrud — templates prontos
CodeLensBotão "Deploy" e "Preview" no topo de arquivos .httpdrop.yaml
HoverDocumentação inline ao passar o mouse sobre campos YAML
Comandoshttpdrop: Listar Endpoints, Deploy spec, Abrir Dashboard, Preview Embed

Configuração

// settings.json
{
  "httpdrop.serverUrl":  "https://httpdrop.dev",
  "httpdrop.apiToken":   "mapi_...",
  "httpdrop.endpointId": "ABC123"
}

Planos & Limites

Limites são resetados no dia 1 de cada mês. Cada requisição para /mock/* conta no total mensal do dono do endpoint.

Plano Req/mês Endpoints Histórico Membros
Free15041 dia1
Individual20.0002030 dias1
Pro35.00010030 dias5
Scale65.00020090 dias10
Team120.00050090 dias50
EnterpriseIlimitadoIlimitadoIlimitadoIlimitado
Alertas: Emails automáticos são enviados ao atingir 80% e 100% do limite mensal.

Rate Limits

Para proteger a plataforma, limites de requisição por IP são aplicados nas rotas de mock:

TipoLimiteJanela
IPs anônimos300 req1 hora
IPs autenticados1.000 req1 hora
Body máximo1 MB
429 Too Many Requests: A resposta inclui o header Retry-After com os segundos para reset da janela.

API Reference — Endpoints

GET/api/endpointsLista endpoints do usuário
POST/api/endpointsCria endpoint
PATCH/api/endpoints/{id}Atualiza nome/delay
DELETE/api/endpoints/{id}Remove endpoint
PATCH/api/endpoints/{id}/chaosConfigura Chaos Mode
PATCH/api/endpoints/{id}/portal-publicToggle portal público

API Reference — CRUD

GET/api/crud/{epId}Lista tabelas
POST/api/crud/{epId}Cria tabela CRUD
DELETE/api/crud/{epId}/{key}Remove tabela
GET/api/crud/{epId}/{key}/rowsLista rows da tabela
GET/api/export/{epId}/{key}Exporta JSON
POST/api/import/{epId}Importa JSON

API Reference — Rules

GET/api/rules/{epId}Lista regras
POST/api/rules/{epId}Cria regra
PATCH/api/rules/{epId}/{ruleId}Atualiza regra
DELETE/api/rules/{epId}/{ruleId}Remove regra

API Reference — Faker

POST/api/faker/{epId}/{key}Seed em massa

API Reference — Chaos

PATCH/api/endpoints/{id}/chaosConfigura Chaos Mode
GET/api/endpoints/{id}/chaos/routesLista rotas de chaos
POST/api/endpoints/{id}/chaos/routesCria rota de chaos
DELETE/api/endpoints/{id}/chaos/routes/{routeId}Remove rota de chaos

API Reference — Portal

GET/portal/{epId}Página do portal
GET/api/portal/{epId}/specDownload spec (JSON/YAML)
PATCH/api/endpoints/{id}/portal-publicToggle público

API Reference — Workspaces

GET/api/workspacesLista workspaces
POST/api/workspacesCria workspace
PATCH/api/workspaces/{wsId}Atualiza
DELETE/api/workspaces/{wsId}Remove
GET/api/workspaces/{wsId}/membersLista membros
POST/api/workspaces/{wsId}/inviteConvida membro

API Reference — Workspace Variables

GET/api/workspaces/{wsId}/varsLista variáveis
PUT/api/workspaces/{wsId}/varsCria ou atualiza variável
DELETE/api/workspaces/{wsId}/vars/{key}Remove variável

API Reference — Audit Log

GET/api/workspaces/{wsId}/auditLista eventos (limit, offset)

API Reference — Webhooks

PATCH/api/endpoints/{id}Configura webhookUrl e webhookSecret

API Reference — Privacidade & LGPD

GET/api/workspaces/{wsId}/mask-policiesLista políticas de mascaramento
POST/api/workspaces/{wsId}/mask-policiesCria política (preset/body_path/header)
PATCH/api/workspaces/{wsId}/mask-policies/{id}Atualiza política (enabled, redaction)
DELETE/api/workspaces/{wsId}/mask-policies/{id}Remove política

API Reference — Tráfego → Regras

POST/api/rules/{epId}/from-requestsConverte requests em Mock Rules (com sequence automática)

API Reference — OpenAPI Export

GET/api/export/openapi/{epId}Gera spec OpenAPI 3.0 a partir das Mock Rules

API Reference — Templates

GET/api/templatesLista templates (filtro: ?category=)
GET/api/templates/{id}Detalhes do template
POST/api/endpoints/{id}/apply-templateAplica template ao endpoint

API Reference — AI

GET/api/ai/statusVerifica disponibilidade da IA
POST/api/ai/generateGera rules a partir de prompt

API Reference — Me & Tokens

GET/api/meDados do usuário + limites
GET/api/me/tokensLista API tokens
POST/api/me/tokensCria API token
DELETE/api/me/tokens/{id}Revoga token
httpdrop — Home · Upgrade · SDK