Slik bruker du eADM API-nøkler
Denne artikkelen forklarer hvordan du bruker et API-nøkkelsett til å koble til og gjøre anrop mot eADM API. Kodeeksemplene er gitt i C# og PowerShell.
Forutsetninger
Før du begynner, må du forsikre deg om at:
API-tilgang er aktivert for organisasjonen din.
Det er opprettet et API-nøkkelsett med de nødvendige tillatelsene for endepunktene du planlegger å bruke.
Grunnleggende API
Basis-URI-en for alle API-kall er: https://api.eadm.no/service.asmx
Du kan se alle tilgjengelige endepunkter og de nødvendige parameterne ved å navigere til basis-URI-en i nettleseren din. Du kan også teste de fleste endepunktene direkte fra denne siden.
Merk: Autentiseringstokener er gyldige i 8 timer. Vi anbefaler å pakke inn tokenhentingsprosessen i en try-catch-blokk for å håndtere utløpte tokens på en elegant måte.
Arbeidsflyt for autentisering
Begge de følgende eksemplene viser den samme totrinnsprosessen:
Ring til
apilogin
endepunkt med API-brukernavn og passord for å hente et autentiseringstoken.Ring til
getruleset
endepunkt ved hjelp av tokenet fra forrige trinn for å hente et spesifikt regelsett som et JSON-objekt.
Eksempler på kode
PowerShell-eksempel
Dette skriptet autentiserer seg mot API-et, henter et token og bruker deretter dette tokenet til å hente et bestemt regelsett.
PowerShell
$baseUrl = "https://api.eadm.no/service.asmx"
$username = "apiapi" # Your API username
$password = Read-Host -Prompt "Enter a password"
$orgnr = "NOXXXXXXXXX" # Your organization number
# 1. Authenticate and get a token
$loginUrl = "$($baseURL)/apilogin"
$loginBody = @{
orgnr = $orgnr
username = $username
password = $password
}
$loginResponse = Invoke-RestMethod -Method 'Post' -Uri $loginUrl -Body $loginBody
$token = $null
if ($loginResponse.data[0]) {
$token = $loginResponse.data[0]
}
else {
Write-Host "Login failed. Check the audit log for ID: $($loginResponse.lasterror)"
return
}
# 2. Fetch a ruleset using the token
$rulesetUrl = "$($baseURL)/getruleset"
$rulesetBody = @{
token = $token
id = "36477" # The ID of the ruleset to fetch
orgnr = $orgnr
}
$rulesetResponse = Invoke-RestMethod -Method 'Post' -Uri $rulesetUrl -Body $rulesetBody
$objects = $rulesetResponse.data
# Process the $objects variable which now contains the ruleset data
C#-eksempel
Denne C#-konsollapplikasjonen demonstrerer den samme arbeidsflyten: autentisering for å få et token, og deretter bruk av tokenet til å hente et regelsett.
C#
using System;
using System.Collections.Specialized;
using System.IO;
using System.Net;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text;
// DataContract for deserializing the JSON response
[DataContract]
public class JData
{
[DataMember]
public string lasterror { get; set; }
[DataMember]
public Object[] data { get; set; }
// Other potential response fields
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; }
public int pagenx { 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 = "NOXXXXXXXXX"; // Your organization number
string userName = "api-user"; // Your API username
string password = "your-password"; // Your API password
string apiUrl = "https://api.eadm.no/service.asmx";
int ruleSetIdToFetch = 40718;
try
{
string authToken = GetAuthToken(orgNr, userName, password, apiUrl);
if (!string.IsNullOrEmpty(authToken))
{
Console.WriteLine("Authentication successful.");
GetRuleSet(authToken, orgNr, ruleSetIdToFetch, apiUrl);
}
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred: {ex.Message}");
}
}
// Generic method to deserialize JSON
public static T JsonDeserialize<T>(string jsonString)
{
var ser = new DataContractJsonSerializer(typeof(T));
var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
T obj = (T)ser.ReadObject(ms);
return obj;
}
// Method to get the authentication token
private static string GetAuthToken(string orgNr, string userName, string password, string apiUrl)
{
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);
var responseString = Encoding.Default.GetString(response);
JData jresp = JsonDeserialize<JData>(responseString);
if (string.IsNullOrEmpty(jresp.lasterror))
{
return jresp.data[0].ToString();
}
else
{
throw new Exception("Authentication failed: " + jresp.lasterror);
}
}
}
// Method to get a specific ruleset
public static void GetRuleSet(string token, string orgNr, int ruleSetId, string apiUrl)
{
using (var client = new WebClient())
{
var values = new NameValueCollection();
values["token"] = token;
values["orgnr"] = orgNr.ToUpper();
values["id"] = ruleSetId.ToString();
var response = client.UploadValues(apiUrl + @"/getruleset", values);
var responseString = Encoding.Default.GetString(response);
JData jresp = JsonDeserialize<JData>(responseString);
if (!string.IsNullOrEmpty(jresp.lasterror))
{
throw new Exception("Failed to get ruleset: " + jresp.lasterror);
}
else
{
Console.WriteLine("Result OK");
Console.WriteLine(responseString);
}
}
}
}