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

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

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

Groupes de calendrier​

MéthodeCheminObjectifDemande ou requêteAuthentification
POST/api/calendar-groupsCréez un groupe.Corps : name,isVisibleClé JWT ou utilisateur API
GET/api/calendar-groupsRépertoriez les groupes avec des calendriers accessibles.AucunClé JWT ou utilisateur API
PATCH/api/calendar-groups/:idRenommez un groupe ou activez la visibilité.Chemin : id, corps : name,isVisibleClé JWT ou utilisateur API
DELETE/api/calendar-groups/:idSupprimez un groupe sans supprimer ses calendriers.Chemin : idClé JWT ou utilisateur API
POST/api/calendar-groups/:id/calendarsAttribuez des calendriers à un groupe.Chemin : id, corps : calendarIdsClé JWT ou utilisateur API
POST/api/calendar-groups/:id/calendars/unassignSupprimer les calendriers d'un groupe.Chemin : id, corps : calendarIdsClé JWT ou utilisateur API
POST/api/calendar-groups/:id/sharePartagez tous les calendriers dans un groupe.Chemin : id, corps : userIds,permissionClé JWT ou utilisateur API
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 API

Demander des formes​

Calendrier des DTO​

CreateCalendarDto et UpdateCalendarDto

  • 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

Remarques :

  • 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

  • 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.