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://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://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://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://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
Je krijgt enkel de scopes die Mederi aan jouw client toekende. Vraag je een token aan zonder scope, dan krijg je ze allemaal. Het veld scope in het antwoord toont welke dat zijn. Onderstaande lijst is het volledige overzicht, niet wat jij mag.
| 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 en verzonden sollicitaties vastleggen |
| recruitment-cases:read | Recruitment cases lezen |
| webhooks:read | Eigen webhook subscriptions lezen |
| webhooks:write | Eigen webhook subscriptions beheren |
| salesforce-mirror:write | Salesforce-records naar de M.I.A.-mirror schrijven (alleen de Salesforce Mirror-client) |
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.