Node.js
APIs do projeto DEV BLOG
18 de junho de 2026·Paulo H de Paula
A API de upload permite criar posts no blog enviando um arquivo .md com o conteúdo e passando os metadados via headers HTTP. Nenhum frontmatter necessário no arquivo — a API monta tudo automaticamente.
Fluxo completo
Arquivo .md (só conteúdo)
↓
POST /api/posts/upload (headers com metadados)
↓
API gera o frontmatter e commita no GitHub
↓
GitHub Actions detecta o novo arquivo em content/**
↓
Hugo build + Firebase deploy (~2-3 min)
↓
Post no arEndpoint
POST https://teste-blog-api.c.thinkseg.com/api/posts/uploadHeaders obrigatórios
| Header | Descrição | Exemplo |
|---|---|---|
x-api-key | Chave de autenticação | senha123 |
x-title | Título do post | Meu Post sobre Node.js |
x-section | Seção do blog | nodejs |
Headers opcionais
| Header | Descrição | Exemplo |
|---|---|---|
x-description | Descrição curta para SEO | Aprenda a usar streams no Node.js |
x-tags | Tags separadas por vírgula | nodejs, streams, performance |
x-categories | Categorias separadas por vírgula | Node.js |
x-author | Nome do autor | Paulo de Paula |
x-date | Data no formato YYYY-MM-DD | 2026-06-19 |
Se
x-datenão for informado, a data de hoje é usada automaticamente.
Seções disponíveis
nodejs · aws · react · devops · arquitetura · ia · python · seguranca · banco · mobile
Exemplo de chamada
curl -X POST https://teste-blog-api.c.thinkseg.com/api/posts/upload \
-H "x-api-key: SUA_API_KEY" \
-H "x-title: Guia de Streams no Node.js" \
-H "x-section: nodejs" \
-H "x-description: Como usar streams para processar grandes volumes de dados." \
-H "x-tags: nodejs, streams, performance" \
-H "x-categories: Node.js" \
-F "file=@meu-post.md"Formato do arquivo .md
O arquivo deve conter apenas o conteúdo — sem frontmatter. A API gera o frontmatter automaticamente a partir dos headers.
## Introdução
Conteúdo do post aqui...
## Seção 2
Mais conteúdo...Outros endpoints
Criar post via JSON
POST /api/posts
Content-Type: application/json
{
"title": "Meu Post",
"section": "nodejs",
"description": "Descrição",
"tags": ["nodejs", "api"],
"categories": ["Node.js"],
"content": "## Intro\n\nConteúdo aqui."
}Excluir post
DELETE /api/posts
Content-Type: application/json
{
"title": "Título exato do post",
"section": "nodejs"
}O título precisa ser exatamente igual ao usado na criação, pois o slug é derivado dele.
Listar seções
GET /api/sectionsCódigos de resposta
| Código | Significado |
|---|---|
201 | Post criado com sucesso |
400 | Campo obrigatório ausente ou inválido |
401 | API key inválida |
404 | Post não encontrado (no delete) |
409 | Já existe um post com esse slug nessa seção |
500 | Erro interno ao commitar no GitHub |