Documentation

Workflow documents fournisseurs (AP)

Traitez les documents AP avec un pipeline fixe a huit etapes, revue human-in-the-loop, commandes idempotentes et evenements P08.


POST/v1/workflows/ap/processPro

Le workflow fournisseurs (ap_document_v1) est un pipeline fixe pour les factures, bons de commande, bons de livraison et documents AP associes. Ce n'est pas un outil de creation de workflow generaliste: les etapes sont fixes et ne peuvent pas etre modifiees, reordonnees ou etendues.

Quand utiliser les points de terminaison d'extraction simples

Utilisez POST /v1/documents/extract ou POST /v1/documents/extract/file pour une extraction ponctuelle sans boucle de revue, audit detaille ni historique de correction.

Quand utiliser ap_document_v1

Utilisez ce workflow pour la revue human-in-the-loop, l'historique de correction, les commandes idempotentes approve/correct/reject/retry/resume, les evenements P08 et l'audit par execution.

Exigences du forfait

ForfaitPages maxExecutions/moisDocuments par lot
Pro101001 (pas encore disponible)
Business1001 00025 (pas encore disponible)
Hobby / Free / StarterBloqueBloqueBloque

Les executions par lot ne sont pas encore disponibles. Le quota de lot par forfait est modelise, mais aucun endpoint n'accepte plus d'un document par execution. Lancez une execution par document en attendant.

Etapes fixes du pipeline

Le workflow execute toujours ces huit etapes dans l'ordre:

  1. Capture - recevoir et valider le document source
  2. Pre-process - normaliser et preparer le document
  3. Classify and route - determiner le type de document et la route
  4. Extract - executer l'extraction AP ou e-invoice appropriee
  5. Enrich - executer l'enrichissement disponible ou l'ignorer avec raison
  6. Validate - verifier champs requis, totaux, taxes et raisons de revue
  7. Review or persist - creer l'etat de revue ou persister le resultat
  8. Emit events - ecrire les evenements internes et compatibles P08

Aucun selecteur de modele ou de fournisseur n'est expose dans l'UI, l'API ou le SDK.

Demarrer un workflow

Les petits documents peuvent repondre en mode synchrone (sync) s'ils restent dans les limites de pages, taille et budget de temps. Les executions plus grandes ou plus lentes passent en mode asynchrone (async) et se suivent par polling de statut.

curl -X POST "https://api.parsurai.com/v1/workflows/ap/process" \
  -H "X-API-Key: $PARSURAI_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -F "file=@invoice.pdf" \
  -F "review_policy=auto" \
  -F "preprocessing_policy=auto" \
  -F "persist_after_approval=true"

Polling for status

Interrogez GET /v1/workflows/ap/{workflow_run_id} jusqu'a un statut terminal.

StatutTerminalSignification
pendingNonExecution acceptee et mise en file
processingNonUne etape fixe est en cours
review_requiredNonApprobation, correction ou rejet requis
approvedNonApprobation acceptee, finalisation en cours
completedOuiWorkflow termine avec succes
rejectedOuiExecution rejetee par le reviseur
failedOuiUne etape requise a echoue

Handling review_required

curl -X POST "https://api.parsurai.com/v1/workflows/ap/2f0b6f4e-8b2b-4f7f-9c2d-3d58c9bb0f12/approve" \
  -H "X-API-Key: $PARSURAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"workflow_run_version": 1, "reason": "Verifie", "idempotency_key": "approve-2f0b6f4e-8b2b-4f7f-9c2d-3d58c9bb0f12-v1"}'
curl -X POST "https://api.parsurai.com/v1/workflows/ap/2f0b6f4e-8b2b-4f7f-9c2d-3d58c9bb0f12/correct" \
  -H "X-API-Key: $PARSURAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"workflow_run_version": 1, "corrections": [{"path": "invoice_number", "previous_value": "INV-001", "new_value": "INV-002", "reason": "Erreur OCR"}], "reason": "Numero corrige", "idempotency_key": "correct-2f0b6f4e-8b2b-4f7f-9c2d-3d58c9bb0f12-v1"}'
curl -X POST "https://api.parsurai.com/v1/workflows/ap/2f0b6f4e-8b2b-4f7f-9c2d-3d58c9bb0f12/reject" \
  -H "X-API-Key: $PARSURAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"workflow_run_version": 1, "reason": "Doublon", "idempotency_key": "reject-2f0b6f4e-8b2b-4f7f-9c2d-3d58c9bb0f12-v1"}'

Concurrence et versions obsoletes

Toutes les commandes incluent workflow_run_version. Si une autre action modifie l'execution en parallele, l'API renvoie 409 Conflict. Rechargez le statut et renvoyez la commande avec la version courante.

Idempotency

CommandePortee de la cleMeme requete rejoueeRequete differente avec meme cle
processTenant + workflow.process + clereponse stockeeworkflow_idempotency_conflict
approveTenant + commande + cleresultat stockeworkflow_idempotency_conflict
correctTenant + commande + cleresultat stockeworkflow_idempotency_conflict
rejectTenant + commande + cleresultat stockeworkflow_idempotency_conflict
retry / resumeTenant + commande + cleresultat stockeworkflow_idempotency_conflict

P08 event delivery

Transition de statutType d'evenement
vers review_requiredreview.required
Revue approuvee/corrigeereview.completed
vers completedworkflow.completed
vers failedworkflow.failed

Les donnees d'evenement ne contiennent pas d'octets bruts du document ni de reference interne de stockage.

Retry and resume

CommandeQuand l'utiliserEffet
retryExecution failed et etape retentableRelance l'etape echouee/courante depuis le debut
resumeExecution review_required ou pausee avec reprise possibleReprend a l'etape ou au checkpoint courant
curl -X POST "https://api.parsurai.com/v1/workflows/ap/2f0b6f4e-8b2b-4f7f-9c2d-3d58c9bb0f12/retry" \
  -H "X-API-Key: $PARSURAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"workflow_run_version": 3, "reason": "Fournisseur disponible", "idempotency_key": "retry-2f0b6f4e-8b2b-4f7f-9c2d-3d58c9bb0f12-v3"}'
curl -X POST "https://api.parsurai.com/v1/workflows/ap/2f0b6f4e-8b2b-4f7f-9c2d-3d58c9bb0f12/resume" \
  -H "X-API-Key: $PARSURAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"workflow_run_version": 4, "reason": "Revue terminee", "idempotency_key": "resume-2f0b6f4e-8b2b-4f7f-9c2d-3d58c9bb0f12-v4"}'

Limitations

  • Pas de creation de workflow generaliste; etapes fixes
  • Pas de selecteur de modele ou de fournisseur
  • Le stockage local des artefacts est limite au dev/test ou a un deploiement single-node explicite
  • La retention horizontale en production exige un stockage prive durable
  • Pas de garantie exactly-once; les cles d'idempotence protegent les relectures
  • Les limites mensuelles s'appliquent par forfait