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:
Soita
apilogin
päätepisteen API-käyttäjätunnuksen ja salasanan avulla todennusmerkin hakemiseksi.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.
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#-esimerkki
Tämä C#-konsolisovellus havainnollistaa samaa työnkulkua: tunnistautuminen tunnisteen saamiseksi ja tunnisteen käyttäminen sääntökokonaisuuden noutamiseen.
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);
}
}
}
}