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"
}
"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" }]
},
{
...
}]
}
"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"
}
"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
}
"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"
}]
"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)
- 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": "..."
}
"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" : "...@..."
}
"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
}
"Message": "MeetingSuccess",
"Success": true
}
Suppression d'une réservation
Requête:
DELETE /hubs/{hub}/_vti_bin/HUBMeetingService.svc/DeleteAppointment
Corps:
Format: JSON
{
"AppointmentID" : "...",
"RoomAddress" : "...@..."
}
"AppointmentID" : "...",
"RoomAddress" : "...@..."
}
Réponse:
Format: JSON
{
"Message": "DeleteMeetingSuccess",
"Success": false
}
"Message": "DeleteMeetingSuccess",
"Success": false
}