Skip to main content
Inhoudsopgave overslaan

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:

  1. Bel de apilogin eindpunt met de API gebruikersnaam en wachtwoord om een authenticatietoken op te halen.

  2. 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.

CODE
PowerShell
CODE
$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.

CODE
C#
CODE
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);
            }
        }
    }
}
JavaScript-fouten gedetecteerd

Let op: deze fouten kunnen afhankelijk zijn van de instellingen van je browser.

Als dit probleem zich blijft voordoen, neem dan contact op met onze supportafdeling.