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.dev/mock/ABC123/users
{ "name": "João", "email": "joao@email.com" }
# 3. Liste os dados salvos
GET https://httpdrop.dev/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.
Criar Tabela CRUD
No dashboard, clique em + Nova Tabela dentro do endpoint e informe o path (ex: /produtos). O sistema cria automaticamente:
Paginação e Filtros
O GET de lista suporta parâmetros de query:
| Parâmetro | Tipo | Descrição |
|---|---|---|
| _page | number | Página (padrão: 1) |
| _limit | number | Itens por página (padrão: todos) |
| _sort | string | Campo para ordenar (ex: name) |
| _order | string | asc ou desc (padrão: asc) |
| {campo} | string | Filtro 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}}"
}
| Token | Exemplo |
|---|---|
| {{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}"
}
| Campo | Tipo | Descrição |
|---|---|---|
| method | string | GET, POST, PUT, PATCH, DELETE ou * (qualquer) |
| path | string | Path exato ou com wildcard (ex: /users/*) |
| status | number | HTTP status code da resposta |
| body | string | Body da resposta (string JSON ou texto) |
| delay | number | Delay em ms antes de responder |
| headers | object | Headers 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
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" }
| Token | Descriçã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)
}
| Campo | Tipo | Descrição |
|---|---|---|
| sequenceResponses | array | Lista de {"status":N,"body":"..."}. Suporta tokens de templating no body. |
| sequenceMode | string | loop — cicla do início após último. last — fica na última resposta. |
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
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
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:
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.dev/invite?token=xxx" }
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ção | Descrição |
|---|---|
| endpoint.created | Endpoint criado |
| endpoint.updated | Endpoint editado |
| endpoint.deleted | Endpoint removido |
| rule.created | Mock Rule criada |
| rule.deleted | Mock Rule removida |
| member.added | Membro adicionado ao workspace |
| member.removed | Membro 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"
}
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", ... }
]
}
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:
- Selecione o request base no primeiro dropdown
- Selecione o request de comparação no segundo
- Escolha a seção: Response Body, Request Body ou Headers
- O diff LCS mostra linhas adicionadas em verde e removidas em vermelho
- Contexto comprimido: apenas ±3 linhas ao redor de cada mudança — o restante é colapsado com ···
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}
Presets BR
Presets prontos para os campos sensíveis mais comuns em APIs brasileiras:
| Preset | Campos cobertos |
|---|---|
| cpf | $.cpf, $.cnpj, $.documento |
| $.email, $.usuario.email, $.user.email | |
| card | $.card.number, $.cartao.numero, $.creditCard |
| auth | Headers: 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 }
| ID | Nome | Categoria | Inclui |
|---|---|---|---|
| tpl-ecommerce | E-Commerce | E-Commerce | Pedidos, carrinho, produtos, pagamentos |
| tpl-auth-jwt | Auth JWT | Auth | Login, logout, register, /me, refresh-token |
| tpl-blog-api | Blog API | Content | Posts, comentários, categorias |
| tpl-social-feed | Social Feed | Social | Feed, likes, follows, notificações |
| tpl-payments | Payments API | Business | Transações, saldo, Pix, webhook |
| tpl-user-crud | User CRUD | General | CRUD 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" }]
}
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
| Comando | Descrição |
|---|---|
| login [url] | Autentica e salva token em ~/.httpdrop-cli.json |
| init | Criação guiada de endpoint com template opcional |
| ls | Lista 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) |
| status | Versão do servidor, uptime e dados da conta |
CLI — Variáveis de ambiente
| Variável | Descrição |
|---|---|
| HTTPDROP_URL | URL do servidor (padrão: https://httpdrop.dev) |
| HTTPDROP_TOKEN | Token de API — sobrescreve ~/.httpdrop-cli.json |
| DEBUG | Exibe stack traces em erros (DEBUG=1) |
| NO_COLOR | Desativa 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
| Tool | Descrição |
|---|---|
| list_endpoints | Lista todos os endpoints mock do usuário |
| get_endpoint | Detalha um endpoint (config, rules, stats) |
| create_endpoint | Cria um novo endpoint mock |
| get_requests | Retorna últimas N requests capturadas |
| update_response | Atualiza status/body/headers da resposta mock |
| replay_request | Reenvia 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 }}
| Input | Descrição | Obrigatório |
|---|---|---|
| token | Token de API httpdrop | Sim |
| server | URL do servidor (padrão: httpdrop.dev) | Não |
| spec | Caminho para o arquivo OpenAPI a importar | Não |
| endpoint-id | ID do endpoint de destino | Quando spec definido |
| command | Comando 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âmetro | Descrição | Padrão |
|---|---|---|
| theme | dark ou light | dark |
| compact | 1 para versão compacta | 0 |
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.
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
| Recurso | Descrição |
|---|---|
| Syntax highlighting | Keywords, métodos HTTP e status codes coloridos em .httpdrop.yaml |
| Snippets | httpdrop, hdrule, hdcrud — templates prontos |
| CodeLens | Botão "Deploy" e "Preview" no topo de arquivos .httpdrop.yaml |
| Hover | Documentação inline ao passar o mouse sobre campos YAML |
| Comandos | httpdrop: 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 |
|---|---|---|---|---|
| Free | 150 | 4 | 1 dia | 1 |
| Individual | 20.000 | 20 | 30 dias | 1 |
| Pro | 35.000 | 100 | 30 dias | 5 |
| Scale | 65.000 | 200 | 90 dias | 10 |
| Team | 120.000 | 500 | 90 dias | 50 |
| Enterprise | Ilimitado | Ilimitado | Ilimitado | Ilimitado |
Rate Limits
Para proteger a plataforma, limites de requisição por IP são aplicados nas rotas de mock:
| Tipo | Limite | Janela |
|---|---|---|
| IPs anônimos | 300 req | 1 hora |
| IPs autenticados | 1.000 req | 1 hora |
| Body máximo | 1 MB | — |