Cookest
API BackendEndpoints

Perfil e Preferências

Perfil do utilizador, preferências alimentares, favoritos e histórico

Perfil e Preferências

GET /api/me

Obter o perfil do utilizador autenticado.

MétodoCaminhoAutenticaçãoNível
GET/api/meJWT BearerFree

Resposta 200 OK

{
  "id": "uuid",
  "email": "user@example.com",
  "name": "Alice",
  "household_size": 2,
  "dietary_restrictions": ["vegetarian"],
  "allergies": ["nuts"],
  "health_goals": ["weight_loss"],
  "cooking_skill": "intermediate",
  "tier": "pro",
  "created_at": "2024-01-15T10:00:00Z"
}

PUT /api/me

Atualizar o perfil do utilizador autenticado.

MétodoCaminhoAutenticaçãoNível
PUT/api/meJWT BearerFree

Corpo do pedido (todos os campos opcionais)

{
  "name": "Alice Smith",
  "household_size": 3,
  "dietary_restrictions": ["vegetarian", "gluten_free"],
  "allergies": ["nuts", "shellfish"],
  "health_goals": ["muscle_gain"],
  "cooking_skill": "advanced"
}

Resposta 200 OK

Devolve o objeto de perfil do utilizador atualizado.


GET /api/me/preferences

Obter os vetores de preferências de sabor aprendidos do utilizador.

MétodoCaminhoAutenticaçãoNível
GET/api/me/preferencesJWT BearerFree

Resposta 200 OK

{
  "cuisine_weights": {
    "italian": 0.85,
    "asian": 0.72,
    "mediterranean": 0.91
  },
  "difficulty_weights": {
    "easy": 0.60,
    "medium": 0.80,
    "hard": 0.30
  },
  "ingredient_weights": {
    "chicken": 0.90,
    "pasta": 0.75,
    "broccoli": 0.65
  }
}

Estes pesos são atualizados automaticamente pelo algoritmo de aprendizagem online quando os utilizadores avaliam ou concluem receitas.


DELETE /api/me/preferences

Repor todos os pesos de preferências para neutro (0.5).

MétodoCaminhoAutenticaçãoNível
DELETE/api/me/preferencesJWT BearerFree

Resposta 200 OK

{ "message": "Preferences reset successfully" }

GET /api/me/favourites

Listar as receitas guardadas/marcadas como favoritas pelo utilizador.

MétodoCaminhoAutenticaçãoNível
GET/api/me/favouritesJWT BearerFree

Parâmetros de consulta

ParâmetroTipoDescrição
limitintegerMáximo de resultados (padrão: 20)
offsetintegerDeslocamento de paginação

Resposta 200 OK

{
  "items": [
    {
      "id": "uuid",
      "title": "Pasta Carbonara",
      "cuisine": "italian",
      "difficulty": "medium",
      "prep_time": 10,
      "cook_time": 20,
      "calories": 520,
      "image_url": "https://..."
    }
  ],
  "total": 14,
  "limit": 20,
  "offset": 0
}

GET /api/me/history

Obter o histórico de cozedura do utilizador (receitas que cozinhou).

MétodoCaminhoAutenticaçãoNível
GET/api/me/historyJWT BearerFree

Parâmetros de consulta

ParâmetroTipoDescrição
limitintegerMáximo de resultados (padrão: 20)
offsetintegerDeslocamento de paginação

Resposta 200 OK

{
  "items": [
    {
      "recipe_id": "uuid",
      "title": "Pasta Carbonara",
      "cooked_at": "2024-01-20T18:30:00Z",
      "servings": 2
    }
  ],
  "total": 42
}

GET /api/me/push-tokens

Listar os tokens de notificações push registados para o utilizador.

MétodoCaminhoAutenticaçãoNível
GET/api/me/push-tokensJWT BearerFree

Resposta 200 OK

[
  {
    "id": "uuid",
    "token": "ExponentPushToken[...]",
    "platform": "ios",
    "created_at": "2024-01-15T10:00:00Z"
  }
]

POST /api/me/push-tokens

Registar um token de notificações push do dispositivo.

MétodoCaminhoAutenticaçãoNível
POST/api/me/push-tokensJWT BearerFree

Corpo do pedido

{
  "token": "ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]",
  "platform": "ios"
}

Valores de platform: ios | android | web

Resposta 201 Created

{
  "id": "uuid",
  "token": "ExponentPushToken[...]",
  "platform": "ios"
}

DELETE /api/me/push-tokens/:id

Remover um token de notificações push (por exemplo, ao terminar sessão).

MétodoCaminhoAutenticaçãoNível
DELETE/api/me/push-tokens/:idJWT BearerFree

Resposta 204 No Content

EstadoSignificado
404Token não encontrado ou pertence a outro utilizador

On this page