Voltar às edições

API

Documentação da API

Endpoints públicos, limites de requisições e formato das respostas. A mesma documentação está disponível em versão Markdown.

API do Bom Dia, Artisan

Base: https://bom-dia-artisan.dev/api

API pública e somente leitura. Toda resposta é JSON, com Content-Type: application/json.

GET /api/reports

Lista todas as edições publicadas, da mais recente à mais antiga.

curl https://bom-dia-artisan.dev/api/reports

Resposta: array de edições.

[
  {
    "date": "2026-09-30",
    "title": "Edição de 30 de setembro de 2026",
    "generatedAt": "2026-09-30T08:00:00-03:00",
    "summary": "Resumo curto das mudanças mais relevantes do dia.",
    "sections": [
      {
        "name": "Laravel Framework",
        "items": [
          {
            "title": "Título da atualização",
            "description": "Resumo curto.",
            "status": "Merged",
            "details": "Detalhes em Markdown.",
            "url": "https://github.com/laravel/framework/pull/00000",
            "source": "laravel/framework"
          }
        ]
      }
    ],
    "sources": [{ "title": "Fonte", "url": "https://github.com/laravel/framework" }],
    "metadata": { "timezone": "America/Sao_Paulo" }
  }
]

GET /api/reports/{date}

Uma única edição. date usa o formato YYYY-MM-DD.

curl https://bom-dia-artisan.dev/api/reports/2026-09-30

Resposta: o mesmo objeto de edição, sem array.

Campos

  • date: data da edição (YYYY-MM-DD);
  • title: título da edição;
  • generatedAt: quando a edição foi gerada, em ISO 8601;
  • summary: resumo curto;
  • sections[].name: nome da seção;
  • sections[].items[]: itens da seção, com title, description, details (Markdown), status (Released, Merged ou Recommended), url e source;
  • sources[]: fontes citadas, com title e url;
  • metadata: metadados livres da edição.

Limite de requisições

10 requisições a cada 60 segundos por IP, nas rotas /api/*.

Toda resposta traz:

  • X-RateLimit-Limit: teto da janela atual;
  • X-RateLimit-Remaining: requisições restantes na janela;
  • X-RateLimit-Reset: fim da janela, em segundos Unix.

Ao estourar o limite, a API responde 429 com Retry-After:

{ "statusCode": 429, "statusMessage": "Muitas requisições" }

Erros

Erros usam statusCode e statusMessage:

{ "statusCode": 404, "statusMessage": "Relatório não encontrado" }

404: data inexistente ou fora do formato YYYY-MM-DD.

Formatos alternativos