wiredia

Wiredia API api.wiredia.dev

Documentação rápida dos endpoints expostos pelo servidor Express (main.ts).
Todos retornam respostas em JSON e seguem o rate limit global de 100 requisições por minuto por IP.

Ver Levantamento de Requisitos


Índice


Features

Estrutura do Projeto

wiredia/
├── main.ts              # Servidor Express principal
├── auth.ts              # Rotas de autenticação (login/registro)
├── apikey.ts            # Gerenciamento de API keys
├── database.ts          # Configuração do SQLite
├── package.json         # Dependências do projeto
├── tsconfig.json        # Configuração TypeScript
├── .env.example         # Exemplo de variáveis de ambiente
├── utils/               # Utilitários
│   ├── hash.ts         # Funções de hash
│   ├── compare.ts      # Comparação de hashes
│   ├── base64.ts        # Codificação/decodificação Base64
│   ├── hex.ts          # Codificação/decodificação hexadecimal
│   ├── cpf.ts          # Validação e formatação de CPF
│   ├── cep.ts          # Validação de CEP brasileiro
│   ├── time.ts         # Conversão de timestamps
│   ├── valor.ts        # Conversão de moedas (fiat e crypto)
│   └── lastfm.ts       # Integração com Last.fm API
├── public/              # Arquivos estáticos (HTML)
│   ├── login.html      # Página de login
│   ├── register.html   # Página de registro
│   ├── panel.html      # Painel do usuário
│   └── admin.html      # Painel administrativo
├── logs/                # Logs diários (YYYY-MM-DD.log)
└── dist/                # Código compilado (gerado)

Autenticação

Para usar a API, você precisa de uma API Key. Primeiro, registre-se e gere sua chave:

Registro e Login

  1. Registrar: Acesse https://api.wiredia.dev/registrar
    • Informe seu email e senha (mínimo 8 caracteres)
    • Após o registro, você será redirecionado para a página de login
  2. Login: Acesse https://api.wiredia.dev/login
    • Use seu email e senha
    • Marque “Lembrar de mim” para manter a sessão ativa
    • Após o login, você será redirecionado para o painel

Painel de Controle

No painel (https://api.wiredia.dev/panel), você pode:

Usando a API Key

Todas as requisições aos endpoints da API precisam incluir sua API Key no header:

import requests

headers = {
    "x-api-key": "sua_api_key_aqui"
}

resp = requests.get("https://api.wiredia.dev/hash", 
                    params={"text": "hello"}, 
                    headers=headers)

Rotas disponíveis

GET /hash

import requests

headers = {"x-api-key": "sua_api_key_aqui"}
resp = requests.get("https://api.wiredia.dev/hash", 
                    params={"text": "hello", "algorithm": "sha256"},
                    headers=headers)
print(resp.json())  # {"algorithm": "sha256", "hash": "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"}

POST /compare

import requests

headers = {"x-api-key": "sua_api_key_aqui"}
resp = requests.post("https://api.wiredia.dev/compare", 
                     json={
                         "text": "hello",
                         "hash": "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824",
                         "algorithm": "sha256"
                     },
                     headers=headers)
print(resp.json())  # {"algorithm": "sha256", "match": true}

POST /base64/encode

import requests

headers = {"x-api-key": "sua_api_key_aqui"}
resp = requests.post("https://api.wiredia.dev/base64/encode", 
                     json={"text": "Hello, World!"},
                     headers=headers)
print(resp.json())  # {"encoded": "SGVsbG8sIFdvcmxkIQ=="}

POST /base64/decode

import requests

headers = {"x-api-key": "sua_api_key_aqui"}
resp = requests.post("https://api.wiredia.dev/base64/decode", 
                     json={"base64": "SGVsbG8sIFdvcmxkIQ=="},
                     headers=headers)
print(resp.json())  # {"decoded": "Hello, World!"}

POST /cpf

import requests

headers = {"x-api-key": "sua_api_key_aqui"}
resp = requests.post("https://api.wiredia.dev/cpf", 
                     json={"cpf": "12345678909"},
                     headers=headers)
print(resp.json())  # {"valid": true, "formatted": "123.456.789-09"}

POST /cep

import requests

headers = {"x-api-key": "sua_api_key_aqui"}
resp = requests.post("https://api.wiredia.dev/cep", 
                     json={"cep": "01311000"},
                     headers=headers)
print(resp.json())  # {"valido": true, "cep_limpo": "01311000", "cep_formatado": "01311-000", "regiao": "Grande São Paulo", "erros": []}

POST /hex/encode

import requests

headers = {"x-api-key": "sua_api_key_aqui"}
resp = requests.post("https://api.wiredia.dev/hex/encode", 
                     json={"text": "hello"},
                     headers=headers)
print(resp.json())  # {"encoded": "68656c6c6f"}

POST /hex/decode

import requests

headers = {"x-api-key": "sua_api_key_aqui"}
resp = requests.post("https://api.wiredia.dev/hex/decode", 
                     json={"hex": "68656c6c6f"},
                     headers=headers)
print(resp.json())  # {"decoded": "hello"}

GET /timestamp

import requests

headers = {"x-api-key": "sua_api_key_aqui"}
resp = requests.get("https://api.wiredia.dev/timestamp", 
                    params={"ts": "1732102110"},
                    headers=headers)
print(resp.json())  # {"input": "1732102110", "iso": "2024-11-20T12:01:50.000Z", "locale": "20/11/2024 09:01:50", "utc": "Wed, 20 Nov 2024 12:01:50 GMT"}

GET /lastfm/:username

import requests

headers = {"x-api-key": "sua_api_key_aqui"}
resp = requests.get("https://api.wiredia.dev/lastfm/seu_username",
                    headers=headers)
print(resp.json())  # {"artist": "...", "track": "...", "album": "...", etc.}

GET /valor/:moeda

import requests

headers = {"x-api-key": "sua_api_key_aqui"}
resp = requests.get("https://api.wiredia.dev/valor/USD", headers=headers)
print(resp.json())  # {"moeda": "USD", "valor": 5.25}

resp = requests.get("https://api.wiredia.dev/valor/BTC", headers=headers)
print(resp.json())  # {"moeda": "BTC", "valor": 350000.50}

Logging

Cada requisição gera uma linha JSON em logs/YYYY-MM-DD.log, com campos como ip, method, path, status, body, etc.


Execução

npm install
npm run start # ou npx ts-node main.ts