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"