Aller au contenu principal
Was this helpful?

Calendrier API

Calendriers et groupes de calendriers

Créez des calendriers, organisez-les en groupes et gérez le partage

PrimeCal répartit la gestion du calendrier entre /api/calendars et /api/calendar-groups. Cette page regroupe les deux familles de routes afin que le flux de travail complet de gestion du calendrier est documenté en un seul endroit.

JWT ou clé utilisateur APIAgendas détenus et partagésAlias de groupe sous /calendars/groupsPartager les autorisations

Source

  • Contrôleur de calendrier : backend-nestjs/src/calendars/calendars.controller.ts
  • Contrôleur de groupes de calendrier : backend-nestjs/src/calendars/calendar-groups.controller.ts
  • DTO : backend-nestjs/src/dto/calendar.dto.ts, backend-nestjs/src/dto/calendar-group.dto.ts, backend-nestjs/src/calendars/dto/calendar-sharing.dto.ts
  • Énumérations d'entité : backend-nestjs/src/entities/calendar.entity.ts

Authentification et autorisations

  • Tous les points de terminaison de cette page nécessitent une authentification.
  • Les autorisations de propriété ou de partage sont appliquées dans la couche de service.
  • Les opérations de partage utilisent les niveaux d’autorisation read, write et admin.
  • La suppression du calendrier est une suppression logicielle.
  • La suppression de groupe ne supprime pas les calendriers du groupe.

Référence du point de terminaison

Calendriers

MéthodeCheminObjectifDemande ou requêteAuthentificationSource
POST/api/calendarsCréez un calendrier.Corps : name,description,color,icon,visibility,groupId,rankClé JWT ou utilisateur APIcalendars/calendars.controller.ts
GET/api/calendarsRépertoriez les calendriers détenus et partagés.AucunClé JWT ou utilisateur APIcalendars/calendars.controller.ts
GET/api/calendars/:idObtenez un calendrier.Chemin : idClé JWT ou utilisateur APIcalendars/calendars.controller.ts
PATCH/api/calendars/:idMettre à jour un calendrier.Chemin : id, corps : champs de calendrier partielsClé JWT ou utilisateur APIcalendars/calendars.controller.ts
DELETE/api/calendars/:idSupprimez un calendrier en douceur.Chemin : idClé JWT ou utilisateur APIcalendars/calendars.controller.ts
POST/api/calendars/:id/sharePartagez un calendrier avec les utilisateurs.Chemin : id, corps : userIds,permissionClé JWT ou utilisateur APIcalendars/calendars.controller.ts
DELETE/api/calendars/:id/shareAnnuler le partage d'un calendrier des utilisateurs.Chemin : id, corps : userIdsClé JWT ou utilisateur APIcalendars/calendars.controller.ts
GET/api/calendars/:id/shared-usersRépertoriez les utilisateurs avec lesquels le calendrier est partagé.Chemin : idClé JWT ou utilisateur APIcalendars/calendars.controller.ts
GET/api/calendars/groupsAlias ​​pour répertorier les groupes de calendriers.AucunClé JWT ou utilisateur APIcalendars/calendars.controller.ts
POST/api/calendars/groupsAlias ​​pour créer un groupe de calendriers.Corps : name,isVisibleClé JWT ou utilisateur APIcalendars/calendars.controller.ts

Groupes de calendrier

MéthodeCheminObjectifDemande ou requêteAuthentificationSource
POST/api/calendar-groupsCréez un groupe.Corps : name,isVisibleClé JWT ou utilisateur APIcalendars/calendar-groups.controller.ts
GET/api/calendar-groupsRépertoriez les groupes avec des calendriers accessibles.AucunClé JWT ou utilisateur APIcalendars/calendar-groups.controller.ts
PATCH/api/calendar-groups/:idRenommez un groupe ou activez la visibilité.Chemin : id, corps : name,isVisibleClé JWT ou utilisateur APIcalendars/calendar-groups.controller.ts
DELETE/api/calendar-groups/:idSupprimez un groupe sans supprimer ses calendriers.Chemin : idClé JWT ou utilisateur APIcalendars/calendar-groups.controller.ts
POST/api/calendar-groups/:id/calendarsAttribuez des calendriers à un groupe.Chemin : id, corps : calendarIdsClé JWT ou utilisateur APIcalendars/calendar-groups.controller.ts
POST/api/calendar-groups/:id/calendars/unassignSupprimer les calendriers d'un groupe.Chemin : id, corps : calendarIdsClé JWT ou utilisateur APIcalendars/calendar-groups.controller.ts
POST/api/calendar-groups/:id/sharePartagez tous les calendriers dans un groupe.Chemin : id, corps : userIds,permissionClé JWT ou utilisateur APIcalendars/calendar-groups.controller.ts
DELETE/api/calendar-groups/:id/shareAnnulez le partage de tous les calendriers d'un groupe avec les utilisateurs.Chemin : id, corps : userIdsClé JWT ou utilisateur APIcalendars/calendar-groups.controller.ts

Demander des formes

Calendrier des DTO

CreateCalendarDto et UpdateCalendarDto dans backend-nestjs/src/dto/calendar.dto.ts

  • name : requis lors de la création, chaîne
  • description : chaîne facultative
  • color : chaîne facultative, par défaut au niveau de l'entité : #3b82f6
  • icon : chaîne facultative
  • visibility : énumération facultative private|shared|public
  • groupId : numéro optionnel ou null
  • rank : numéro facultatif, par défaut au niveau de l'entité : 0

Notes d'entité de backend-nestjs/src/entities/calendar.entity.ts

  • name longueur : 200
  • description longueur : 500
  • color longueur : 7
  • icon longueur : 10

Partage des DTO

  • ShareCalendarDto.userIds : tableau de nombres requis
  • ShareCalendarDto.permission : énumération requise read|write|admin
  • UnshareCalendarUsersDto.userIds : tableau d'entiers uniques requis, maximum 100 éléments, minimum 1

Groupe DTO

CreateCalendarGroupDto et UpdateCalendarGroupDto dans backend-nestjs/src/dto/calendar-group.dto.ts

  • name : requis à la création, minimum 2 caractères
  • isVisible : booléen facultatif
  • AssignCalendarsToGroupDto.calendarIds : tableau de nombres requis
  • ShareCalendarGroupDto.userIds : tableau de nombres requis
  • ShareCalendarGroupDto.permission : énumération requise read|write|admin

Exemples d'appels

Créer un calendrier

curl -X POST "$PRIMECAL_API/api/calendars" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Family",
"description": "Shared household planning",
"color": "#14b8a6",
"visibility": "private",
"rank": 10
}'

Créer un groupe et attribuer des calendriers

curl -X POST "$PRIMECAL_API/api/calendar-groups" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Late Family",
"isVisible": true
}'
curl -X POST "$PRIMECAL_API/api/calendar-groups/3/calendars" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"calendarIds": [5, 7]
}'

Partager un calendrier

curl -X POST "$PRIMECAL_API/api/calendars/5/share" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"userIds": [42],
"permission": "write"
}'

Notes de réponse et de comportement

  • Les réponses du calendrier peuvent inclure des métadonnées de groupe et des résumés d'utilisateurs partagés.
  • GET /api/calendars est la route d'amorçage principale pour l'espace de travail du calendrier.
  • /api/calendars/groups existe en tant qu'alias de compatibilité ; le contrôleur de groupe canonique réside à /api/calendar-groups.
  • rank affecte le comportement de classement et de priorité dans les vues orientées calendrier.
  • isTasksCalendar et isReservationCalendar existent au niveau de l'entité mais ne sont pas directement gérés via les DTO de création/mise à jour documentés ici.

Meilleures pratiques

  • Utilisez GET /api/calendars et GET /api/calendar-groups ensemble lors de la création de l'arborescence du calendrier de gauche.
  • Préférez le partage de groupe uniquement lorsque l’intention est de maintenir plusieurs calendriers alignés sous le même modèle d’autorisation.
  • Traitez DELETE /api/calendars/:id comme une suppression logicielle et actualisez l'état local après la mutation.
  • Utilisez User API GET /api/users?search=... pour alimenter les sélecteurs de personnes pour les boîtes de dialogue de partage.
  • Gardez visibility et partagez les autorisations conceptuellement séparées dans les clients : la visibilité est le modèle d'exposition du calendrier, tandis que le partage accorde un accès concret aux utilisateurs.