Hvordan benytte eFeide api nøkler
Denne artikkelen viser kort hvordan man kan benytte et api nøkkel sett for å koble opp og utføre kall mot eFeide api. Eksempel kode er skrevet i C#. Forutsetning for å benytte denne funksjonaliteten er at api kall er aktivert og et nøkkel sett er opprettet som er koblet til en eFeide bruker som har de nødvendige rettigheter for å benytte de endepunkter som kalles. Hoved URI for api kall er https://api.efeide.no/service.asmx/
Tokens varer i 8 timer, men er alltid lurt å pakke inn uthenting i en try for å håndtere utløpte tokens.
📘 Slik gjør du
C# eksempel beskrivelse med kall mot https://api.efeide.no/service.asmx/searchexam
Kode:
private string URI = "https://api.efeide.no/service.asmx/";
private string key = "adminapieksempel";
private string secret = "DetterEretPassord";
private string orgnr = "NO9999999999";
public eFeideApi()
{
Relogin:
dynamic ret = Newtonsoft.Json.JsonConvert.DeserializeObject(Login());
if (!string.IsNullOrEmpty(ret.lasterror.Value))
{
throw new Exception(ret.lasterror.Value);
}
string token = ret.data[0].Value;
ret = Newtonsoft.Json.JsonConvert.DeserializeObject(SearchExam(token, "", "20", "0", "name", "21.10.2024 08:00", "21.10.2024 16:00"));
if (!string.IsNullOrEmpty(ret.lasterror.Value))
{
if (ret.lasterror.Value == "User not authenticated or session has expired")
{
goto Relogin;
}
throw new Exception(ret.lasterror.Value);
}
foreach (dynamic ex in ret.data)
{
Console.WriteLine("Prøve: " + ex.name + " med tilgang: " + ex.access.displayname + ", starter: " + ex.start + ", og slutter: " + ex.end);
foreach (dynamic expupil in ex.members.users)
{
Console.WriteLine("Prøvedeltager: " + expupil.username);
}
}
}
public string Login()
{
string parameterString = "key=" + HttpUtility.UrlEncode(key) + "&password=" + HttpUtility.UrlEncode(secret) + "&orgnr=" + orgnr;
return PostForm("apilogin", parameterString);
}
public string PostForm(string method, string parameterString)
{
WebRequest request = WebRequest.Create(URI + method);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
byte[] byteArray = Encoding.UTF8.GetBytes(parameterString);
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
return responseFromServer;
}
public string SearchExam(string token, string searchkey, string resultsprpage, string pagenr,string sortcol, string fromdatetime, string todatetime)
{
string parameterString = "token=" + token + "&searchkey=" + searchkey
+ "&resultsprpage=" + resultsprpage + "&pagenr=" + pagenr + "&orgnr=" + orgnr + "&sortcol=" + sortcol + "&asc=False&onlyself=false&type=&start=" + fromdatetime + "&end=" + todatetime + "&includemembers=true";
return PostForm("searchexam", parameterString);
}
Generisk beskivelse
Gjør en REST POST kall mot https://test-api.efeide.no/service.asmx/apilogin
Hent token ut av responsen fra pkt 1
Gjør flere kall mot andre endepunkter med token fra pkt 2.