Cookest
API BackendEndpoints

Lista de Compras

Gestão da lista de compras e otimizador de comparação de preços

Lista de Compras

GET /api/shopping-list

Obter a lista de compras atual do utilizador.

MétodoCaminhoAutenticaçãoNível
GET/api/shopping-listJWT BearerFree

Resposta 200 OK

{
  "items": [
    {
      "id": "uuid",
      "ingredient_id": 1,
      "name": "Chicken Breast",
      "quantity": 600,
      "unit": "g",
      "is_checked": false,
      "category": "meat",
      "added_at": "2024-01-20T10:00:00Z"
    }
  ],
  "total_items": 8,
  "checked_items": 2
}

POST /api/shopping-list

Adicionar um artigo à lista de compras.

MétodoCaminhoAutenticaçãoNível
POST/api/shopping-listJWT BearerFree

Corpo do pedido

{
  "ingredient_id": 1,
  "quantity": 600,
  "unit": "g"
}

Resposta 201 Created

Devolve o artigo da lista de compras criado.


PUT /api/shopping-list/:id

Atualizar um artigo da lista de compras (quantidade ou marcar/desmarcar).

MétodoCaminhoAutenticaçãoNível
PUT/api/shopping-list/:idJWT BearerFree

Corpo do pedido

{
  "quantity": 800,
  "unit": "g",
  "is_checked": true
}

Resposta 200 OK

Devolve o artigo atualizado.


DELETE /api/shopping-list/:id

Remover um artigo da lista de compras.

MétodoCaminhoAutenticaçãoNível
DELETE/api/shopping-list/:idJWT BearerFree

Resposta 204 No Content


POST /api/shopping-list/generate

Gerar automaticamente uma lista de compras a partir de um plano de refeições, tendo em conta o que já está na despensa.

MétodoCaminhoAutenticaçãoNível
POST/api/shopping-list/generateJWT BearerFree

Corpo do pedido

{
  "meal_plan_id": "uuid"
}

Resposta 200 OK

{
  "added_items": 6,
  "skipped_in_pantry": 3,
  "items": [ ]
}

GET /api/shopping-list/prices

Obter os preços atuais das lojas para todos os artigos da lista de compras. Requer nível Pro.

MétodoCaminhoAutenticaçãoNível
GET/api/shopping-list/pricesJWT BearerPro

Resposta 200 OK

{
  "items": [
    {
      "ingredient_name": "Chicken Breast",
      "prices": [
        {
          "store_name": "Continente",
          "price": 3.49,
          "unit": "kg",
          "discounted_price": 2.99,
          "valid_until": "2024-01-28"
        }
      ]
    }
  ]
}

GET /api/shopping-list/optimize

Calcular a loja única mais barata e a divisão mais barata por múltiplas lojas. Requer nível Pro.

MétodoCaminhoAutenticaçãoNível
GET/api/shopping-list/optimizeJWT BearerPro

Resposta 200 OK

{
  "single_store_best": {
    "store_name": "Continente",
    "total_price": 24.50,
    "coverage_percent": 85
  },
  "multi_store_split": [
    {
      "store_name": "Continente",
      "items": ["Chicken Breast", "Pasta"],
      "subtotal": 8.47
    },
    {
      "store_name": "Pingo Doce",
      "items": ["Olive Oil", "Tomatoes"],
      "subtotal": 5.20
    }
  ],
  "multi_store_total": 13.67,
  "savings": 10.83
}

On this page