Hur använder man eAdm api nøkler
Denna artikel visar kort hur man kan använda en api-nyckel för att koppla upp och utföra 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 eadm
Tokens varer i 8 timer, men er alltid lurt å pakke inn uthenting i en prøve for å håndtere utløpte tokens.
Begge eksempler utfører følgende:
Kall mot apilogin endepunkt med brukernavn og passord på api bruker for å hente ut token
Kall mot getruleset endepunkt med token angitt i pkt for uthenting av regelsett json objekt
Man kan hämta ut alla tillgängliga endepunkter och parametrar vid öppna eadm man kan också testa de flesta av dem via denna sida också.
Eksempel powershell
$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#
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);
}
}
}
}