Hoe eADM API-sleutels gebruiken
In dit artikel wordt uitgelegd hoe je een API-sleutelset kunt gebruiken om verbinding te maken met en aanroepen te doen naar de eADM API. De codevoorbeelden worden gegeven in C# en PowerShell.
Vereisten
Controleer voordat je begint of:
API-toegang is ingeschakeld voor uw organisatie.
Er is een API-sleutelset aangemaakt met de benodigde machtigingen voor de eindpunten die u wilt gebruiken.
API-grondbeginselen
De basis URI voor alle API-aanroepen is: https://api.eadm.no/service.asmx
U kunt alle beschikbare eindpunten en hun vereiste parameters bekijken door in uw browser naar de basis URI te navigeren. U kunt de meeste eindpunten ook direct vanaf deze pagina testen.
Opmerking: Authenticatietokens zijn 8 uur geldig. We raden aan om het proces voor het ophalen van tokens in een try-catch blok te zetten om netjes om te gaan met verlopen tokens.
Authenticatie workflow
Beide volgende voorbeelden laten hetzelfde proces in twee stappen zien:
Bel de
apilogin
eindpunt met de API gebruikersnaam en wachtwoord om een authenticatietoken op te halen.Bel de
getruleset
eindpunt met behulp van het token uit de vorige stap om een specifieke regelset op te halen als een JSON object.
Code-voorbeelden
PowerShell-voorbeeld
Dit script authentiseert zich bij de API, haalt een token op en gebruikt dat token om een specifieke regelset op te halen.
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#-voorbeeld
Deze C# console applicatie demonstreert dezelfde workflow: authenticeren om een token te krijgen en dan het token gebruiken om een regelset op te halen.
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);
}
}
}
}