Asset Management Systeem · API v1
API-documentatie
Laat uw administratie, meldpunt of gebouwbeheersysteem praten met uw assetregister. Lezen, schrijven en direct bericht bij elke gebeurtenis.
Aan de slag
Met de API leest en schrijft een ander systeem gegevens in uw Asset Management Systeem. Met webhooks krijgt dat systeem direct bericht als er iets gebeurt.
- Maak een API-sleutel aan onder Instellingen > Koppelingen en API.
- Stuur de sleutel mee met elke oproep.
- Voeg eventueel een webhook toe om berichten te ontvangen.
curl https://dashboard.mjopbeheer.nl/api/v1/assets?limit=2 \
-H "Authorization: Bearer ams_live_..."Basisadres: https://dashboard.mjopbeheer.nl/api/v1. Veldnamen zijn Nederlands, zoals in het systeem; foutmeldingen zijn Engels.
Toegang
Elke oproep heeft de kop Authorization met uw sleutel. Een sleutel hoort bij één organisatie en ziet alleen de gegevens van die organisatie.
Authorization: Bearer ams_live_...- Een sleutel is alleen-lezen, of lezen en schrijven. Dat kiest u bij het aanmaken.
- U ziet de sleutel één keer. Wij bewaren alleen een afdruk (hash).
- Gebruik één sleutel per systeem, zodat u hem los kunt intrekken.
Gegevens lezen
GET https://dashboard.mjopbeheer.nl/api/v1/<onderdeel>
GET https://dashboard.mjopbeheer.nl/api/v1/<onderdeel>/<id>| Onderdeel | Inhoud | Filters |
|---|---|---|
/locaties | Gebouwen en terreinen | plaats, soort |
/assets | Installaties en gebouwdelen | locatie_id, categorie, status, bedrijfsstatus, nummer, extern_id, ruimte_nummer, kritikaliteit |
/meldingen | Meldingen en storingen | locatie_id, asset_id, status, soort, urgentie |
/werkorders | Opdrachten aan uitvoerders | locatie_id, asset_id, melding_id, project_id, status, leverancier_id |
/taken | Acties, besluiten en controles | locatie_id, status, soort, bron_entiteit, bron_id |
/keuringen | Keuringen en wettelijke verplichtingen | locatie_id, asset_id, soort |
/documenten | Documenten met hun link | asset_id, project_id, melding_id, werkorder_id, soort |
/projecten | Projecten (Capex en Opex) | locatie_id, fase, kostensoort |
/budgetten | Budgetregels per boekjaar | boekjaar, locatie_id, kostensoort, status |
/kosten | Facturen, meer- en minderwerk | werkorder_id, project_id, soort |
limit(standaard 100, maximaal 500) enoffsetvoor pagina’s; het antwoord bevatpaging.next_offset.updated_since(datum in ISO 8601) geeft alleen wat sindsdien is gewijzigd; niet voor budgetten en kosten.- Filters zijn exacte waarden, bijvoorbeeld
?locatie_id=…&status=open.
{
"data": [ { "id": "…", "nummer": "A-0059", "naam": "…", "locatie_id": "…" } ],
"paging": { "limit": 100, "offset": 0, "total": 79, "next_offset": null }
}Gegevens schrijven
Schrijven kan met een sleutel met schrijfrecht. Elke wijziging komt in het auditlog, met de naam van de sleutel.
Melding of storing aanmaken
POST https://dashboard.mjopbeheer.nl/api/v1/meldingen
{
"titel": "Lekkage plafond gang",
"omschrijving": "Water bij de lift",
"soort": "melding", // of "storing"
"urgentie": "normaal", // laag | normaal | hoog | spoed
"asset_nummer": "A-0059", // of asset_id / asset_extern_id / locatie_id
"gemeld_door": "Jan Jansen",
"fotos": ["https://…"]
}Verplicht: titel, en een asset of locatie_id. De verantwoordelijke uit de procesafspraken krijgt automatisch een taak om de melding te beoordelen. Bij een storing gaat het asset op storing.
Status van een melding bijwerken
PATCH https://dashboard.mjopbeheer.nl/api/v1/meldingen/<id>
{ "status": "in_behandeling", "bericht": "Monteur komt morgen" }
// status: in_behandeling | hersteld_gemeld ook: oplossingWerkorder bijwerken
PATCH https://dashboard.mjopbeheer.nl/api/v1/werkorders/<id>
{ "status": "geaccepteerd", "verwachte_datum": "2026-12-03" }
// status: geaccepteerd | in_uitvoering | gereed_gemeld ook: gereed_tekst, extern_referentieEen werkorder die nog op akkoord van de manager wacht, kan niet worden bijgewerkt (409). Sluiten en accepteren van de oplevering doet de opdrachtgever in het systeem.
Webhooks
Voeg onder Instellingen > Koppelingen en API een https-adres toe en kies de gebeurtenissen. Wij sturen een POST met JSON zodra er iets gebeurt.
POST https://uw-systeem.example/hook
X-AMS-Event: werkorder.goedgekeurd
X-AMS-Delivery: <id>
X-AMS-Signature: t=1794480000,v1=<hex>
{
"id": "<id>",
"type": "werkorder.goedgekeurd",
"created": "2026-11-12T11:30:00Z",
"data": { "werkorder": { "id": "…", "nummer": 12, "titel": "…", "status": "gepland" } }
}| Gebeurtenis | Wanneer |
|---|---|
melding.aangemaakt | Nieuwe melding of storing |
melding.status_gewijzigd | Status van een melding gewijzigd |
melding.gesloten | Melding gesloten |
werkorder.aangemaakt | Nieuwe werkorder |
werkorder.goedgekeurd | Werkorder goedgekeurd door de manager |
werkorder.status_gewijzigd | Status van een werkorder gewijzigd |
werkorder.gereed_gemeld | Werkorder gereed gemeld |
werkorder.opgeleverd | Oplevering geaccepteerd |
asset.aangemaakt | Nieuw asset |
asset.gewijzigd | Asset gewijzigd |
keuring.verloopt | Keuring verloopt binnenkort (volgt) |
keuring.verlopen | Keuring verlopen (volgt) |
taak.aangemaakt | Nieuwe taak |
taak.klaar | Taak afgerond |
Handtekening controleren
Bereken HMAC-SHA256 over "<t>.<body>" met het geheim van de webhook (whsec_…) en vergelijk met v1. Weiger berichten waarvan t ouder is dan vijf minuten.
import { createHmac, timingSafeEqual } from 'crypto';
function geldig(header, body, geheim) {
const { t, v1 } = Object.fromEntries(header.split(',').map((x) => x.split('=')));
const verwacht = createHmac('sha256', geheim).update(t + '.' + body).digest('hex');
return Math.abs(Date.now() / 1000 - Number(t)) < 300
&& timingSafeEqual(Buffer.from(v1), Buffer.from(verwacht));
}Antwoord binnen vijf seconden met een 2xx-status. Anders proberen we het opnieuw na 1, 5, 30, 120 en 720 minuten. Gebruik X-AMS-Delivery om dubbele berichten te herkennen.
Fouten en limieten
{ "error": { "code": "validation_error", "message": "Field \"titel\" is required." } }| 401 | unauthorized | Sleutel ontbreekt, is onjuist of ingetrokken |
| 403 | forbidden | Sleutel is alleen-lezen, of het systeem staat niet aan |
| 404 | not_found | Onderdeel of record bestaat niet |
| 409 | conflict | Niet mogelijk in deze status |
| 422 | validation_error | Veld ontbreekt of heeft een onjuiste waarde |
| 429 | rate_limited | Meer dan 120 oproepen per minuut per sleutel |
Elke oproep staat 90 dagen in het log onder Instellingen > Koppelingen en API.
Zapier, Make en Power Automate
Zonder programmeren koppelen kan nu al met de bouwstenen voor webhooks en HTTP in deze platforms:
- Berichten ontvangen: maak in het platform een "Catch hook" of "Custom webhook" en plak dat adres bij Webhooks.
- Gegevens ophalen of een melding aanmaken: gebruik een HTTP-stap met uw sleutel in de kop Authorization.
Kant-en-klare apps voor Zapier en Make, en standaardkoppelingen met Exact Online, AFAS en TOPdesk, zijn in voorbereiding.