Données et interopérabilité
Structurer les missions, candidatures et API sans perdre les responsabilités
Un guide de modélisation et d’échange : identifiants, états, référentiels métiers, minimisation des candidatures, versionnement, idempotence, imports et limites.
1. Séparer cinq objets qui n’ont pas la même preuve
Une annonce lisible, une mission contractuelle, une candidature, une décision et un événement de suivi ne sont pas des variantes du même enregistrement. Les fusionner produit des erreurs : une annonce corrigée réécrit l’historique, une candidature envoyée devient « acceptée » par défaut ou une notification est prise pour un contrat.
| Objet | Finalité | Preuve minimale |
|---|---|---|
| Fiche de diffusion | Informer sur un besoin temporaire | Source, version, auteur, date et état de publication |
| Mission | Décrire le travail et les conditions à confirmer | Référence stable, agence, entreprise utilisatrice, période et responsabilités |
| Candidature | Exprimer l’intérêt d’une personne pour une mission | Consentement à l’envoi, champs nécessaires, canal et horodatage |
| Décision | Tracer une action de l’agence | Acteur habilité, état précédent, nouvel état et raison bornée |
| Événement | Informer d’un changement | Identifiant, type, version d’objet et possibilité de déduplication |
2. Donner à chaque mission une identité et une provenance
L’identifiant technique d’une mission reste stable pendant ses corrections. Une version ou date de mise à jour permet au consommateur de détecter le changement. La provenance indique quelle agence ou quel système fait autorité ; elle ne doit pas être remplacée par le nom de la plateforme qui relaie l’information.
- Identifiant stable sans donnée personnelle
- Version ou date de modification
- Agence source et système d’origine
- État brouillon, publié, suspendu, clos ou expiré
- Date de début et fin de validité
- Identifiant de remplacement si une mission est republiée
3. Modéliser la fiche mission pour une décision humaine
Un schéma utile ne se limite pas à un titre et une description. Il rend explicites le travail, le temps, le lieu, les conditions, les prérequis et les informations à confirmer. Chaque champ distingue valeur connue, valeur inconnue et non-applicabilité ; une chaîne vide ne doit pas devenir une hypothèse.
| Bloc | Champs structurés | Garde-fou |
|---|---|---|
| Travail | Intitulé, tâches, environnement, référence métier | Le code métier ne remplace pas la description concrète |
| Temps | Début, fin, amplitude, pauses, fuseau | Pas de date locale sans fuseau ou zone comprise |
| Lieu | Site ou zone, accès, prise de poste | Adresse précise limitée aux personnes qui en ont besoin |
| Conditions | Unité de rémunération annoncée, équipements, prérequis | Inconnu reste inconnu jusqu’à confirmation |
| Responsabilités | Agence, entreprise utilisatrice, contacts qualifiés | La plateforme n’est pas substituée à l’employeur |
4. Référentiels métiers : partager un vocabulaire, pas une décision
ESCO fournit une classification multilingue de professions, aptitudes et compétences, accessible par API et par jeux de données versionnés. Ses concepts ont des identifiants durables et peuvent compléter un vocabulaire national ou interne.
Associer une mission à un concept facilite la recherche et l’échange, mais ne prouve ni la maîtrise d’une compétence par une personne, ni son aptitude à un poste particulier. Conservez le libellé source, le référentiel, sa version, l’identifiant du concept et la méthode de correspondance.
- Référentiel et version
- URI ou code du concept
- Libellé dans la langue affichée
- Libellé original de l’agence
- Correspondance humaine, importée ou proposée
- Date de validation et possibilité de correction
5. Une candidature transporte le minimum nécessaire
La candidature référence une mission et transmet les informations professionnelles nécessaires au premier examen. Elle ne recopie pas automatiquement tout un profil, ne joint pas un document sensible par défaut et ne transforme pas une donnée facultative en critère éliminatoire.
Le guide CNIL du recrutement rappelle les principes de finalité, d’information, d’accès, de droits et de conservation. Le responsable du traitement doit être identifiable ; l’API ne doit pas masquer cette responsabilité derrière un identifiant technique.
| Donnée | Usage possible | À éviter |
|---|---|---|
| Référence de mission | Relier la candidature au besoin exact | Titre libre impossible à dédupliquer |
| Disponibilité déclarée | Vérifier la période de la mission | Historique de vie sans rapport avec le besoin |
| Qualification pertinente | Documenter un prérequis annoncé | Collecte générale de justificatifs avant nécessité |
| Coordonnée de contact | Permettre la réponse par le canal annoncé | Diffusion à des tiers non identifiés |
| Message du candidat | Préciser une question ou un élément utile | Champ libre utilisé pour inférer des caractéristiques sensibles |
6. Choisir le format selon l’usage
JSON convient aux échanges structurés et imbriqués ; CSV facilite certains exports tabulaires ; un référentiel lié peut utiliser des URI et des formats de données liés. Le choix du format ne dispense jamais de publier un schéma, une version, un encodage, des exemples fictifs et des règles d’erreur.
| Format | Usage adapté | Limite à traiter |
|---|---|---|
| JSON | API et événements structurés | Schéma, types, dates, valeurs nulles et compatibilité |
| CSV | Import ou export tabulaire borné | Encodage, séparateur, colonnes répétées et formules dangereuses |
| JSON-LD ou RDF | Référentiels et concepts liés | Complexité et contexte versionné |
| PDF ou document | Support humain ou pièce justifiée | Peu interopérable, données difficiles à minimiser |
7. Décrire l’API avant de l’ouvrir
OpenAPI décrit de manière indépendante du langage les opérations, paramètres, schémas et réponses d’une API HTTP. Une description utile couvre aussi l’authentification, les erreurs, les limites de débit, la pagination, la compatibilité et les exemples sans donnée réelle.
- Nommer les ressources et leurs états
- Définir schémas d’entrée et de sortie
- Documenter authentification et droits par rôle
- Prévoir pagination et filtres bornés
- Définir erreurs stables et corrélables
- Publier version et politique de dépréciation
- Tester avec des fixtures fictives sans secret
8. Rendre les écritures idempotentes et les événements rejouables
Une candidature ou un changement d’état peut être renvoyé après un timeout. Une clé d’idempotence et une contrainte d’unicité empêchent le double enregistrement. Un événement possède un identifiant, une version de schéma et la version de l’objet concerné ; le consommateur ignore un doublon et détecte un événement ancien reçu après un plus récent.
- Clé d’idempotence bornée à l’acteur et à l’opération
- Réponse identique lors d’un rejeu valide
- Ordre fondé sur la version de l’objet, pas seulement l’heure réseau
- Accusé distinct de la décision métier
- File de quarantaine pour événement invalide
- Rejeu manuel borné et audité
9. Importer sans créer deux vérités
Un connecteur versionné lit une source déclarée, reprend depuis un checkpoint, valide le schéma, déduplique et publie atomiquement. Les erreurs temporaires utilisent un retry avec backoff ; les données invalides vont en quarantaine. Un seul ordonnanceur pilote une même source et une même ressource.
L’état courant n’est remplacé qu’après validation complète du lot. Le manifeste publié indique source, version, fraîcheur et empreinte ; l’ancienne version reste disponible pour rollback. Une extension future à une nouvelle agence ou à un autre référentiel doit changer la configuration ou le connecteur, pas le cœur du modèle.
10. Sécurité, confidentialité et journalisation
Les listes publiques ne contiennent aucune candidature. Les réponses authentifiées restent en cache privé ou no-store. Les journaux techniques excluent CV, messages libres, coordonnées et jetons ; ils conservent seulement identifiants techniques, résultat, durée, code d’erreur et corrélation expurgée.
- Contrôle d’accès par rôle et agence
- Révocation et expiration des accès
- Chiffrement en transit
- Aucun secret dans URL ou bundle public
- Export et correction via le responsable identifié
- Durées de conservation documentées
- Test de non-fuite entre agences et profils
11. Checklist d’un contrat d’échange exploitable
- Objets et responsabilités séparés
- Identifiants, provenance et versions définis
- Schémas et valeurs inconnues documentés
- Référentiels nommés avec leur version
- Données de candidature minimisées
- Droits et authentification précisés
- Idempotence, pagination et erreurs décrites
- Imports à checkpoint et publication atomique
- Caches et journaux sans donnée personnelle
- Dépréciation, rollback et contact de correction prévus
Limite publique IntériMatch
IntériMatch ne publie aujourd’hui aucune API de missions ou de candidatures, aucun connecteur agence, aucun compte réel et aucun service d’e-mail. La démonstration fictive illustre des états locaux. Ce guide définit une méthode d’interopérabilité et ses critères de contrôle ; il ne constitue ni une documentation d’API active ni une annonce d’intégration ESCO.
Sources
- Contrat de travail temporaire (ou contrat dit d’intérim) · Service-Public.fr · vérifié le 8 août 2026
- Guide pour un recrutement sans discrimination · Défenseur des droits · vérifié le 8 août 2026
- Salariés intérimaires : travailler en sécurité · Ministère du Travail · vérifié le 8 août 2026
- Intérim — définition · Insee · vérifié le 24 août 2026
- Code du travail — travail temporaire, définitions · Légifrance · vérifié le 24 août 2026
- L’emploi intérimaire — enquête et source · Dares · vérifié le 24 août 2026
- Le contrat de travail temporaire · Ministère du Travail · vérifié le 24 août 2026
- Le guide du recrutement · CNIL · vérifié le 24 août 2026
- Use ESCO Services (API) · Commission européenne — ESCO · vérifié le 24 août 2026
- Download ESCO · Commission européenne — ESCO · vérifié le 24 août 2026
- OpenAPI Specification · OpenAPI Initiative · vérifié le 24 août 2026
- RFC 8259 — The JavaScript Object Notation (JSON) Data Interchange Format · RFC Editor / IETF · vérifié le 24 août 2026