Documentation API

Créer un compte

POST /api/register

Body :

{
  "email": "[email protected]",
  "plainPassword": "motDePasseSecurise"
}

Réponse (201 Created) :

{
  "message": "User created successfully. Please confirm your email.",
  "userId": 1
}

Connexion et optention d'un token JWT

POST /api/login_check

Body :

{
  "email": "[email protected]",
  "password": "motDePasse"
}

Réponse (200 OK) :

{
  "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..."
}

Récupérer la liste des utilisateurs

GET /api/user/

Body :

Aucun

Réponse (200 OK) :

[
  { "id": 1, "email": "[email protected]" },
  { "id": 2, "email": "[email protected]" }
]

Modifier mon profil

PUT /api/profile/edit

Body :

{
  "displayName": "Paul"
}

Réponse :

{
  "id": 1,
  "displayName": "Paul"
}

Créer un événement

POST /api/event/create

Body :

{
  "location": "string",
  "description": "string",
  "startDate": "YYYY-MM-DD",
  "endDate": "YYYY-MM-DD",
  "private": true,
  "currentState": "scheduled / canceled",
  "privateLocation": true
}

Réponse :

{
  "id": 1,
  "location": "string",
  "description": "string",
  "startDate": "YYYY-MM-DD",
  "endDate": "YYYY-MM-DD",
  "private": true,
  "currentState": "scheduled",
  "privateLocation": true,
  "owner": {
    "id": 1,
    "displayName": "string"
  },
  "participants": [...]
}

Modifier un événement

PUT /api/event/edit/{id}

Body :

{
  "location": "string",
  "description": "string",string
  "startDate": "YYYY-MM-DD",
  "endDate": "YYYY-MM-DD",
  "private": true,
  "currentState": "scheduled",
  "privateLocation": true
}

Réponse :

{
  "id": 1,
  "location": "string",
  "description": "string",
  "startDate": "YYYY-MM-DD",
  "endDate": "YYYY-MM-DD",
  "private": true,
  "currentState": "scheduled",
  "privateLocation": true,
  "owner": {
    "id": 1,
    "displayName": "string"
  },
  "participants": [...]
}

Récupérer tous les événements publics

GET /api/event/public

Réponse :

[
  {
    "id": 1,
    "location": "string",
    "description": "string",
    "startDate": "YYYY-MM-DD",
    "endDate": "YYYY-MM-DD",
    "private": false,
    "currentState": "scheduled",
    "privateLocation": false,
    "owner": { "id": 1, "displayName": "string" },
    "participants": [...]
  }
]

Récupérer tout les événements dont j'en suis participant

GET /api/event/my-events

Réponse :

[
  {
    "id": 1,
    "location": "string",
    "description": "string",
    "startDate": "YYYY-MM-DD",
    "endDate": "YYYY-MM-DD",
    "private": true,
    "currentState": "scheduled",
    "privateLocation": false,
    "owner": { "id": 1, "displayName": "string" },
    "participants": [...]
  }
]
<

S’inscrire à un événement public

POST /api/event/{id}/subscribe

Body : Aucun

Réponse :

{
  "id": 1,
  "location": "string",
  "description": "string",
  "startDate": "YYYY-MM-DD",
  "endDate": "YYYY-MM-DD",
  "private": false,
  "currentState": "scheduled",
  "privateLocation": false,
  "participants": [...]
}

Statut des invitations des participants d’un événement privé

GET /api/event/{id}/participants-status

Réponse :

[
  {
    "displayName": "Owner Name",
    "email": "[email protected]",
    "status": "accepted"
  },
  {
    "displayName": "Participant Name",
    "email": "[email protected]",
    "status": "pending"
  }
]

Accepter une invitation

POST /api/event/invitation/{id}/accept

Body :

Aucun

Réponse (200 OK) :

{
  "id": 1,
  "event": { "id": 1, "location": "string" },
  "sendBy": { "id": 1, "displayName": "Owner Name" },
  "sentTo": { "id": 2, "displayName": "Invité Name" },
  "status": "accepted"
}

Refuser une invitation

POST /api/event/invitation/{id}/refuse

Body :

Aucun

Réponse (200 OK) :

{
  "id": 1,
  "event": { "id": 1, "location": "string" },
  "sendBy": { "id": 1, "displayName": "Owner Name" },
  "sentTo": { "id": 2, "displayName": "Invité Name" },
  "status": "refused"
}

Créer une suggestion pour un événement privé

POST /api/event/{id}/suggestion

Body :

{
  "name": "Nom de la suggestion"
}

Réponse (201 Created) :

{
  "id": 1,
  "name": "Nom de la suggestion",
  "isTaken": false,
  "people": null
}

Récupérer les suggestions d’un événement privé

GET /api/event/{id}/suggestions

Body :

Aucun

Réponse (200 OK) :

[
  {
    "id": 1,
    "name": "Nom de la suggestion",
    "isTaken": false,
    "people": null
  }
]

Créer un support pour un événement privé

POST /api/event/{id}/support

Body :

{
  "name": "Nom du support"
}

Réponse (201 Created) :

{
  "id": 1,
  "name": "Nom du support",
  "people": { "id": 2, "displayName": "Participant Name" },
  "suggestion": null
}

Créer un support à partir d'une suggestion

POST /api/event/{id}/support-from-suggestion

Body :

{
  "suggestionId": 1
}

Réponse (201 Created) :

{
  "id": 1,
  "name": "Nom de la suggestion",
  "people": { "id": 2, "displayName": "Participant Name" },
  "suggestion": { "id": 1, "name": "Nom de la suggestion", "isTaken": true }
}

Récupérer tous les supports d’un événement privé

GET /api/event/{id}/supports

Body :

Aucun

Réponse (200 OK) :

[
  {
    "id": 1,
    "name": "Nom du support",
    "people": { "id": 2, "displayName": "Participant Name" },
    "suggestion": null
  }
]

Supprimer un support

DELETE /api/event/support/{id}

Body :

Aucun

Réponse (200 OK) :

{
  "success": "Support supprimé avec succès"
}