Recherche de salles & gestion des réservations

Rechercher une salle

Requête:

POST /hubs/{hub}/_vti_bin/HUBMeetingService.svc/SearchAvailableSpaces

Corps:

Format: JSON

Les dates doivent être envoyées en UTC, sans fuseau horaire

 

{
   "StartDateIso8601": "2018-08-03T14:50:52.000Z",
   "EndDateIso8601": "2018-08-03T15:30:52.000Z",
   "Venue": "...",
   "Building": "...",
   "Floor": "...",
   "Capacity": 2,
   "Amenities": [1, 2, 3],
   "Types": [1, 2 ,3],
   "NextPage": "Paged=TRUE&p_Title=Salle+de+R%c3%a9union&p_ID=41"
}

Réponse:

Format: JSON

{
   "Error": null,
   "NextPage": "Paged=TRUE&p_Title=Salle%20de%20R%c3%a9union&p_ID=41",
   "TotalCount": 20,
   "rooms": [
   {
      "Amenities": [],
      "AppointmentInfos": null,
      "Capacity": 0,
      "Email": null,
      "ID": 54,
      "ImageUrl": "",
      "Name": "Flex Office 3",
      "NextPage": null,
      "Occupied": false,
      "RawLocation": "43/5.010796945720358/47.29400316343148/505/1",
      "Status": null,
      "Types": [{ "FAClass": null, "ID": 6, "Name": "Box" }]
   },
   {
      ...
   }]
}
  • La propriété NextPage du résultat est à réutiliser "telle quelle" dans la propriété de l'objet envoyé en POST pour la pagination.
  • La propriété TotalCount ne retourne que le nombre total d'éléments de la page courante.
  • Si on envoie en POST un objet vide ou avec au moins les dates vides, la recherche retournera les espaces réservables ET non réservables
  • La propriété Occupied indique le résultat des capteurs de présence pour l'espace
  • La propriété AppointmentInfos contient des dates au format ISO8601 :
    • NextAvailability : si une réservation est en cours, date à laquelle elle se termine (prochaine disponibilité donc)
    • NextMeeting : si aucune réservation est en cours, mais qu'une réservation est prévue plus tard dans la journée, indique la date de début de cette réservation

Création d'une réservation

Requête:

POST /hubs/{hub}/_vti_bin/HUBMeetingService.svc/CreateAppointment

Corps:

Format: JSON

Les dates doivent être envoyées en UTC, sans fuseau horaire

 

{
   "StartDateIso8601" : "2018-08-03T14:50:52.000Z",
   "EndDateIso8601" : "2018-08-03T15:30:52.000Z",
   "Subject" : "Daily scrum",
   "Content" : "Réunion hebdomadaire de suivi",
   "Attendees" : ["mickael.damour@tevolys.com", "thomas.mussy@tevolys.com",
   "jeremy.taverne@tevolys.com", "sylvain.roques@tevolys.com"],
   "RoomAddress" : "sallecreativite@tevolys.com"
}

Réponse:

Format: JSON

{
   "ExchangeResult": "WaitingForValidation",
   "Message": "MeetingSuccess",
   "Success": true,
   "TechnicalSuccess": true
}

Récupération des réservations effectuées par l'utilisateur connecté

Requête:

GET /hubs/{hub}/_vti_bin/HUBMeetingService.svc/GetAppointments/{nb}

 

nb : est un entier correspondant au nombre de réservations à récupérer. 

Réponse:

Format: JSON

[{
   "ETag": "datetime'2018-08-17T13%3A15%3A04.0468101Z'",
   "PartitionKey": "41",
   "RowKey": "...",
   "Timestamp": {
      "DateTime": "Date(1534511704046)",
      "OffsetMinutes": 0
   },
   "Attendees": [{
      "Email": "thomas.mussy@tevolys.com",
      "Status": "Unknown",
      "Required": true
   }],
   "Body": "Réunion hebdomadaire de suivi",
   "Creator": "geolys@tevolys.com",
   "EndDate": "Date(1534516800000)",
   "Organizer": "mickael.damour@tevolys.com",
   "SpaceIdentifier": null,
   "StartDate": "Date(1534516200000)",
   "Status": 0,
   "Subject": "Test WS MDA"
}]

Récupération d'une réservation

Requête:

GET /hubs/{hub}/_vti_bin/HUBMeetingService.svc/GetAppointment/{exchangeMeetingID}

 

echangeMeetingID :
- Id du meeting Exchange (remplacer le caractère '/' par un espace ou '%20' dans l'URL) 
- Possibilité d'utilisé l'Id Geolys à la place (Guid généré lors de la création du meeting)

Réponse:

Format: JSON

{
   "ETag": "datetime'2018-08-17T15%3A06%3A04.1591369Z'",
   "PartitionKey": "41",
   "RowKey": "...",
   "Timestamp": {
      "DateTime": "Date(1534518364159)",
      "OffsetMinutes": 0
   },
   "Attendees": null,
   "Body": null,
   "Creator": "...@...",
   "EndDate": "Date(1534532400000)",
   "Organizer": null,
   "SpaceIdentifier": "sallereunion1@geolys.io",
   "StartDate": "Date(1534530600000)",
   "Status": 0,
   "Subject": "..."
}

Mise à jour d'une réservation

Requête:

POST /hubs/{hub}/_vti_bin/HUBMeetingService.svc/UpdateAppointment

Corps:

Format: JSON

Les dates doivent être envoyées en UTC, sans fuseau horaire
{
   "AppointmentID": "...",
   "StartDateIso8601": "2018-08-03T14:50:52.000Z",
   "EndDateIso8601": "2018-08-03T15:30:52.000Z",
   "Subject": "Daily scrum",
   "Content":"...",
   "Attendees": [
      "mickael.damour@tevolys.com",
      "thomas.mussy@tevolys.com",
      "jeremy.taverne@tevolys.com",
      "sylvain.roques@tevolys.com"
   ],
   "RoomAddress" : "...@..."
}

Réponse:

Format: JSON

{
   "Message": "MeetingSuccess",
   "Success": true
}

Suppression d'une réservation

Requête:

DELETE /hubs/{hub}/_vti_bin/HUBMeetingService.svc/DeleteAppointment

Corps:

Format: JSON

{
   "AppointmentID" : "...",
   "RoomAddress" : "...@..."
}

Réponse:

Format: JSON

{
   "Message": "DeleteMeetingSuccess",
   "Success": false
}

Support