Skip to content

Sync (Bulk) ​

Recuperation progressive de tous les dossiers d'un CFA. Opcovia orchestre la discovery (GET etats) puis le fetch par batches de 50 dossiers.

Fonctionnement ​

POST /sync/dossiers → 202 { syncId }
    |
    v
  Discovery : GET /dossiers/etats → recupere tous les IDs
    |
    v
  Webhook sync.started { total }
    |
    v
  N batches de 50 : GET /dossiers/liste
    |
    v
  Webhook sync.batch { batch, dossiers } (a chaque batch)
    |
    v
  Webhook sync.completed { total, durationMs }

Les operations de sync utilisent une priorite basse et ne bloquent pas les requetes normales.

Cycle de vie complet d'un sync ​


POST /sync/dossiers ​

Lancer un bulk sync de dossiers.

Auth : X-API-KEY obligatoire.

Body (JSON) ​

json
{
  "opcoId": "opco-ep",
  "minYear": 2023,
  "enablePoller": true
}
ChampTypeRequisDescription
opcoIdstringOuiIdentifiant de l'OPCO
minYearnumberNonAnnee minimum des dossiers (defaut: toutes). Min: 2018.
enablePollerbooleanNonActiver le poller automatique apres le sync

Reponse 202 ​

json
{
  "syncId": "sync_abc123",
  "status": "pending",
  "statusUrl": "/sync/sync_abc123"
}

Exemple curl ​

bash
curl -X POST -H "X-API-KEY: votre-cle" \
  -H "Content-Type: application/json" \
  -d '{"opcoId": "opco-ep", "minYear": 2023}' \
  "https://api.opcovia.com/sync/dossiers"

GET /sync/:syncId ​

Statut et progression d'un bulk sync.

Auth : X-API-KEY obligatoire.

Reponse 200 ​

json
{
  "syncId": "sync_abc123",
  "opcoId": "opco-ep",
  "status": "processing",
  "total": 500,
  "discovered": 500,
  "fetched": 250,
  "progress": 0.75,
  "batchesCompleted": 5,
  "totalBatches": 10,
  "estimatedEnd": "2024-06-01T10:15:00.000Z",
  "error": null,
  "startedAt": "2024-06-01T10:00:00.000Z",
  "completedAt": null
}

Champs de reponse ​

ChampTypeDescription
syncIdstringIdentifiant du sync
opcoIdstringOPCO concerne
statusstringpending, processing, completed, failed, cancelled
totalnumberNombre total de dossiers
discoverednumberNombre de dossiers decouverts (phase discovery)
fetchednumberNombre de dossiers recuperes (phase fetch)
progressnumberProgression de 0 a 1 (discovery = 0-0.5, fetch = 0.5-1.0)
batchesCompletednumberBatches termines
totalBatchesnumberTotal de batches
estimatedEndstringEstimation de fin (ISO 8601)
errorstringMessage d'erreur si failed
startedAtstringDate de debut
completedAtstringDate de fin

Erreurs ​

Code HTTPCode erreurDescription
404NOT_FOUNDSync introuvable

Exemple curl ​

bash
curl -H "X-API-KEY: votre-cle" \
  "https://api.opcovia.com/sync/sync_abc123"

DELETE /sync/:syncId ​

Annuler un bulk sync en cours. Les syncs deja termines (completed, failed, cancelled) ne peuvent pas etre annules.

Auth : X-API-KEY obligatoire.

Reponse 200 (annulation reussie) ​

json
{
  "syncId": "sync_abc123",
  "status": "cancelled"
}

Reponse 200 (deja termine) ​

json
{
  "syncId": "sync_abc123",
  "status": "completed",
  "message": "Sync already terminated"
}

Erreurs ​

Code HTTPCode erreurDescription
404NOT_FOUNDSync introuvable

Exemple curl ​

bash
curl -X DELETE -H "X-API-KEY: votre-cle" \
  "https://api.opcovia.com/sync/sync_abc123"