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
| Scope | Geeft toegang tot |
|---|---|
| practices:read | Praktijken lezen |
| vacancies:read | Vacatures lezen |
| candidates:read | Candidate-identiteiten lezen |
| applications:read | Sollicitaties lezen |
| applications:write | Sollicitaties aanmaken |
| recruitment-cases:read | Recruitment cases lezen |
| webhooks:read | Eigen webhook subscriptions lezen |
| webhooks:write | Eigen webhook subscriptions beheren |
Foutcodes
| Status | Wanneer |
|---|---|
| 400 invalid_request | grant_type ontbreekt of het verzoek klopt niet. |
| 400 invalid_scope | Gevraagde scope bestaat niet of is niet aan jouw client toegekend. |
| 400 unsupported_grant_type | Alleen client_credentials bestaat. |
| 401 invalid_client | Onbekende client, verkeerd secret, ingetrokken of verlopen client. Bewust één melding voor alle vier. |
| 401 UNAUTHENTICATED | Op /v1: geen, verlopen of ingetrokken token. |
| 403 INSUFFICIENT_SCOPE | Geldig 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.