exchange.ws – Exchange Web Service TEST

Implementasjon av Rest-basert Web Service vha Ruby on Rails og WinRb/Viewpoint. Resultatet i er JSON-format.

Merk: det er en begresning i WinRb/Viewpoint som gjør at repeterende events ikke vises utover første forekomst.

En nginx-server er satt opp som frontend for rest-tjenesten og cacher resultatene i x-minutter. Backend er rullet ut i UH-skyen vha Ansible (repo: git.uib.no:/user/edpck/ansible-uib-uh-rails-server.git) og tilgjengelig på ews.test.uib.no

Se også dokumentasjon i ITWiki:Exchange.ws

Gå til side for å generere API-nøkkel for å få fatt en gyldig APIKEY.

events.room – liste over events for rom

GET https://ews.datatest.uib.no/[APIKEY]/api/v1/events/year:{year}/week:{week}/day:{day}/room:{room}
year integer Årstall
week integer Ukenummer
day integer = 0 Dag idag, 1 = imorgen, -1 = igår, osv. Overstyrer week hvis begge er angitt.
room string Romnavn, feks: ExITMoteromSR4110@exchange.uib.no
JSON
200 OK
Content-Type: application/json

	{"room": "ExITMoteromSR4110@exchange.uib.no",
	"events": [{
	   "subject": "...",
	   "start": "...",
	   "end": "...",
	   "id": "...",
	   "change_key": "..."
	   },{
	   "subject": "...",
	   "start": "...",
	   "end": "...",
	   "id": "...",
	   "change_key": "..."
	   },{
	   "subject": "...",
	   "start": "...",
	   "end": "...",
	   "id":"",
	   "change_key":"..."
	   ...
	}]}

Examples

Viser alle events på møterom ExITMoteromSR4110 i uke 2 inneværende år: https://ews.datatest.uib.no/APIKEY/api/v1/events/week:02/room:ExITMoteromSR4110

{"room": "ExITMoteromSR4110@exchange.uib.no",
"events": [{
      "subject": "A3 møter- brukerstøtte NB Forberedelser :-)",
      "start": "2016-01-11T12:00:00.000+00:00",
      "end": "2016-01-11T13:30:00.000+00:00",
      "id": "AAMkADQyZjQzYWQ2LWFiOTktNDExYi04OTlkLWQ3...",
      "change_key": "DwAAABYAAAD88wwMHgulSpU1tBKNjyuRAAA6h9M2"
      },{
      "subject": "Presentasjon av Brukerstøtte",
      "start": "2016-01-12T12:00:00.000+00:00",
      "end": "2016-01-12T12:45:00.000+00:00",
      "id": "AAMkADQyZjQzYWQ2LWFiOTktNDExYi04OTlkLWQ3...",
      "change_key": "DwAAABYAAAD88wwMHgulSpU1tBKNjyuRAAA6h9Py"
      },{
      "subject": "A3 om møter",
      "start": "2016-01-14T08:00:00.000+00:00",
      "end": "2016-01-14T09:30:00.000+00:00",
      "id": "AAMkADQyZjQzYWQ2LWFiOTktNDExYi04OTlkLWQ3...",
      "change_key": "DwAAABYAAAD88wwMHgulSpU1tBKNjyuRAAA6h9gZ"
      },{
      "subject": "Nito - styremøte",
      "start": "2016-01-14T12:30:00.000+00:00",
      "end": "2016-01-14T14:00:00.000+00:00",
      "id": "AAMkADQyZjQzYWQ2LWFiOTktNDExYi04OTlkLWQ3",
      "change_key": "DwAAABYAAAD88wwMHgulSpU1tBKNjyuRAAA6h9Q2"
}]}

events.users – liste over free/busy events for en eller flere brukere

GET https://ews.datatest.uib.no/[APIKEY]/api/v1/events/year:{year}/week:{week}/day:{day}/users:{username1,username2}
year integer Årstall
week integer Ukenummer
day integer = 0 Dag idag, 1 = imorgen, -1 = igår, osv. Overstyrer week hvis begge er angitt.
users string Ett eller flere brukernavn (kommaseparert)
JSON
200 OK
Content-Type: application/json

	{"events": [{
	   "user": "username1",
	   "datetime_range": {
	   	"start": "...",
	   	"end": "..."
		}
	   "end": "...",
	   "free_busy_events": [{
	   	"start": "...",
	   	"end": "...",
	   	"free_busy": "..."
		},{
	   	"start": "...",
	   	"end": "...",
	   	"free_busy": "..."
		}...]
	   },{
	   "user": "username2",
	   "datetime_range": {
	   	"start": "...",
	   	"end": "..."
		}
	   "end": "...",
	   "free_busy_events": []
	   "error": "GetUserAvailability produced an error: ErrorMailRecipientNotFound: "
	   },{
	   "user": "username3",
	   "datetime_range": {
	   	"start": "...",
	   	"end": "..."
		}
	   "end": "...",
	   "free_busy_events": [{
	   	"start": "...",
	   	"end": "...",
	   	"free_busy": "..."
		},{
	   	"start": "...",
	   	"end": "...",
	   	"free_busy": "..."
		}...]
	   }
	   ...
        ]}

Examples

Viser alle free/busy events idag for en bruker med Exchange og en uten: https://ews.datatest.uib.no/APIKEY/api/v1/events/day:0/users:edpck,ddu001

Hvis json-strukturen inneholder 'error' oppstod det problem med å finne free/busy events på brukeren. Den kan være forårsaket av forskjellige årsaker; brukernavnet er feil, bruker har ikke Exchange-konto, osv.

{"events": [{
           "user": "edpck",
       "datetime_range": {
            "start": "2016-12-07",
            "end": "2016-12-08"
        },
       "free_busy_events": [{
            "start": "2016-12-07T08:30:00+00:00",
        "end": "2016-12-07T09:30:00+00:00",
        "free_busy":"Busy"
        },{
        "start": "2016-12-07T09:00:00+00:00",
        "end": "2016-12-07T10:30:00+00:00",
        "free_busy": "Busy"
        }]
       },{
       "user":"ddu001",
       "datetime_range":{
            "start": "2016-12-07",
            "end":" 2016-12-08"
        },
       "free_busy_events":[],
       "error": "GetUserAvailability produced an error: ErrorMailRecipientNotFound: "
       }
]}