Boîtes aux lettres et messages de synchronisation IMAP
Objectif : mettre en file d’attente les tâches de synchronisation IMAP et conserver les métadonnées des messages pour les flux de recherche et de lecture.
Flux d’interface utilisateur
- L’utilisateur sélectionne les informations d’identification et le dossier.
- L’interface utilisateur met en file d’attente la synchronisation des boîtes aux lettres ou la synchronisation des messages.
- L’interface utilisateur interroge les travaux/tâches pour connaître l’état du terminal.
- L’interface utilisateur actualise
/api/accounts/:account_id/emails.
Flux de bibliothèque client
const mailboxTask = await api.provider.imap.syncMailboxes(accountId, {
credential_id: imapCredentialId,
});
const messageTask = await api.provider.imap.syncMessages(accountId, {
credential_id: imapCredentialId,
folder: "INBOX",
});
await api.jobs.waitForTask(accountId, messageTask.data.task_id);
const emails = await api.emails.list(accountId, { limit: 20, offset: 0 });
Flux HTTP/curl
API_BASE_URL="https://api.inbox-manager.com"
curl -sS -X POST "${API_BASE_URL}/api/accounts/${ACCOUNT_ID}/imap/sync-mailboxes" \
-H "authorization: Bearer ${BEARER_TOKEN}" \
-H "content-type: application/json" \
--data "{\"credential_id\":\"${IMAP_CREDENTIAL_ID}\"}"
curl -sS -X POST "${API_BASE_URL}/api/accounts/${ACCOUNT_ID}/imap/sync-messages" \
-H "authorization: Bearer ${BEARER_TOKEN}" \
-H "content-type: application/json" \
--data "{\"credential_id\":\"${IMAP_CREDENTIAL_ID}\",\"folder\":\"INBOX\"}"
curl -sS "${API_BASE_URL}/api/accounts/${ACCOUNT_ID}/jobs?limit=20" \
-H "authorization: Bearer ${BEARER_TOKEN}"
curl -sS "${API_BASE_URL}/api/accounts/${ACCOUNT_ID}/emails?limit=20&offset=0" \
-H "authorization: Bearer ${BEARER_TOKEN}"
## Script de validation
scripts/provider_job_flow.sh