Saltar para o conteúdo
APIs do projeto DEV BLOG
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 ar

Endpoint

POST https://teste-blog-api.c.thinkseg.com/api/posts/upload

Headers obrigatórios

HeaderDescriçãoExemplo
x-api-keyChave de autenticaçãosenha123
x-titleTítulo do postMeu Post sobre Node.js
x-sectionSeção do blognodejs

Headers opcionais

HeaderDescriçãoExemplo
x-descriptionDescrição curta para SEOAprenda a usar streams no Node.js
x-tagsTags separadas por vírgulanodejs, streams, performance
x-categoriesCategorias separadas por vírgulaNode.js
x-authorNome do autorPaulo de Paula
x-dateData no formato YYYY-MM-DD2026-06-19

Se x-date nã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/sections

Códigos de resposta

CódigoSignificado
201Post criado com sucesso
400Campo obrigatório ausente ou inválido
401API key inválida
404Post não encontrado (no delete)
409Já existe um post com esse slug nessa seção
500Erro interno ao commitar no GitHub