Hoe kan ik de eAdm api gebruiken?
Dit artikel laat kort zien hoe je een api nøkkel kunt gebruiken om een oplossing te vinden en te gebruiken voor de eAdm api. De voorbeeldkode is gemaakt in C# / Powershell. De manier om deze funksjonaliteten te benutten is dat de api kall is geactiveerd en dat de nøkkel sett er opprettet de nødvendige rettigheter heeft om de endepunkter som kalles te benutten. Hoved URI for api kall er eadm
Tokens varer i 8 timer, men er alltid lurt å pakke inn uthenting i en try for å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 hente ut alle tilgjengelige endepunkt og parametre ved å åpne eadm man kan også teste de fleste av de via denne siden også.
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);
}
}
}
}