API REST/JSON v1.1.0
L'API REST/JSON e-Attestations v1.1.0 permet d'interfacer un système d'information client à la plateforme e-Attestations via le protocole HTTP REST avec encodage JSON.
Vue d'ensemble
Cette API REST permet le suivi de conformité des tiers (fournisseurs, partenaires) via une architecture RESTful avec des réponses au format JSON.
Fonctionnalités principales
- Gestion des tiers (création, consultation)
- Création et suivi des dossiers d'évaluation
- Téléchargement des documents et fichiers
- Consultation des indicateurs de conformité
Environnements
Deux environnements sont disponibles pour l'intégration :
Environnement de TEST
https://rs.test-e-attestations.com/api/v1/Pour le développement et les tests d'intégration
Environnement de PRODUCTION
https://rs.e-attestations.com/api/v1/Pour l'utilisation en conditions réelles
Encodage
Toutes les communications avec l'API doivent utiliser l'encodage UTF-8.
Authentification OpenID Connect
L'API utilise OpenID Connect (OIDC) avec des tokens JWT (JSON Web Tokens) pour l'authentification. Vous devez obtenir un token avant d'appeler les endpoints de l'API.
Endpoints d'authentification
TEST
https://auth.test-e-attestations.com/auth/realms/eat_realm/protocol/openid-connect/tokenPRODUCTION
https://auth.e-attestations.com/auth/realms/eat_realm/protocol/openid-connect/tokenRequête d'authentification
POST /auth/realms/eat_realm/protocol/openid-connect/token
Content-Type: application/x-www-form-urlencoded
client_id=ea-api-edge
&grant_type=password
&username=VOTRE_USERNAME
&password=VOTRE_PASSWORDParamètres requis
| Paramètre | Valeur | Description |
|---|---|---|
client_id | ea-api-edge | Identifiant client (fixe) |
grant_type | password | Type d'authentification |
username | Votre identifiant | Nom d'utilisateur API |
password | Votre mot de passe | Mot de passe API |
Réponse
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 300,
"refresh_expires_in": 1800,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "bearer",
"not-before-policy": 0,
"session_state": "abc123..."
}expires_in en secondes). Pensez à le renouveler avant expiration ou utilisez le refresh_token.Utilisation du token
Incluez le token dans l'en-tête Authorization de toutes vos requêtes :
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...Récupère les informations du compte associé au token valide.
Requête
GET /api/v1/account
Authorization: Bearer {access_token}Réponse
{
"content": {
"accountId": 12345,
"accountName": "Ma Societe",
"subscriptionStartDate": "2020-01-01",
"subscriptionEndDate": "2025-12-31"
},
"messages": {
"info": [],
"warning": [],
"error": []
}
}Retourne les statistiques globales des tiers suivis pour le compte.
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
accountId | Integer | Oui | Identifiant du compte (path) |
Requête
GET /api/v1/account/12345
Authorization: Bearer {access_token}Réponse
{
"content": {
"accountId": 12345,
"totalThirdparties": 150,
"monitoredThirdparties": 120,
"totalDossiers": 180,
"completedDossiers": 95,
"pendingDossiers": 85
},
"messages": {
"info": [],
"warning": [],
"error": []
}
}Liste les tiers du référentiel du compte avec filtrage optionnel.
Paramètres de requête
| Paramètre | Type | Description |
|---|---|---|
monitored | Boolean | Filtrer par statut de suivi |
companyIdType | String | Type d'identifiant (CIT001, CIT002) |
name | String | Nom de l'entreprise |
siren | String | Numéro SIREN (9 chiffres) |
siret | String | Numéro SIRET (14 chiffres) |
tva | String | Numéro de TVA intracommunautaire |
thirdpartyGlobalState | Boolean | État global du tiers |
page | Integer | Numéro de page (défaut: 0) |
pageSize | Integer | Taille de page (défaut: 20) |
Requête
GET /api/v1/account/12345/thirdparties?monitored=true&page=0&pageSize=20
Authorization: Bearer {access_token}Réponse
{
"content": [
{
"thirdpartyId": 67890,
"companyIdType": "CIT001",
"companyIdValue": "12345678901234",
"thirdpartyCode": "FOURNISSEUR-001",
"name": "Fournisseur Example SAS",
"monitored": true,
"globalState": true
}
],
"messages": {
"info": [],
"warning": [],
"error": []
},
"page": 0,
"size": 20,
"totalElements": 1
}Retourne les informations détaillées d'un tiers : identité, adresse, utilisateurs, statut commercial, activité et données financières.
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
accountId | Integer | Oui | Identifiant du compte |
thirdpartyId | Integer | Oui | Identifiant du tiers |
Requête
GET /api/v1/account/12345/thirdparties/67890
Authorization: Bearer {access_token}Réponse
{
"content": {
"thirdpartyId": 67890,
"companyIdType": "CIT001",
"companyIdValue": "12345678901234",
"thirdpartyCode": "FOURNISSEUR-001",
"identity": {
"name": "Fournisseur Example SAS",
"legalForm": "SAS",
"siren": "123456789",
"siret": "12345678901234",
"vatNumber": "FR12345678901",
"creationDate": "2010-05-15"
},
"address": {
"street": "123 Rue de la Paix",
"postalCode": "75001",
"city": "Paris",
"country": "France"
},
"activity": {
"mainActivity": "6201Z",
"mainActivityLabel": "Programmation informatique"
},
"financial": {
"capital": 100000,
"currency": "EUR",
"employees": 50
},
"users": [
{
"email": "contact@fournisseur.com",
"firstName": "Jean",
"lastName": "Dupont"
}
],
"businessStatus": {
"active": true,
"closedDate": null
}
},
"messages": {
"info": [],
"warning": [],
"error": []
}
}Crée un dossier de suivi pour un tiers. Le traitement est asynchrone et retourne un processId pour suivre l'avancement.
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
companyIdType | String | Oui | Type d'identifiant (CIT001, CIT002) |
companyIdValue | String | Oui | Valeur de l'identifiant (SIRET, TVA) |
thirdpartyCode | String | Non | Code interne du tiers |
dossierReference | String | Non | Référence unique du dossier |
description | String | Non | Description du dossier |
purchasingCategory | String | Non | Catégorie d'achat |
expirationDate | Date | Non | Date d'expiration (YYYY-MM-DD) |
requiredDocuments | Array | Non | Liste des codes documents requis |
thirdpartyEmail | Array | Non | Emails du tiers pour invitation |
userInCharge | Array | Non | Emails des responsables |
Requête
POST /api/v1/account/12345/dossiers
Authorization: Bearer {access_token}
Content-Type: application/json
{
"companyIdType": "CIT001",
"companyIdValue": "12345678901234",
"thirdpartyCode": "FOURNISSEUR-001",
"dossierReference": "DOS-2024-001",
"description": "Evaluation fournisseur IT",
"purchasingCategory": "IT",
"expirationDate": "2025-12-31",
"requiredDocuments": ["KBIS", "URSSAF", "ASSURANCE"],
"thirdpartyEmail": ["contact@fournisseur.com"],
"userInCharge": ["acheteur@masociete.com"]
}Réponse
{
"content": {
"processId": "abc123-def456-ghi789",
"status": "PENDING"
},
"messages": {
"info": ["Dossier creation in progress"],
"warning": [],
"error": []
}
}processId retourné permet de suivre l'avancement de la création du dossier. Utilisez l'endpoint GET /dossiers avec ce processId pour vérifier le statut.Recherche multi-critères des dossiers du compte.
Paramètres de requête
| Paramètre | Type | Description |
|---|---|---|
thirdpartyId | Integer | Identifiant du tiers |
companyIdType | String | Type d'identifiant |
companyIdValue | String | Valeur de l'identifiant |
thirdpartyCode | String | Code interne du tiers |
dossierReference | String | Référence du dossier |
monitored | Boolean | Statut de suivi |
stateLastChangeDate | Date | Date de dernière modification |
page | Integer | Numéro de page |
pageSize | Integer | Taille de page |
Requête
GET /api/v1/account/12345/dossiers?thirdpartyCode=FOURNISSEUR-001&page=0&pageSize=10
Authorization: Bearer {access_token}Réponse
{
"content": [
{
"dossierId": 11111,
"thirdpartyId": 67890,
"dossierReference": "DOS-2024-001",
"monitored": true,
"state": true,
"creationDate": "2024-01-15",
"expirationDate": "2025-12-31",
"indicators": [
{
"code": "I001",
"label": "Obligation de vigilance",
"state": true
}
],
"documents": [
{
"documentId": 22222,
"documentCode": "KBIS",
"name": "Extrait Kbis",
"present": true,
"requestDate": "2024-01-15",
"expirationDate": "2025-01-15"
}
]
}
],
"messages": {
"info": [],
"warning": [],
"error": []
},
"page": 0,
"size": 10,
"totalElements": 1
}Récupère les détails complets d'un dossier spécifique, incluant les documents, indicateurs et informations sur les fichiers.
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
accountId | Integer | Oui | Identifiant du compte |
dossierId | Integer | Oui | Identifiant du dossier |
Requête
GET /api/v1/account/12345/dossiers/11111
Authorization: Bearer {access_token}Réponse
{
"content": {
"dossierId": 11111,
"thirdpartyId": 67890,
"dossierReference": "DOS-2024-001",
"description": "Evaluation fournisseur IT",
"purchasingCategory": "IT",
"monitored": true,
"state": true,
"creationDate": "2024-01-15",
"expirationDate": "2025-12-31",
"stoppingReason": null,
"indicators": [
{
"code": "I001",
"label": "Obligation de vigilance",
"state": true
}
],
"documents": [
{
"documentId": 22222,
"documentCode": "KBIS",
"name": "Extrait Kbis",
"present": true,
"requestDate": "2024-01-15",
"expirationDate": "2025-01-15",
"listFileInformation": [
{
"fileId": 33333,
"fileUUID": "uuid-abc-123",
"uploadDate": "2024-01-20",
"fileSize": 125000,
"expirationDate": "2025-01-15"
}
]
},
{
"documentId": 22223,
"documentCode": "URSSAF",
"name": "Attestation URSSAF",
"present": false,
"requestDate": "2024-01-15",
"expirationDate": null,
"listFileInformation": []
}
]
},
"messages": {
"info": [],
"warning": [],
"error": []
}
}Met à jour un dossier existant.
Corps de la requête
| Champ | Type | Description |
|---|---|---|
dossierReference | String | Nouvelle référence du dossier |
description | String | Nouvelle description |
purchasingCategory | String | Nouvelle catégorie |
expirationDate | Date | Nouvelle date d'expiration |
thirdpartyCode | String | Nouveau code tiers |
thirdpartyEmail | Array | Nouveaux emails |
Requête
POST /api/v1/account/12345/dossiers/11111
Authorization: Bearer {access_token}
Content-Type: application/json
{
"dossierReference": "DOS-2024-001-V2",
"description": "Evaluation fournisseur IT - Mise a jour",
"expirationDate": "2026-06-30"
}Réponse
{
"content": {
"dossierId": 11111,
"updated": true
},
"messages": {
"info": ["Dossier updated successfully"],
"warning": [],
"error": []
}
}Télécharge un fichier associé à un document. Retourne le contenu binaire du fichier.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
accountId | Integer | Identifiant du compte |
dossierId | Integer | Identifiant du dossier |
documentId | Integer | Identifiant du document |
fileId | Integer | Identifiant du fichier |
Requête
GET /api/v1/account/12345/dossiers/11111/documents/22222/files/33333
Authorization: Bearer {access_token}Réponse
Content-Type: application/pdf
Content-Disposition: attachment; filename="kbis_fournisseur.pdf"
[Binary file content]Liste les documents requis configurés pour le compte.
Requête
GET /api/v1/account/12345/requirements
Authorization: Bearer {access_token}Réponse
{
"content": [
{
"documentCode": "KBIS",
"name": "Extrait Kbis",
"description": "Extrait d'immatriculation au RCS",
"validityPeriod": 90
},
{
"documentCode": "URSSAF",
"name": "Attestation URSSAF",
"description": "Attestation de vigilance URSSAF",
"validityPeriod": 180
},
{
"documentCode": "ASSURANCE",
"name": "Attestation d'assurance",
"description": "Attestation RC professionnelle",
"validityPeriod": 365
}
],
"messages": {
"info": [],
"warning": [],
"error": []
}
}Format de réponse standard
Toutes les réponses de l'API suivent une structure JSON standardisée :
{
"content": { /* Données de la réponse */ },
"messages": {
"info": [], // Messages d'information
"warning": [], // Avertissements
"error": [] // Erreurs
},
"page": 0, // Numéro de page (pagination)
"size": 20, // Taille de page
"totalElements": 0 // Nombre total d'éléments
}Types d'identifiants entreprise
| Code | Description | Format |
|---|---|---|
CIT001 | SIRET | 14 chiffres (établissement français) |
CIT002 | Numéro de TVA | Identifiant intracommunautaire (ex: FR12345678901) |
Indicateurs de conformité
| Code | Libellé | Description |
|---|---|---|
I001 | Obligation de vigilance | Indicateur de conformité au devoir de vigilance |
Raisons d'arrêt de dossier
| Code | Description |
|---|---|
OUTOFBUSINESS | Entreprise fermée ou radiée |
EXPIRATION | Dossier expiré |
STOPREQUEST | Arrêt demandé manuellement |
UNKNOWN | Raison inconnue |
Codes d'erreur HTTP
| Code | Statut | Description |
|---|---|---|
200 | OK | Requête traitée avec succès |
400 | Bad Request | Requête mal formée ou paramètres invalides |
401 | Unauthorized | Token manquant ou invalide |
403 | Forbidden | Accès refusé à la ressource |
404 | Not Found | Ressource non trouvée |
429 | Too Many Requests | Limite de requêtes dépassée |
500 | Internal Server Error | Erreur interne du serveur |
503 | Service Unavailable | Service temporairement indisponible |
Format des messages d'erreur
{
"timestamp": "2024-01-15T09:06:15.245+0000",
"status": 404,
"error": "Not Found",
"message": "Dossier not found with id: 99999",
"path": "/api/v1/account/12345/dossiers/99999"
}