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.
/v1/workflows/ap/processProLe 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
| Forfait | Pages max | Executions/mois | Documents par lot |
|---|---|---|---|
| Pro | 10 | 100 | 1 (pas encore disponible) |
| Business | 100 | 1 000 | 25 (pas encore disponible) |
| Hobby / Free / Starter | Bloque | Bloque | Bloque |
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:
- Capture - recevoir et valider le document source
- Pre-process - normaliser et preparer le document
- Classify and route - determiner le type de document et la route
- Extract - executer l'extraction AP ou e-invoice appropriee
- Enrich - executer l'enrichissement disponible ou l'ignorer avec raison
- Validate - verifier champs requis, totaux, taxes et raisons de revue
- Review or persist - creer l'etat de revue ou persister le resultat
- 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.
| Statut | Terminal | Signification |
|---|---|---|
pending | Non | Execution acceptee et mise en file |
processing | Non | Une etape fixe est en cours |
review_required | Non | Approbation, correction ou rejet requis |
approved | Non | Approbation acceptee, finalisation en cours |
completed | Oui | Workflow termine avec succes |
rejected | Oui | Execution rejetee par le reviseur |
failed | Oui | Une 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
| Commande | Portee de la cle | Meme requete rejouee | Requete differente avec meme cle |
|---|---|---|---|
process | Tenant + workflow.process + cle | reponse stockee | workflow_idempotency_conflict |
approve | Tenant + commande + cle | resultat stocke | workflow_idempotency_conflict |
correct | Tenant + commande + cle | resultat stocke | workflow_idempotency_conflict |
reject | Tenant + commande + cle | resultat stocke | workflow_idempotency_conflict |
retry / resume | Tenant + commande + cle | resultat stocke | workflow_idempotency_conflict |
P08 event delivery
| Transition de statut | Type d'evenement |
|---|---|
vers review_required | review.required |
| Revue approuvee/corrigee | review.completed |
vers completed | workflow.completed |
vers failed | workflow.failed |
Les donnees d'evenement ne contiennent pas d'octets bruts du document ni de reference interne de stockage.
Retry and resume
| Commande | Quand l'utiliser | Effet |
|---|---|---|
retry | Execution failed et etape retentable | Relance l'etape echouee/courante depuis le debut |
resume | Execution review_required ou pausee avec reprise possible | Reprend 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