Gere dados simulados digitados a partir de qualquer esquema JSON com uma chamada de API
Envie um esquema JSON para a API do gerador de dados simulados do Botoi e receba dados falsos realistas para perfis de usuário, pedidos de comércio eletrônico, postagens de blog e muito mais. Semeie bancos de dados e teste UIs em segundos.
Todo desenvolvedor front-end, engenheiro de controle de qualidade e construtor back-end enfrenta o mesmo atrito: você precisa de dados realistas testar uma UI, propagar um banco de dados ou verificar uma integração de API, mas escrever scripts iniciais manualmente é tedioso e os resultados parecem falsos. Entradas "John Doe" codificadas em todas as tabelas. Carimbos de data e hora idênticos. Preços que são sempre 9,99.
A API do gerador de dados simulados do Botoi adota uma abordagem diferente. Você define um esquema JSON que descreve a forma do dados que você deseja, e a API retorna uma matriz de registros que correspondem a essa forma com valores aleatórios e realistas. Um Chamada HTTP. Nenhuma biblioteca para instalar, nenhuma configuração falsa, nenhum arquivo inicial para manter.
Como funciona: defina um esquema, recupere os dados
O endpoint aceita um objeto JSON Schema padrão e um count parâmetro. Ele retorna uma matriz de
registros gerados correspondentes ao seu esquema, com tipos, formatos e restrições respeitados.
Solicitar
curl -X POST https://api.botoi.com/v1/mock/generate \\
-H "Content-Type: application/json" \\
-d '{
"schema": {
"type": "object",
"properties": {
"id": { "type": "integer" },
"name": { "type": "string" },
"email": { "type": "string", "format": "email" },
"age": { "type": "integer", "minimum": 18, "maximum": 80 }
},
"required": ["id", "name", "email"]
},
"count": 5
}'
Resposta
{
"success": true,
"data": {
"data": [
{ "id": 42, "name": "Sarah Chen", "email": "sarah@example.com", "age": 34 },
{ "id": 87, "name": "Marcus Johnson", "email": "marcus.j@example.com", "age": 28 },
{ "id": 15, "name": "Priya Patel", "email": "priya.patel@example.com", "age": 51 },
{ "id": 63, "name": "David Kim", "email": "dkim@example.com", "age": 45 },
{ "id": 91, "name": "Elena Rodriguez", "email": "elena.r@example.com", "age": 22 }
],
"count": 5
}
}
O esquema segue as convenções do esquema JSON. Definir type para controlar o tipo de dados,
format para dicas como "email" ou "date-time", e
minimum/maximum para intervalos numéricos. O required matriz
informa ao gerador quais campos devem aparecer em cada registro.
Exemplo: pedidos de comércio eletrônico
Testando um painel de gerenciamento de pedidos? Você precisa de pedidos com itens de linha, preços em centavos e valores de status. Aqui está um esquema para isso.
curl -X POST https://api.botoi.com/v1/mock/generate \\
-H "Content-Type: application/json" \\
-d '{
"schema": {
"type": "object",
"properties": {
"order_id": { "type": "string" },
"customer_email": { "type": "string", "format": "email" },
"total_cents": { "type": "integer", "minimum": 500, "maximum": 50000 },
"currency": { "type": "string" },
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"sku": { "type": "string" },
"quantity": { "type": "integer", "minimum": 1, "maximum": 10 },
"price_cents": { "type": "integer", "minimum": 100, "maximum": 9999 }
}
}
},
"status": { "type": "string" }
},
"required": ["order_id", "customer_email", "total_cents", "currency"]
},
"count": 3
}'
Resposta (primeiro registro mostrado):
{
"success": true,
"data": {
"data": [
{
"order_id": "ord_7f3a2b",
"customer_email": "lena.watts@example.com",
"total_cents": 12450,
"currency": "usd",
"items": [
{ "sku": "TSHIRT-BLK-M", "quantity": 2, "price_cents": 2999 },
{ "sku": "HOODIE-GRY-L", "quantity": 1, "price_cents": 6452 }
],
"status": "fulfilled"
}
],
"count": 3
}
}
Cada pedido recebe um ID, e-mail, total e conjunto de itens de linha diferentes. O minimum e
maximum restrições sobre quantity e price_cents manter valores
dentro de limites realistas.
Exemplo: postagens de blog
Construindo um CMS ou uma página de listagem de blog? Gere postagens com títulos, slugs, autores, carimbos de data/hora e tags.
curl -X POST https://api.botoi.com/v1/mock/generate \\
-H "Content-Type: application/json" \\
-d '{
"schema": {
"type": "object",
"properties": {
"id": { "type": "integer" },
"title": { "type": "string" },
"slug": { "type": "string" },
"author": { "type": "string" },
"published_at": { "type": "string", "format": "date-time" },
"tags": {
"type": "array",
"items": { "type": "string" }
},
"excerpt": { "type": "string" }
},
"required": ["id", "title", "slug", "author"]
},
"count": 10
}'
Dez postagens de blog com diferentes autores, títulos, matrizes de tags e datas de publicação. O suficiente para testar a paginação, filtragem e classificação lógica sem escrever um único fixture manualmente.
Propagar um banco de dados em um script
Combine o gerador de dados simulados com um cliente de banco de dados e você terá um script inicial completo. Aqui está uma versão bash que insere 50 usuários em um banco de dados PostgreSQL:
#!/bin/bash
set -euo pipefail
API="https://api.botoi.com/v1/mock/generate"
DB_URL="postgresql://localhost:5432/myapp_dev"
echo "Generating 50 user records..."
USERS=\$(curl -s -X POST "\$API" \\
-H "Content-Type: application/json" \\
-d '{
"schema": {
"type": "object",
"properties": {
"name": { "type": "string" },
"email": { "type": "string", "format": "email" },
"age": { "type": "integer", "minimum": 18, "maximum": 80 },
"signup_date": { "type": "string", "format": "date-time" }
},
"required": ["name", "email"]
},
"count": 50
}')
echo "\$USERS" | jq -c '.data.data[]' | while read -r row; do
NAME=\$(echo "\$row" | jq -r '.name')
EMAIL=\$(echo "\$row" | jq -r '.email')
AGE=\$(echo "\$row" | jq -r '.age')
SIGNUP=\$(echo "\$row" | jq -r '.signup_date')
psql "\$DB_URL" -c "INSERT INTO users (name, email, age, signup_date) VALUES ('\$NAME', '\$EMAIL', \$AGE, '\$SIGNUP');"
done
echo "Seeded 50 users into \$DB_URL"
O script gera 50 registros de usuário exclusivos, analisa cada um com jqe os insere um de cada vez.
Para conjuntos de dados maiores, canalize a saída em um volume COPY comando ou uma inserção em lote.
Versão Node.js.
Se sua pilha for JavaScript ou TypeScript, chame a API com fetch e passar os resultados
para o seu ORM:
const API = "https://api.botoi.com/v1/mock/generate";
async function generateMockData(schema, count) {
const response = await fetch(API, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ schema, count }),
});
const result = await response.json();
return result.data.data;
}
const userSchema = {
type: "object",
properties: {
name: { type: "string" },
email: { type: "string", format: "email" },
role: { type: "string" },
created_at: { type: "string", format: "date-time" },
},
required: ["name", "email", "role"],
};
const users = await generateMockData(userSchema, 25);
console.log(users);
// Pass directly to your ORM
// await db.insert(usersTable).values(users);
O generateMockData função é reutilizável. Chame-o com qualquer esquema e conte, depois insira o
resulta em Drizzle, Prisma, Knex ou qualquer ORM que você usar.
Por que usar uma API em vez de uma biblioteca?
- Sem dependências. Você não precisa instalar faker.js, factory_bot ou qualquer idioma específico biblioteca. Uma única chamada HTTP funciona em qualquer linguagem, script de shell ou pipeline de CI.
- Orientado por esquema. O mesmo esquema JSON que você usa para validação pode orientar seus dados de teste. Mudança o esquema e os dados gerados mudam com ele. Não há definições de fábrica para manter sincronizadas.
- Formato consistente. Cada membro da equipe obtém dados da mesma fonte. Não "funciona na minha máquina" diferenças entre luminárias escritas à mão.
- Compartilhável. Copie o comando curl em um thread do Slack, um README ou uma configuração de CI. Qualquer um pode executá-lo sem instalar nada.
Dicas práticas
-
Salve as respostas como arquivos de fixação. Execute a API uma vez, salve a saída JSON em
fixtures/users.jsone carregue esse arquivo em seus testes. Isso mantém os testes determinísticos e evita chamadas de rede durante execuções de teste. -
Use dicas de formato. Contexto
"format": "email"produz strings em formato de e-mail. Outros formatos úteis incluem"date-time","uri", e"uuid". -
Aninhe objetos para dados complexos. O esquema suporta objetos dentro de objetos e matrizes de
objetos. Modele suas relações reais com o banco de dados aninhando um
addressobjeto dentro de umcustomerobjeto. -
Combine com outros endpoints do Botoi. Gere usuários simulados e passe cada e-mail para
/v1/disposable-email/checkpara testar seu fluxo de validação de e-mail de ponta a ponta.
FAQ
- Preciso de uma chave de API para usar a API do gerador de dados simulados?
- Não. O acesso anônimo está disponível a 5 solicitações por minuto com limitação de taxa baseada em IP. Para maior rendimento, inscreva-se para obter uma chave de API gratuita em botoi.com/api.
- Quais recursos do esquema JSON o endpoint suporta?
- O endpoint suporta tipos de esquema JSON padrão (string, inteiro, número, booleano, objeto, array), dicas de formato como "email" e "uri", restrições mínimas/máx para números e declarações de campos obrigatórios. Objetos aninhados e matrizes de objetos funcionam conforme o esperado.
- Quantos registros posso gerar em uma única solicitação?
- Defina o campo "count" no corpo da solicitação com o número de registros desejado. O endpoint suporta a geração de até 100 registros por chamada.
- Os dados gerados são determinísticos?
- Não. Cada solicitação produz valores aleatórios diferentes. Se você precisar de dados reproduzíveis, salve a resposta em um arquivo de fixture e carregue-o em seus testes.
- Posso usar isso para propagar um banco de dados de produção?
- O endpoint gera dados falsos para fins de desenvolvimento e teste. Os nomes, e-mails e outros valores são fictícios. Não utilize dados gerados como registros de produção.
Comece a construir com botoi
150+ endpoints de API para consultas, processamento de texto, geração de imagens e utilitários para desenvolvedores. Plano gratuito, sem cartão de crédito.