SANDBOX — synthetische gegevens, geen productiedata
Sandbox

Authentication

M.I.A. gebruikt OAuth2 client credentials: een server-to-server flow zonder gebruiker en zonder refresh token.

1. Token opvragen

Stuur je credentials in de Authorization: Basic-header. Laat scope weg om alle scopes van je client te krijgen.

curl
curl -X POST "https://sandbox.mia.e-mederi.be/oauth/token" \
  -u "YOUR_CLIENT_ID:YOUR_CLIENT_SECRET" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials" \
  -d "scope=practices:read vacancies:read"
Antwoord
{
  "access_token": "mia_…",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "practices:read vacancies:read"
}

2. Het token gebruiken

curl
curl "https://sandbox.mia.e-mederi.be/v1/practices?page=1&per_page=25" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Accept: application/json"
PHP
<?php

$ch = curl_init("https://sandbox.mia.e-mederi.be/v1/practices");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ["Authorization: Bearer YOUR_ACCESS_TOKEN"],
]);

$response = json_decode((string) curl_exec($ch), true);
curl_close($ch);

foreach ($response["data"] as $practice) {
    echo $practice["practice_id"], " ", $practice["name"], PHP_EOL;
}
JavaScript (fetch)
const response = await fetch("https://sandbox.mia.e-mederi.be/v1/practices", {
  headers: { Authorization: `Bearer ${YOUR_ACCESS_TOKEN}` }
});

const { data, meta } = await response.json();
console.log(meta.pagination.total, data.length);

Scopes

ScopeGeeft toegang tot
practices:readPraktijken lezen
vacancies:readVacatures lezen
candidates:readCandidate-identiteiten lezen
applications:readSollicitaties lezen
applications:writeSollicitaties aanmaken
recruitment-cases:readRecruitment cases lezen
webhooks:readEigen webhook subscriptions lezen
webhooks:writeEigen webhook subscriptions beheren

Foutcodes

StatusWanneer
400 invalid_requestgrant_type ontbreekt of het verzoek klopt niet.
400 invalid_scopeGevraagde scope bestaat niet of is niet aan jouw client toegekend.
400 unsupported_grant_typeAlleen client_credentials bestaat.
401 invalid_clientOnbekende client, verkeerd secret, ingetrokken of verlopen client. Bewust één melding voor alle vier.
401 UNAUTHENTICATEDOp /v1: geen, verlopen of ingetrokken token.
403 INSUFFICIENT_SCOPEGeldig token, maar je mist de vereiste scope. Een nieuw token helpt niet.
Bewaar je secret veilig. Het wordt één keer getoond bij aanmaak of rotatie. M.I.A. bewaart alleen een hash en kan het niet opnieuw tonen kwijt is roteren. Zet het nooit in een frontend, in versiebeheer of in een URL.