Skip to main content
Skip table of contents

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:

CODE
    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.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.