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

  1. Gjør en REST POST kall mot https://test-api.efeide.no/service.asmx/apilogin

  2. Hent token ut av responsen fra pkt 1

  3. Gjør flere kall mot andre endepunkter med token fra pkt 2.


Last updated: