Skip to main content
Skip table of contents

Hvordan benytte eAdm api nøkler

Denne artikkelen viser kort hvordan man kan benytte et api nøkkel sett for å koble opp og utføre kall mot eAdm api. Eksempel kode er skrevet i C# / Powershell. Forutsetning for å benytte denne funksjonaliteten er at api kall er aktivert og et nøkkel sett er opprettet som har de nødvendige rettigheter for å benytte de endepunkter som kalles. Hoved URI for api kall er https://api.eadm.no/service.asmx/
Tokens varer i 8 timer, men er alltid lurt å pakke inn uthenting i en try for å håndtere utløpte tokens.

Begge eksempler utfører følgende:

  1. Kall mot apilogin endepunkt med brukernavn og passord på api bruker for å hente ut token

  2. Kall mot getruleset endepunkt med token angitt i pkt for uthenting av regelsett json objekt

Man kan hente ut alle tilgjengelige endepunkt og parametre ved å åpne https://api.eadm.no/service.asmx man kan også teste de fleste av de via denne siden også.

Eksempel powershell

CODE
$baseUrl = "https://api.eadm.no/service.asmx"
$username = "apiapi"
$password = Read-Host -Prompt "Enter a password"
$orgnr = "NOxxxxxxxxx"

$Url = "$($baseURL)/apilogin"
$Body = @{
    orgnr = $orgnr
    username = $username
    password = $password
}
$response = Invoke-RestMethod -Method 'Post' -Uri $url -Body $body

if ($response.data[0]){
    $token = $response.data[0]
}
else
{
    Write-Host "Login failed, check audit log for id $($response.lasterror)"
}

#Fetch a ruleset with a specified ID.

$Url = "$($baseURL)/getruleset"
$Body = @{
    token = $token
    id = "36477"
    orgnr = $orgnr
}
$response = Invoke-RestMethod -Method 'Post' -Uri $url -Body $body

$objects = $response.data

Eksempel c#

CODE
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Diagnostics;
using System.Web;
using System.Net;
using System.IO;
using System.Xml;
using System.Threading.Tasks;
using System.Collections.Specialized;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;

[DataContract]
    public class JData
    {
        public JData()
        {
        }
       
        public JData(string queryid_, int initiatedby_)
        {
            queryid = queryid_;
            initatedby = initiatedby_;
        }

        [DataMember]
        public string lasterror { get; set; }
        public string queryid { get; set; }
        public DateTime exportstart { get; set; }
        public DateTime exportend { get; set; }
        public int initatedby { get; set; }
        public string returncode { get; set; }
        [DataMember]
        public Object[] data { get; set; }
        public int pagenr { get; set; }
        public int resultsprpage { get; set; }
        public int pages { get; set; }
        public int totalresults { get; set; }
        public string[] sortablecolumns { get; set; }
        public string sortedby { get; set; }
        public bool sortascending { get; set; }
        public string[] searchablecolumns { get; set; }
    }

class Program
    {
        static void Main(string[] args)
        {
        string OrgNr = "";
        string UserName = "";
        string Password = "";
        string APIURL = "";

        GetRuleSet(GetAuthToken(OrgNr, UserName, Password, APIURL), OrgNr, 40718 , APIURL));
       
        }
   public static T JsonDeserialize<T>(string jsonString)
        {
            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
            MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
            T obj = (T)ser.ReadObject(ms);
            return obj;
        }
private static string GetAuthToken(string OrgNr, string UserName, string Password, string ApiURL)
        {
            var responseString = "";
            using (var client = new WebClient())
            {
                var values = new NameValueCollection();
                values["orgnr"] = OrgNr;
                values["username"] = UserName;
                values["password"] = Password;
                var response = client.UploadValues(ApiURL + @"/apilogin", values);
                responseString = Encoding.Default.GetString(response);

                JData jresp = JsonDeserialize<JData>(responseString);

                if (string.IsNullOrEmpty(jresp.lasterror))
                {
                    return jresp.data[0].ToString();
                }
            }
            return "";
        }

public static void GetRuleSet(string Token, string OrgNr, string RuleSetId, string ApiURL)
        {
            var responseString = "";
            string s = File.ReadAllText(FilePath);
            using (var client = new WebClient())
            {
                var values = new NameValueCollection();
                values["token"] = Token;
                values["orgnr"] = OrgNr.ToUpper();
                values["id"] = RuleSetId;
             
                var response = client.UploadValues(ApiURL + @"/getruleset", values);
                responseString = Encoding.Default.GetString(response);

                JData jresp = JsonDeserialize<JData>(responseString);

                if (!string.IsNullOrEmpty(jresp.lasterror))
                {
                    throw new Exception("An error occurred: " + jresp.lasterror);
                }
                else
                {
                    Console.WriteLine("Result OK");
                    Console.WriteLine(responseString);
                }
            }
        }

}
JavaScript errors detected

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

If this problem persists, please contact our support.