REST API

Alt du kan gjøre med adresser og subnett i grensesnittet, kan du også gjøre via et enkelt JSON-API. Bruk det til provisjonering, integrasjon med CMDB eller egne skript.

Grunnleggende

  • Base-URL: https://ipmanager.no/api/v1
  • Alle forespørsler og svar er JSON (Content-Type: application/json).
  • Autentisering med API-nøkkel i headeren Authorization: Bearer ipm_….
  • Alle endringer via API-et logges i revisjonsloggen, med nøkkelens navn som utfører.

API-nøkler og tilganger

Nøkler lages under Auto-deteksjon og API av en administrator. Nøkkelen vises bare én gang. Hver nøkkel har én tilgang:

TilgangKan
readLese adresser, subnett og søk (GET)
writeAlt read kan, pluss opprette, endre og slette
agentKun sende agentrapporter (POST /agent/report)
Eksempel
curl -H "Authorization: Bearer $IPM_TOKEN" https://ipmanager.no/api/v1/search?q=10.20.3

Endepunkter

MetodeStiBeskrivelse
GET/addressesList adresser. Parametre: q, status, subnet, limit, offset
POST/addressesOpprett en adresse
GET/addresses/{id}Hent én adresse
PATCH/addresses/{id}Endre felter på en adresse
DELETE/addresses/{id}Slett en adresse
GET/subnetsList subnett
POST/subnetsOpprett et subnett
GET/subnets/{id}Hent ett subnett
PATCH/subnets/{id}Endre et subnett
DELETE/subnets/{id}Slett et subnett (adressene beholdes)
GET/subnets/{id}/next-freeNeste ledige IPv4-adresse i subnettet
GET/search?q=Samme søk som i grensesnittet, inkludert filtre
POST/agent/reportRapport fra agent eller innsamler
GET/agent/dns/targets?cidr=Registrerte adresser med vertsnavn som skal DNS-sjekkes (tilgang agent eller read)
POST/agent/dns/reportResultat av DNS-sjekk fra innsamleren
GET/conflictsList avvik
POST/conflicts/{id}Behandle et avvik (kvitter ut eller løs)

Adressefelter

FeltTypeMerknad
iptekstIPv4 eller IPv6. Påkrevd ved opprettelse
statustekstused, free, reserved, dhcp, offline eller deprecated. Standard used
hostnametekstLagres med små bokstaver
mactekstAlle vanlige skrivemåter, lagres som aa:bb:cc:dd:ee:ff
device, device_typetekstMaskin og maskintype
room, department, site, ownertekstPlassering og ansvar
descriptiontekstFritekst
tagslisteFor eksempel ["server", "produksjon"]
customobjektEgne felt, for eksempel {"rack": "A12"}
subnet_iduuidSettes automatisk til mest spesifikke subnett
source, last_seen_at–Kilde (manual, import, agent, scan, api) og sist sett
created_at, updated_attidISO 8601

Eksempler

Opprett en adresse
curl -X POST https://ipmanager.no/api/v1/addresses \
  -H "Authorization: Bearer $IPM_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ip":"10.20.3.41","hostname":"pr-b215","status":"used","room":"B2.15","tags":["skriver"]}'
Endre en adresse
curl -X PATCH https://ipmanager.no/api/v1/addresses/{id} \
  -H "Authorization: Bearer $IPM_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"status":"deprecated","description":"Byttes ut uke 42"}'
Opprett et subnett
curl -X POST https://ipmanager.no/api/v1/subnets \
  -H "Authorization: Bearer $IPM_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"cidr":"10.20.4.0/24","name":"Elever bygg C","vlan":31,"gateway":"10.20.4.1"}'
Neste ledige IP
curl -H "Authorization: Bearer $IPM_TOKEN" \
  https://ipmanager.no/api/v1/subnets/{id}/next-free
Søk med filtre
curl -G https://ipmanager.no/api/v1/search \
  -H "Authorization: Bearer $IPM_TOKEN" \
  --data-urlencode 'q=status:free in:10.20.0.0/16'

Agentrapport

Agenter og innsamlere bruker POST /agent/report med en nøkkel med tilgangen agent. En agent rapporterer egne grensesnitt:

Fra en agent
{
  "hostname": "srv01",
  "os": "Linux",
  "interfaces": [
    { "name": "eth0", "ip": "10.0.0.5", "mac": "00:11:22:33:44:55" }
  ]
}
Fra en innsamler
{
  "source": "scan",
  "hosts": [
    { "ip": "10.0.0.7", "hostname": "printer-2", "mac": "aa:bb:cc:dd:ee:ff" }
  ]
}
Svar
{ "created": 1, "updated": 0, "unchanged": 3, "limited": 0, "errors": [] }

DNS-sjekk

Innsamleren henter først hva som skal sjekkes, og rapporterer så resultatet. Se auto-deteksjon.

Hent adresser som skal sjekkes
curl -G https://ipmanager.no/api/v1/agent/dns/targets \
  -H "Authorization: Bearer $IPM_TOKEN" \
  --data-urlencode 'cidr=10.20.0.0/16'

{ "suffix": "skole.local", "targets": [ { "ip": "10.20.0.11", "hostname": "fil01" } ] }
Rapporter resultatet
POST /api/v1/agent/dns/report
{
  "resolver": "10.20.0.2",
  "results": [
    { "ip": "10.20.0.11", "ptr": ["fil01.skole.local"], "forward": ["10.20.0.11"], "forward_checked": true }
  ]
}

{ "checked": 1, "ok": 1, "problems": 0, "unknown": 0 }

Avvik

GET /conflicts lister organisasjonens avvik, som duplikat IP, feil eller flyttet MAC og DNS-avvik, med alvorlighetsgrad (critical, warning, info). POST /conflicts/{id} brukes til å kvittere ut eller løse et avvik. Alle endringer logges i revisjonsloggen.

Feil

Feil returneres med en HTTP-statuskode og et JSON-objekt: {"error": "kode", "detail": "…"}.

StatusTypiske koderBetyr
400 / 422invalid_ip, invalid_cidr, invalid_mac, invalid_status, invalid_vlan, gateway_outsideUgyldige data i forespørselen
401unauthorized, invalid_tokenMangler eller ugyldig nøkkel
403insufficient_scope, forbidden, ip_limit_reachedNøkkelen har ikke tilgang, eller adressegrensen er nådd
404not_foundFinnes ikke i din organisasjon
409duplicate_ip, duplicate_subnetAdressen eller subnettet finnes allerede

Få oversikt over IP-adressene i dag

Gratis for opptil 100 IP-adresser. Pålogging på e-post med en gang, ingen betalingskort.