Aller au contenu principal
Cette page vous a-t-elle été utile ?

Utilisateur API

Surface utilisateur, profil et autorisation

Gérer les données de profil, la langue, les préférences de visibilité et l'amorçage des autorisations

Ces itinéraires renvoient à la zone des paramètres de l'utilisateur connecté et aux API d'assistance que le frontend utilise pour hydrater la séance en cours. Ils n'incluent pas la gestion des utilisateurs réservée aux administrateurs.

JWT ou clé utilisateur APITéléchargement partitionnéPréférences de profilAmorçage des autorisations

Authentification et autorisations​

  • Tous les itinéraires sur cette page nécessitent une authentification.
  • Les routes utilisant JwtAuthGuard acceptent les clés du porteur JWT et, lorsqu'elles sont prises en charge, les clés de l'utilisateur API.
  • POST /api/user/profile-picture est marqué par @AllowIncompleteOnboarding(), il peut donc être utilisé avant la fin de l'intégration.
  • Les écritures de profil s'appliquent uniquement à l'utilisateur authentifié.

Référence du point de terminaison​

Profil et paramètres​

MéthodeCheminObjectifDemande ou requêteAuthentification
GET/api/user/profileLisez le profil utilisateur et les paramètres actuels.AucunClé JWT ou utilisateur API
POST/api/user/profile-pictureTéléchargez et définissez une photo de profil.Champ en plusieurs parties : fileClé JWT ou utilisateur API
PATCH/api/user/profileMettez à jour les champs de profil et les préférences de l'interface utilisateur.Corps : champs de profilClé JWT ou utilisateur API
DELETE/api/user/event-labels/:labelSupprimez une étiquette d'événement enregistrée et supprimez-la des événements de l'utilisateur.Chemin : labelClé JWT ou utilisateur API
PATCH/api/user/themeMettez à jour la couleur du thème uniquement.Corps : themeColorClé JWT ou utilisateur API
PATCH/api/user/passwordChangez le mot de passe de l'utilisateur actuel.Corps : currentPassword,newPasswordClé JWT ou utilisateur API
PATCH/api/users/me/languageMettez à jour la langue préférée de l'interface utilisateur.Corps : preferredLanguageClé JWT ou utilisateur API

Assistants d'amorçage de session et de partage​

MéthodeCheminObjectifDemande ou requêteAuthentification
GET/api/users/meLisez l'entité utilisateur actuelle à partir du service utilisateurs.AucunClé JWT ou utilisateur API
GET/api/usersRecherchez des utilisateurs pour partager des flux.Requête : searchClé JWT ou utilisateur API
GET/api/user-permissionsObtenez l’instantané d’autorisation actuel.AucunClé JWT ou utilisateur API
GET/api/user-permissions/accessible-organizationsRépertoriez les organisations accessibles à l’utilisateur actuel.AucunClé JWT ou utilisateur API
GET/api/user-permissions/accessible-reservation-calendarsRépertoriez les calendriers de réservation accessibles à l'utilisateur actuel.AucunClé JWT ou utilisateur API

Demander des formes​

Mettre à jour le profil​

UpdateProfileDto

  • username : facultatif, minimum 3 caractères
  • email : e-mail facultatif et valide
  • firstName : chaîne facultative
  • lastName : chaîne facultative
  • profilePictureUrl : URL facultative, maximum 2 048 caractères
  • weekStartDay : entier facultatif 0..6
  • defaultCalendarView : month|week facultatif
  • timezone : chaîne facultative
  • timeFormat : 12h|24h facultatif
  • language : énumération facultative en|hu|de|fr
  • preferredLanguage : énumération facultative en|hu|de|fr
  • hideReservationsTab : booléen facultatif
  • hiddenResourceIds : tableau de nombres facultatif
  • visibleCalendarIds : tableau de nombres facultatif
  • visibleResourceTypeIds : tableau de nombres facultatif
  • hiddenFromLiveFocusTags : tableau de chaînes facultatif, maximum 64 caractères chacun
  • eventLabels : tableau de chaînes facultatif, maximum 64 caractères chacun
  • defaultTasksCalendarId : numéro optionnel ou null

Comportement d'implémentation du contrôleur :

  • L’unicité du nom d’utilisateur et de l’e-mail est revérifiée uniquement si ces champs ont réellement changé.
  • hiddenFromLiveFocusTags et eventLabels sont normalisés, dédupliqués, rognés et limités à 100 éléments.
  • defaultTasksCalendarId peut être effacé avec null.
  • La modification de defaultTasksCalendarId peut déclencher des resynchronisations tâche-calendrier pour les tâches avec des dates d'échéance.

Téléchargement de la photo de profil​

Règles de validation :

  • nom du champ : file
  • Types MIME autorisés : image/jpeg, image/png, image/gif, image/webp
  • taille maximale du fichier : 2MB

Thème et mot de passe​

  • UpdateThemeDto.themeColor : chaîne hexadécimale facultative #rgb ou #rrggbb
  • ChangePasswordDto.currentPassword : chaîne obligatoire
  • ChangePasswordDto.newPassword : obligatoire, minimum 6 caractères

Langue​

  • UpdateLanguagePreferenceDto.preferredLanguage : énumération requise en|hu|de|fr
  • ListUsersQueryDto.search : texte sécurisé facultatif, 80 caractères maximum

Exemples d'appels​

Mettre à jour les préférences du profil​

curl -X PATCH "$PRIMECAL_API/api/user/profile" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"timezone": "Europe/Budapest",
"timeFormat": "24h",
"weekStartDay": 1,
"visibleCalendarIds": [2, 3, 5],
"hiddenFromLiveFocusTags": ["no_focus", "private"],
"defaultTasksCalendarId": 7
}'

Téléchargez une photo de profil​

curl -X POST "$PRIMECAL_API/api/user/profile-picture" \
-H "Authorization: Bearer $TOKEN" \
-F "file=@C:/tmp/avatar.webp"

Rechercher des utilisateurs pour le partage​

curl "$PRIMECAL_API/api/users?search=justin" \
-H "Authorization: Bearer $TOKEN"

Interface utilisateur prenant en charge les autorisations Bootstrap​

curl "$PRIMECAL_API/api/user-permissions" \
-H "Authorization: Bearer $TOKEN"

Notes de réponse​

  • GET /api/user/profile renvoie la charge utile de paramètres utilisateur la plus riche, y compris les préférences de visibilité, les balises cachées en direct, les étiquettes d'événement, l'état d'intégration et les informations d'acceptation de la politique de confidentialité.
  • GET /api/users/me est une recherche d'utilisateur actuel plus légère à partir du service utilisateurs.
  • PATCH /api/user/password renvoie un simple message de réussite après avoir validé le mot de passe actuel.
  • DELETE /api/user/event-labels/:label renvoie l'étiquette supprimée, les étiquettes restantes et le nombre d'événements affectés.

Meilleures pratiques​

  • Utilisez GET /api/user/profile comme route d'amorçage des paramètres principaux.
  • Utilisez GET /api/user-permissions avant d'afficher les réservations, les paramètres d'organisation ou l'interface utilisateur sensible au rôle.
  • Envoyer uniquement les champs modifiés dans PATCH /api/user/profile ; le contrôleur effectue intentionnellement des contrôles d'unicité étroits.
  • Conservez également eventLabels et hiddenFromLiveFocusTags normalisés sur le client, afin que l'état de l'interface utilisateur corresponde aux règles de normalisation du backend.
  • Utilisez Personal Logs API pour l'historique d'audit plutôt que de surcharger ces points de terminaison de paramètres avec des problèmes d'activité.