CultivUA - API
1.0.1

Base URL
http://localhost:8000

API para gestão da aplicação web CultivUA. Desenvolvido por:

This is version 1.0.1 of this API documentation. Last update on Jan 2, 2025.

Blog posts

Obter todas as categorias de publicações do blog

GET /blog-posts/categories

Retorna uma lista de todas as categorias de publicações disponíveis.

Responses

  • 200

    Categorias de publicações retornadas com sucesso

  • 500

    Erro ao obter as categorias

GET /blog-posts/categories
curl \
 --request GET 'http://localhost:8000/blog-posts/categories'

Listar todos os posts

GET /blog-posts

Retorna uma lista com todos os posts do blog, incluindo informações sobre comentários, categoria e autor.

Responses

  • 200

    Lista de posts retornada com sucesso

  • 500

    Erro interno do servidor

GET /blog-posts
curl \
 --request GET 'http://localhost:8000/blog-posts'

Criar um novo post

POST /blog-posts

Cria um novo post no blog, incluindo título, conteúdo, categoria, imagem e status.

Responses

  • 201

    Post criado com sucesso

  • 400

    Dados inválidos ou incompletos

POST /blog-posts
curl \
 --request POST 'http://localhost:8000/blog-posts'

Exibir um post específico

GET /blog-posts/{id}

Retorna um post específico com seus comentários, categoria e autor, identificado pelo ID.

Path parameters

  • id integer Required

Responses

  • 200

    Post encontrado com sucesso

  • 404

    Post não encontrado

GET /blog-posts/{id}
curl \
 --request GET 'http://localhost:8000/blog-posts/{id}'

Atualizar um post existente

PUT /blog-posts/{id}

Atualiza as informações de um post existente no blog.

Path parameters

  • id integer Required

Responses

  • 200

    Post atualizado com sucesso

  • 400

    Dados inválidos

  • 404

    Post não encontrado

PUT /blog-posts/{id}
curl \
 --request PUT 'http://localhost:8000/blog-posts/{id}'

Remover um post

DELETE /blog-posts/{id}

Remove um post do blog, identificado pelo ID.

Path parameters

  • id integer Required

Responses

  • 200

    Post excluído com sucesso

  • 404

    Post não encontrado

DELETE /blog-posts/{id}
curl \
 --request DELETE 'http://localhost:8000/blog-posts/{id}'

Listar comentários de um post

GET /blog-posts/{postId}/comments

Retorna todos os comentários de um post específico.

Path parameters

  • postId integer Required

    ID do post

Responses

  • 200 application/json

    Comentários encontrados com sucesso.

    Hide response attributes Show response attributes object
    • comment_id integer
    • username string
    • profile_image string | null
    • comment_text string
    • commented_at string(date-time)
    • isVisible boolean
GET /blog-posts/{postId}/comments
curl \
 --request GET 'http://localhost:8000/blog-posts/{postId}/comments'
Response examples (200)
[
  {
    "comment_id": 42,
    "username": "string",
    "profile_image": "string",
    "comment_text": "string",
    "commented_at": "2025-05-04T09:42:00Z",
    "isVisible": true
  }
]

Criar um novo comentário

POST /blog-posts/add-comment

Permite a criação de um novo comentário.

application/json

Body Required

  • comment_text string

    Texto do comentário.

  • user_id integer

    ID do utilizador que fez o comentário.

  • post_id integer

    ID do post ao qual o comentário pertence.

Responses

  • 201 application/json

    Comentário criado com sucesso.

    Hide response attributes Show response attributes object
    • id integer
    • comment_text string
    • created_at string(date-time)
    • user object

      Additional properties are allowed.

      Hide user attributes Show user attributes object
      • username string
      • profile_image string | null
POST /blog-posts/add-comment
curl \
 --request POST 'http://localhost:8000/blog-posts/add-comment' \
 --header "Content-Type: application/json" \
 --data '{"comment_text":"string","user_id":42,"post_id":42}'
Request examples
{
  "comment_text": "string",
  "user_id": 42,
  "post_id": 42
}
Response examples (201)
{
  "id": 42,
  "comment_text": "string",
  "created_at": "2025-05-04T09:42:00Z",
  "user": {
    "username": "string",
    "profile_image": "string"
  }
}

Atualizar visibilidade de um comentário

PUT /blog-posts/comments/{commentId}

Atualiza a visibilidade de um comentário específico.

Path parameters

  • commentId integer Required

    ID do comentário a ser atualizado.

application/json

Body Required

  • isVisible boolean

    Definir visibilidade do comentário (verdadeiro ou falso).

Responses

  • 200 application/json

    Visibilidade do comentário atualizada com sucesso.

    Hide response attribute Show response attribute object
    • message string
PUT /blog-posts/comments/{commentId}
curl \
 --request PUT 'http://localhost:8000/blog-posts/comments/{commentId}' \
 --header "Content-Type: application/json" \
 --data '{"isVisible":true}'
Request examples
{
  "isVisible": true
}
Response examples (200)
{
  "message": "Visibilidade do comentário atualizada"
}

Deletar um comentário

DELETE /blog-posts/comments/{commentId}/delete

Deleta um comentário específico.

Path parameters

  • commentId integer Required

    ID do comentário a ser excluído.

Responses

  • 200 application/json

    Comentário excluído com sucesso.

    Hide response attribute Show response attribute object
    • message string
  • 404 application/json

    Comentário não encontrado.

    Hide response attribute Show response attribute object
    • error string
DELETE /blog-posts/comments/{commentId}/delete
curl \
 --request DELETE 'http://localhost:8000/blog-posts/comments/{commentId}/delete'
Response examples (200)
{
  "message": "Comentário excluído com sucesso"
}
Response examples (404)
{
  "error": "Comentário não encontrado"
}

Categories

Obter lista de categorias

GET /categories

Retorna todas as categorias no sistema com a contagem de produtos.

Responses

  • 200 application/json

    Lista de categorias retornada com sucesso

    Hide response attributes Show response attributes object
    • id integer
    • name string
    • mostrarLoja boolean
    • mostrarBlog boolean
    • number integer

      Número de produtos na categoria

GET /categories
curl \
 --request GET 'http://localhost:8000/categories'
Response examples (200)
[
  {
    "id": 42,
    "name": "string",
    "mostrarLoja": true,
    "mostrarBlog": true,
    "number": 42
  }
]

Adicionar nova categoria

POST /categories

Cria uma nova categoria no sistema.

application/json

Body Required

  • name string

Responses

  • 201 application/json

    Categoria criada com sucesso

    Hide response attributes Show response attributes object
    • message string
    • category object

      Additional properties are allowed.

      Hide category attributes Show category attributes object
      • id integer
      • name string
  • 409 application/json

    Conflito, a categoria já existe

    Hide response attributes Show response attributes object
    • message string
    • category object

      Additional properties are allowed.

      Hide category attributes Show category attributes object
      • id integer
      • name string
POST /categories
curl \
 --request POST 'http://localhost:8000/categories' \
 --header "Content-Type: application/json" \
 --data '{"name":"Vegetables"}'
Request examples
{
  "name": "Vegetables"
}
Response examples (201)
{
  "message": "string",
  "category": {
    "id": 42,
    "name": "string"
  }
}
Response examples (409)
{
  "message": "string",
  "category": {
    "id": 42,
    "name": "string"
  }
}

Obter detalhes de uma categoria

GET /categories/{id}

Retorna os detalhes de uma categoria específica.

Path parameters

  • id integer Required

    ID da categoria

Responses

  • 200 application/json

    Categoria encontrada

    Hide response attributes Show response attributes object
    • id integer
    • name string
    • mostrarLoja boolean
    • mostrarBlog boolean
  • 404 application/json

    Categoria não encontrada

    Hide response attribute Show response attribute object
    • error string
GET /categories/{id}
curl \
 --request GET 'http://localhost:8000/categories/{id}'
Response examples (200)
{
  "id": 42,
  "name": "string",
  "mostrarLoja": true,
  "mostrarBlog": true
}
Response examples (404)
{
  "error": "Categoria não encontrada"
}

Atualizar uma categoria

PUT /categories/{id}

Atualiza os detalhes de uma categoria existente.

Path parameters

  • id integer Required

    ID da categoria

application/json

Body Required

  • name string
  • mostrarLoja boolean
  • mostrarBlog boolean

Responses

  • 200 application/json

    Categoria atualizada com sucesso

    Hide response attribute Show response attribute object
    • message string
  • 404

    Categoria não encontrada

PUT /categories/{id}
curl \
 --request PUT 'http://localhost:8000/categories/{id}' \
 --header "Content-Type: application/json" \
 --data '{"name":"string","mostrarLoja":true,"mostrarBlog":true}'
Request examples
{
  "name": "string",
  "mostrarLoja": true,
  "mostrarBlog": true
}
Response examples (200)
{
  "message": "Categoria atualizada com sucesso!"
}

Excluir uma categoria

DELETE /categories/{id}

Deleta uma categoria do sistema.

Path parameters

  • id integer Required

    ID da categoria

Responses

  • 200 application/json

    Categoria excluída com sucesso

    Hide response attribute Show response attribute object
    • message string
  • 404 application/json

    Categoria não encontrada

    Hide response attribute Show response attribute object
    • message string
DELETE /categories/{id}
curl \
 --request DELETE 'http://localhost:8000/categories/{id}'
Response examples (200)
{
  "message": "Categoria deletada com sucesso!"
}
Response examples (404)
{
  "message": "Categoria não encontrada!"
}

Obter estatísticas do dashboard

GET /categories/dashboard/stats

Retorna as estatísticas gerais do sistema.

Responses

  • 200 application/json

    Estatísticas do dashboard retornadas com sucesso

    Hide response attributes Show response attributes object
    • totalUsers integer
    • totalProductsSold integer
    • totalSales number(float)
    • totalActiveGardens integer
    • totalProducts integer
    • totalQuestionsAnswered integer
GET /categories/dashboard/stats
curl \
 --request GET 'http://localhost:8000/categories/dashboard/stats'
Response examples (200)
{
  "totalUsers": 42,
  "totalProductsSold": 42,
  "totalSales": 42.0,
  "totalActiveGardens": 42,
  "totalProducts": 42,
  "totalQuestionsAnswered": 42
}

Obter produtos vendidos por categoria

GET /categories/products/sold

Retorna a quantidade de produtos vendidos por categoria.

Responses

  • 200 application/json

    Produtos vendidos por categoria retornados com sucesso

    Hide response attributes Show response attributes object
    • category string
    • total_sold integer
GET /categories/products/sold
curl \
 --request GET 'http://localhost:8000/categories/products/sold'
Response examples (200)
[
  {
    "category": "string",
    "total_sold": 42
  }
]

Create checkout session