> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wethehivers.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Connexion utilisateur

> Authentifie un utilisateur avec email et mot de passe. Retourne un access token (15 min) et un refresh token (7 jours) dans le corps de la réponse ET dans des cookies HttpOnly sécurisés. Les recruteurs doivent avoir le statut VALIDATED pour se connecter.



## OpenAPI

````yaml POST /v1/api/auth/login
openapi: 3.1.0
info:
  title: wethehive API
  description: WeTheHive Backend API - Professional Documentation
  contact:
    name: WETHEHIVERS Team
    url: https://wethehivers.com
    email: api-support@wethehivers.com
  license:
    name: Proprietary
    url: https://wethehivers.com
  version: 1.0.0
servers:
  - url: http://localhost:3091
    description: Generated server url
security: []
tags:
  - name: Offres d'emploi
    description: API de gestion des offres d'emploi
  - name: Candidate Profile
    description: API de gestion du profil candidat
  - name: Admin - Entreprises
    description: API de gestion administrative des entreprises
  - name: Job Alerts (Public)
    description: API publique pour les alertes emploi
  - name: Recruiter Auth
    description: API d'authentification des recruteurs
  - name: Admin - Offres d'emploi
    description: API de gestion administrative des offres d'emploi
  - name: Job Alerts
    description: API de gestion des alertes emploi
  - name: Public Entreprises
    description: API publique pour les entreprises
  - name: Vivier de talents
    description: API de gestion du vivier de talents
  - name: Candidatures
    description: API de gestion des candidatures
  - name: Dashboard Stats
    description: API de statistiques pour le dashboard admin
  - name: Admin - Données de référence
    description: API de gestion administrative des données de référence
  - name: Recruiter Admin
    description: API de gestion administrative des recruteurs
  - name: Auth
    description: API d'authentification commune
  - name: Saved Jobs
    description: API de gestion des offres sauvegardées
  - name: Admin - Candidatures
    description: API de gestion administrative des candidatures
  - name: Public Blog
    description: API publique pour les articles de blog (Nos conseils)
  - name: File Upload
    description: Endpoints pour le téléversement de fichiers
  - name: Admin Account
    description: API de gestion du compte administrateur
  - name: Candidate Admin
    description: API de gestion administrative des candidats
  - name: Candidate Auth
    description: API d'authentification des candidats
  - name: Authentication
    description: Endpoints d'authentification et gestion des tokens JWT
  - name: Admin - Blog
    description: API de gestion administrative des articles de blog
  - name: Dashboard Recruteur
    description: API du dashboard recruteur
  - name: Candidate Dashboard
    description: API du dashboard candidat
paths:
  /v1/api/auth/login:
    post:
      tags:
        - Authentication
      summary: Connexion utilisateur
      description: >-
        Authentifie un utilisateur avec email et mot de passe. Retourne un
        access token (15 min) et un refresh token (7 jours) dans le corps de la
        réponse ET dans des cookies HttpOnly sécurisés. Les recruteurs doivent
        avoir le statut VALIDATED pour se connecter.
      operationId: login
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginRequest'
        required: true
      responses:
        '200':
          description: Connexion réussie
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoginResponse'
        '400':
          description: Requête invalide (email ou password manquant)
          content:
            '*/*':
              schema:
                type: object
        '401':
          description: Credentials invalides ou compte non validé
          content:
            '*/*':
              schema:
                type: object
        '403':
          description: Compte suspendu ou rejeté
          content:
            '*/*':
              schema:
                type: object
components:
  schemas:
    LoginRequest:
      type: object
      properties:
        email:
          type: string
        password:
          type: string
      required:
        - email
        - password
    LoginResponse:
      type: object
      properties:
        accessToken:
          type: string
        refreshToken:
          type: string
        tokenType:
          type: string
        userId:
          type: integer
          format: int64
        email:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        photoUrl:
          type: string
        userType:
          type: string
        status:
          type: string
        roles:
          type: array
          items:
            type: string

````