Skip to main content
Ohita sisällysluettelo

Miten eADM API-avaimia käytetään

Tässä artikkelissa kerrotaan, miten API-avainsarjaa käytetään yhteyden muodostamiseen eADM API:han ja kutsujen tekemiseen sitä vastaan. Koodiesimerkkejä annetaan C#- ja PowerShell-kielellä.

Edellytykset

Varmista ennen aloittamista, että:

  • API-käyttöoikeus on käytössä organisaatiollesi.

  • API-avainsarja on luotu tarvittavilla oikeuksilla niille päätepisteille, joita aiot käyttää.

API:n perusteet

Kaikkien API-kutsujen perus-URI on: https://api.eadm.no/service.asmx

Voit tarkastella kaikkia käytettävissä olevia päätepisteitä ja niiden vaatimia parametreja siirtymällä selaimessasi perus-URI:hen. Voit myös testata useimmat päätepisteet suoraan tältä sivulta.

Huomautus: Tunnistusmerkit ovat voimassa 8 tuntia. Suosittelemme, että tunnisteen hakuprosessi kiedotaan try-catch-lohkoon, jotta vanhentuneita tunnuksia voidaan käsitellä asianmukaisesti.

Tunnistamisen työnkulku

Molemmissa seuraavissa esimerkeissä käytetään samaa kaksivaiheista prosessia:

  1. Soita apilogin päätepisteen API-käyttäjätunnuksen ja salasanan avulla todennusmerkin hakemiseksi.

  2. Soita getruleset päätepisteeseen edellisen vaiheen tunnuksen avulla noutaaksesi tietyn sääntökokonaisuuden JSON-objektina.

Esimerkkejä koodista

PowerShell-esimerkki

Tämä komentosarja kirjautuu API:han, hakee tunnisteen ja käyttää tunnusta tietyn sääntökokonaisuuden hakemiseen.

KOODI
PowerShell
KOODI
$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#-esimerkki

Tämä C#-konsolisovellus havainnollistaa samaa työnkulkua: tunnistautuminen tunnisteen saamiseksi ja tunnisteen käyttäminen sääntökokonaisuuden noutamiseen.

KOODI
C#
KOODI
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-virheitä havaittu

Huomaa, että nämä virheet voivat riippua selaimesi asetuksista.

Jos ongelma jatkuu, ota yhteyttä asiakaspalveluumme.