Blog
Artigos e conteúdo editorial do site.
O que é
Blog é o módulo de conteúdo editorial do site da empresa. Pela API, você cuida dos posts usando a mesma base que o painel do miCore usa por dentro.
Na prática: você cria o rascunho de um post, consulta e edita o que já existe e controla quando ele fica no ar — tudo em nome de um usuário responsável, respeitando as permissões dele.
O que dá para fazer hoje
- Criar um rascunho de post.
- Listar e consultar posts existentes.
- Editar um rascunho.
- Publicar e despublicar um post.
- Listar categorias para classificar os posts.
- Criar, editar e desativar categorias do blog.
Importante
- Um post nasce sempre como rascunho — nada vai para o site antes de publicar.
- Publicar e despublicar são ações próprias, separadas de criar e editar.
- A autoria é sempre do usuário responsável pela credencial.
Disponibilidade na API
Endpoints de Blog
Crie, edite e publique posts e gerencie suas categorias. Os exemplos abaixo são gerados pelo contrato OpenAPI oficial.
/api/v1/posts
Lista posts do blog
Exige o escopo `posts:read`.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
statusquery | string | Não | — |
category_idquery | integer | Não | — |
per_pagequery | integer | Não | — |
Exemplo de requisição
curl "$MICORE_BASE_URL/posts" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 88,
"title": "Como escolher sua primeira impressora",
"slug": "como-escolher-sua-primeira-impressora",
"status": "draft",
"content": "<p>Conteúdo do post.</p>",
"content_blocks": null,
"meta_title": null,
"meta_description": null,
"author": {
"id": 12,
"name": "Equipe miCore"
},
"category": {
"id": 3,
"name": "Guias",
"slug": "guias"
},
"featured_image": null,
"published_at": null,
"created_at": "2026-10-17T09:00:00-03:00",
"updated_at": "2026-10-17T09:00:00-03:00"
}
],
"links": [],
"meta": []
}Respostas possíveis
/api/v1/posts
Cria um post em rascunho
Exige `posts:write` e a permissão `create` em Posts. O post nasce como rascunho; publicar é uma ação separada.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
title | string | Sim | Até 255 caracteres. |
author_id | integer | Sim | Id de um cliente marcado como autor do blog, como no painel (liste em GET /blog-authors). |
slug | string | null | Não | Gerado a partir do título quando ausente. Até 255 caracteres. |
content | string | null | Não | HTML pronto. Ignorado quando content_blocks é enviado. |
content_blocks | array<object> | Não | Blocos do editor; renderizados em HTML no servidor. |
meta_title | string | null | Não | Até 320 caracteres. |
meta_description | string | null | Não | Até 320 caracteres. |
references | string | null | Não | — |
category_id | integer | null | Não | — |
product_category_id | integer | null | Não | — |
featured_image_id | integer | null | Não | Id de um item de imagem da biblioteca de mídia. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/posts" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"title":"string","author_id":1,"slug":null,"content":null,"content_blocks":[[]],"meta_title":null,"meta_description":null,"references":null,"category_id":1,"product_category_id":1,"featured_image_id":1}'Exemplo de resposta JSON
{
"data": {
"id": 88,
"title": "Como escolher sua primeira impressora",
"slug": "como-escolher-sua-primeira-impressora",
"status": "draft",
"content": "<p>Conteúdo do post.</p>",
"content_blocks": null,
"meta_title": null,
"meta_description": null,
"author": {
"id": 12,
"name": "Equipe miCore"
},
"category": {
"id": 3,
"name": "Guias",
"slug": "guias"
},
"featured_image": null,
"published_at": null,
"created_at": "2026-10-17T09:00:00-03:00",
"updated_at": "2026-10-17T09:00:00-03:00"
}
}Respostas possíveis
/api/v1/posts/{post}
Exibe um post
Exige o escopo `posts:read`.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
postpath | integer | Sim | — |
Exemplo de requisição
curl "$MICORE_BASE_URL/posts/{post}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 88,
"title": "Como escolher sua primeira impressora",
"slug": "como-escolher-sua-primeira-impressora",
"status": "draft",
"content": "<p>Conteúdo do post.</p>",
"content_blocks": null,
"meta_title": null,
"meta_description": null,
"author": {
"id": 12,
"name": "Equipe miCore"
},
"category": {
"id": 3,
"name": "Guias",
"slug": "guias"
},
"featured_image": null,
"published_at": null,
"created_at": "2026-10-17T09:00:00-03:00",
"updated_at": "2026-10-17T09:00:00-03:00"
}
}Respostas possíveis
/api/v1/posts/{post}
Atualiza um post em rascunho
Exige `posts:write` e a permissão `edit` em Posts. Não altera o estado de publicação.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
postpath | integer | Sim | — |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
title | string | Não | Até 255 caracteres. |
author_id | integer | Não | Id de um cliente marcado como autor do blog. |
slug | string | null | Não | Até 255 caracteres. |
content | string | null | Não | — |
content_blocks | array<object> | Não | — |
meta_title | string | null | Não | Até 320 caracteres. |
meta_description | string | null | Não | Até 320 caracteres. |
references | string | null | Não | — |
category_id | integer | null | Não | — |
product_category_id | integer | null | Não | — |
featured_image_id | integer | null | Não | — |
Exemplo de requisição
curl -X PATCH "$MICORE_BASE_URL/posts/{post}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"title":"string","author_id":1,"slug":null,"content":null,"content_blocks":[[]],"meta_title":null,"meta_description":null,"references":null,"category_id":1,"product_category_id":1,"featured_image_id":1}'Exemplo de resposta JSON
{
"data": {
"id": 88,
"title": "Como escolher sua primeira impressora",
"slug": "como-escolher-sua-primeira-impressora",
"status": "draft",
"content": "<p>Conteúdo do post.</p>",
"content_blocks": null,
"meta_title": null,
"meta_description": null,
"author": {
"id": 12,
"name": "Equipe miCore"
},
"category": {
"id": 3,
"name": "Guias",
"slug": "guias"
},
"featured_image": null,
"published_at": null,
"created_at": "2026-10-17T09:00:00-03:00",
"updated_at": "2026-10-17T09:00:00-03:00"
}
}Respostas possíveis
/api/v1/posts/{post}/publish
Publica um post
Exige `posts:publish` e a permissão `edit` em Posts. Deixa o post visível no site.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
postpath | integer | Sim | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/posts/{post}/publish" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 88,
"title": "Como escolher sua primeira impressora",
"slug": "como-escolher-sua-primeira-impressora",
"status": "draft",
"content": "<p>Conteúdo do post.</p>",
"content_blocks": null,
"meta_title": null,
"meta_description": null,
"author": {
"id": 12,
"name": "Equipe miCore"
},
"category": {
"id": 3,
"name": "Guias",
"slug": "guias"
},
"featured_image": null,
"published_at": null,
"created_at": "2026-10-17T09:00:00-03:00",
"updated_at": "2026-10-17T09:00:00-03:00"
}
}Respostas possíveis
/api/v1/posts/{post}/unpublish
Despublica um post
Exige `posts:publish` e a permissão `edit` em Posts. Tira o post do ar sem apagar.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
postpath | integer | Sim | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/posts/{post}/unpublish" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 88,
"title": "Como escolher sua primeira impressora",
"slug": "como-escolher-sua-primeira-impressora",
"status": "draft",
"content": "<p>Conteúdo do post.</p>",
"content_blocks": null,
"meta_title": null,
"meta_description": null,
"author": {
"id": 12,
"name": "Equipe miCore"
},
"category": {
"id": 3,
"name": "Guias",
"slug": "guias"
},
"featured_image": null,
"published_at": null,
"created_at": "2026-10-17T09:00:00-03:00",
"updated_at": "2026-10-17T09:00:00-03:00"
}
}Respostas possíveis
/api/v1/blog-authors
Lista os autores do blog
Exige o escopo `posts:read`. Autores são os clientes marcados como autor do blog, os mesmos do seletor do painel. Use para descobrir o `author_id` ao criar ou editar um post; a resposta traz só id e nome.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
searchquery | string | Não | Busca por nome ou e-mail. |
per_pagequery | integer | Não | — |
Exemplo de requisição
curl "$MICORE_BASE_URL/blog-authors" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 12,
"name": "Equipe miCore"
}
],
"links": [],
"meta": []
}Respostas possíveis
/api/v1/blog-categories
Lista categorias do blog
Exige o escopo `blog-categories:read`. Use para descobrir o `category_id` ao criar ou editar um post.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
statusquery | boolean | Não | Ativa (true) ou inativa (false). |
per_pagequery | integer | Não | — |
Exemplo de requisição
curl "$MICORE_BASE_URL/blog-categories" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 3,
"name": "Guias",
"slug": "guias",
"parent_id": null,
"status": true
}
],
"links": [],
"meta": []
}Respostas possíveis
/api/v1/blog-categories
Cria uma categoria do blog
Exige `blog-categories:write` e a permissão de criar em Categorias. Criação idempotente (envie um Idempotency-Key).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Até 255 caracteres. |
status | boolean | null | Não | — |
parent_id | integer | null | Não | Categoria pai (precisa existir). |
url | string | null | Não | Endereço da categoria. Vazio ou ausente: gerado a partir do nome, com sufixo -2, -3 quando já existir. Até 255 caracteres. |
description | string | null | Não | — |
meta_title | string | null | Não | Até 255 caracteres. |
meta_description | string | null | Não | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/blog-categories" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"name":"Guias","status":true,"parent_id":null,"url":"guias"}'Exemplo de resposta JSON
{
"data": {
"id": 3,
"name": "Guias",
"slug": "guias",
"parent_id": null,
"status": true
}
}Respostas possíveis
/api/v1/blog-categories/{blogCategory}
Atualiza uma categoria do blog
Exige `blog-categories:write` e a permissão de editar em Categorias.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
blogCategorypath | integer | Sim | — |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Não | Até 255 caracteres. |
status | boolean | null | Não | — |
parent_id | integer | null | Não | Categoria pai (precisa existir). |
url | string | null | Não | Até 255 caracteres. |
description | string | null | Não | — |
meta_title | string | null | Não | Até 255 caracteres. |
meta_description | string | null | Não | — |
Exemplo de requisição
curl -X PATCH "$MICORE_BASE_URL/blog-categories/{blogCategory}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"Guias","status":true,"parent_id":null,"url":"guias"}'Exemplo de resposta JSON
{
"data": {
"id": 3,
"name": "Guias",
"slug": "guias",
"parent_id": null,
"status": true
}
}Respostas possíveis
/api/v1/blog-categories/{blogCategory}
Desativa uma categoria do blog
Exige `blog-categories:write` e a permissão de desabilitar em Categorias. Desativa sem apagar; reativar é pelo painel. Idempotente.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
blogCategorypath | integer | Sim | — |
Exemplo de requisição
curl -X DELETE "$MICORE_BASE_URL/blog-categories/{blogCategory}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 3,
"name": "Guias",
"slug": "guias",
"parent_id": null,
"status": true
}
}