Tous les endpoints GET / POST / PUT / DELETE disponibles, regroupés par section.
Base URL : https://sawalismartsystems.com/api. Authentification via token JWT (header Authorization: Bearer <token>) pour les routes /me/* et /admin/*.
/api/cashier/products/generate-icon/api/docs/api/openapi.json/api/redoc/api/amm/api/amm/api/amm/by-product/{vidal_product_id}/api/amm/import-csvImport en masse depuis un CSV.
/api/amm/{amm_id}/api/amm/{amm_id}/api/admin/access-logs/api/admin/access-logs/export.csv/api/admin/api-traces/api/admin/api-traces/api/admin/api-traces/export.csv/api/admin/appointments/api/admin/appointments/{appt_id}/api/admin/appointments/{appt_id}/api/admin/automations/api/admin/automations/api/admin/automations/events/api/admin/automations/{aid}/api/admin/automations/{aid}/api/admin/blacklisted-ips/api/admin/blacklisted-ips/api/admin/blacklisted-ips/{ip_id}/api/admin/blog/api/admin/blog/api/admin/blog/{post_id}/api/admin/blog/{post_id}/api/admin/blog/{post_id}/api/admin/campaign-efficiency/api/admin/case-studies/api/admin/case-studies/api/admin/case-studies/{cs_id}/api/admin/case-studies/{cs_id}/api/admin/client-categories/api/admin/client-categories/api/admin/client-categories/{cat_id}/api/admin/client-categories/{cat_id}/api/admin/client-data-diagnostic/api/admin/clientsList all users that should be visible in the Admin → Clients module.
/api/admin/clients/api/admin/clients-consistencyVue panoramique de chaque entreprise multi-utilisateur et indique si tous ses membres
/api/admin/clients-consistency/realign-allIter38r-fix9h — Réaligne d'un seul clic tous les utilisateurs détectés
/api/admin/clients/{client_id}/api/admin/clients/{client_id}/api/admin/clients/{client_id}/api/admin/clients/{client_id}/features/api/admin/clients/{client_id}/features/api/admin/clients/{client_id}/notes/api/admin/clients/{client_id}/notes/api/admin/clients/{client_id}/notes/{nid}/api/admin/clients/{client_id}/set-primaryDesignate ONE client as the primary site owner.
/api/admin/clients/{client_id}/tasks/api/admin/clients/{client_id}/tasks/api/admin/clients/{client_id}/tasks/{tid}/api/admin/clients/{client_id}/tasks/{tid}/api/admin/clients/{client_id}/timelineUnified CRM timeline for a client — aggregates events from 7 collections.
/api/admin/clients/{client_id}/unset-primary/api/admin/clients/{client_id}/whatsapp-costMet à jour le coût WhatsApp unitaire (par message sortant) pour un client.
/api/admin/clients/{client_id}/whatsapp-statsWhatsApp consumption summary for a client: messages sent OK/KO,
/api/admin/contacts/api/admin/contacts/revert-retagRestore `client_id ← client_id_legacy` on every row where the legacy
/api/admin/contacts/{contact_id}/save-as-tracked-user/api/admin/content/{slug}/api/admin/content/{slug}/api/admin/content/{slug}/translate/api/admin/db/api/admin/db/{collection}Generic JSON query over any whitelisted collection.
/api/admin/demo/expiry-eventsDemo accounts that have expired — admin reviews and decides:
/api/admin/demo/expiry-events/{ev_id}/resolve/api/admin/deployments/api/admin/deployments/api/admin/deployments/{dep_id}/api/admin/deployments/{dep_id}/api/admin/document-categories/api/admin/document-categories/api/admin/document-categories/{cat_id}/api/admin/document-categories/{cat_id}/api/admin/document-logsRenvoie l'historique combiné upload + download. Admin uniquement.
/api/admin/documents/api/admin/documents/api/admin/documents/{doc_id}/api/admin/documents/{doc_id}/api/admin/files/backfillFor every file row that has its binary on disk but no `storage_path`,
/api/admin/files/orphansList file rows that are unrecoverable (disk gone + no remote copy).
/api/admin/formations/api/admin/formations/api/admin/formations/{fid}/api/admin/formations/{fid}/api/admin/formations/{fid}/enrollments/api/admin/formations/{fid}/enrollments/{user_id}/credits/api/admin/formations/{fid}/enrollments/{user_id}/state/api/admin/formations/{fid}/modules/api/admin/formations/{fid}/modules/api/admin/formations/{fid}/modules/{mid}/api/admin/formations/{fid}/modules/{mid}/api/admin/google/auth-url/api/admin/google/callback/api/admin/google/disconnect/api/admin/health-stats/api/admin/health/auth-check/api/admin/health/auth-check/history/api/admin/health/auth-check/latest/api/admin/health/run-weekly-now/api/admin/health/test-email/api/admin/health/uptime/run-now/api/admin/health/uptime/stats/api/admin/incident-subscribers/api/admin/incident-subscribers/{sub_id}/api/admin/incidents/api/admin/incidents/export.csv/api/admin/incidents/{incident_id}/api/admin/interventions/api/admin/interventions/api/admin/interventions/{int_id}/api/admin/interventions/{int_id}/api/admin/interventions/{int_id}/unlock-invoiceIter43-fix4 — Force unlock d'une intervention facturée (admin OU superviseur).
/api/admin/invoices/from-interventions/{inv_id}Iter43-fix6 — Renseigne la date/heure de dépôt OU de paiement d'une
/api/admin/liluvine-escalation/test/api/admin/liluvine/remote-linkGénère un lien signé longue durée pour contrôler le seuil et le niveau Liluvine
/api/admin/llm-healthAdmin/Superviseur can read the state. The frontend banner uses an
/api/admin/llm-health/pingForce a fresh health probe (admin button).
/api/admin/llm-health/reset-staleIter43-fix (2026-03) — Efface manuellement les `current_cost` /
/api/admin/llm-health/test-summaryS033 — Manual budget test: forces a health probe AND returns the
/api/admin/llm-health/usage-chartS-iter39n — Daily consumption chart for the Universal Key.
/api/admin/messaging/audienceReturn all contactable recipients (clients with phone/whatsapp + tracked users with phone).
/api/admin/messaging/bulk-sendEnvoie le même modèle WhatsApp à une liste de destinataires. Renvoie un résultat par destinataire.
/api/admin/messaging/history/api/admin/messaging/schedules/api/admin/messaging/schedules/api/admin/messaging/schedules/{sid}/api/admin/messaging/variable-tokensListe des tokens de substitution que l'admin peut insérer dans les variables de modèle.
/api/admin/meta/config/api/admin/meta/config/api/admin/meta/tracked-roles/api/admin/migrate-orphan-dataInspecte ce que la migration iter28 des données orphelines FERAIT (sans écritures).
/api/admin/migrate-orphan-dataApplique la migration iter28 des données orphelines. Idempotent — relancer ne
/api/admin/newsletter/api/admin/newsletter/exportExport CSV de tous les abonnés (séparateur virgule).
/api/admin/newsletter/{sub_id}/api/admin/note-service/historyAggregate the last N Note de Service broadcasts, grouped by source note.
/api/admin/note-service/{note_id}/retry-failedResend a Note de Service ONLY to recipients whose previous attempt
/api/admin/pawapay/callback-urlsIter38r-fix2 — Renvoie les 2 URLs de callback à coller dans le dashboard PawaPay
/api/admin/policiesRenvoie les 3 slots de politique fixes avec leurs métadonnées + URL de partage public.
/api/admin/policies/{slot}/api/admin/policies/{slot}/upload/api/admin/profile-requestsIter34l — Liste les demandes de mise à jour de profil soumises par les utilisateurs.
/api/admin/profile-requests/{req_id}Iter34l — Marque une demande de mise à jour de profil comme traitée (ou en attente)
/api/admin/realign-user-to-clientApplique le realign_plan renvoyé par /admin/client-data-diagnostic.
/api/admin/resolve-companyRésout le client canonique pour un nom d'entreprise donné.
/api/admin/rgpd-preview/{client_id}Prévisualise ce qu'un utilisateur non-privilégié de `client_id` verrait dans son
/api/admin/roadmap-actionsListe toutes les actions de la roadmap triées par code croissant. Initialisée au 1er appel.
/api/admin/roadmap-actionsAdmin-driven creation of a pending action. Auto-numbered. Default
/api/admin/roadmap-actions/{code}Admins can edit `observations`, `done`/`status`, and (for their own
/api/admin/roadmap-actions/{code}Only admin-created (non-seed) entries can be deleted to keep the
/api/admin/secrets/auditAudit trail of every vault export/import action.
/api/admin/secrets/change-auditAudit trail of vault-tracked key changes (no values, only fingerprints).
/api/admin/secrets/exportExport an AES-256-GCM encrypted bundle of every vaultable setting.
/api/admin/secrets/importRestore a previously-exported vault.
/api/admin/secrets/keysListe les clés de paramètres sauvegardées par le coffre, et lesquelles sont
/api/admin/settings/api/admin/settings/api/admin/settings/test-url/api/admin/sms/dashboard/api/admin/sms/testSend a test SMS using a chosen provider — surfaces the full HTTP response
/api/admin/snapshotsListe tous les instantanés triés par created_at décroissant.
/api/admin/snapshotsCrée un nouvel instantané de toutes les collections métier.
/api/admin/snapshots/auto-runTrigger the weekly auto-snapshot logic immediately (manual).
/api/admin/snapshots/importImporte un fichier instantané. mode = 'replace' | 'merge'. dry_run='true' pour
/api/admin/snapshots/imports/api/admin/snapshots/weekly-report-previewRender the weekly health-report PDF on-demand. Useful for the admin
/api/admin/snapshots/{snap_id}/api/admin/snapshots/{snap_id}/api/admin/snapshots/{snap_id}/download/api/admin/subscriptions/categories/api/admin/subscriptions/categories/api/admin/subscriptions/categories/{cat_id}/api/admin/subscriptions/categories/{cat_id}/api/admin/subscriptions/orders/api/admin/subscriptions/plans/api/admin/subscriptions/plans/api/admin/subscriptions/plans/{plan_id}/api/admin/subscriptions/plans/{plan_id}/api/admin/suggestions-registry/api/admin/support-load/api/admin/testimonials/api/admin/testimonialsCréation manuelle d'un témoignage par l'admin.
/api/admin/testimonials/request/{appt_id}Génère/regénère un feedback_token pour un RDV (le admin peut ensuite copier le lien et l'envoyer).
/api/admin/testimonials/{tid}Modère ou modifie un témoignage. Champs supportés : status, comment, client_name,
/api/admin/testimonials/{tid}/api/admin/tracked-users/api/admin/tracked-users/api/admin/tracked-users/bulk-transfer/api/admin/tracked-users/{tu_id}/api/admin/tracked-users/{tu_id}/api/admin/tracked-users/{tu_id}/revoke-password/api/admin/tracked-users/{tu_id}/set-passwordProvisionne (ou réinitialise) un identifiant pour un utilisateur suivi.
/api/admin/upload/api/admin/usage/sms-providers/api/admin/usage/summaryAggregate usage metrics per client over the last N days.
/api/admin/user-activityRenvoie :
/api/admin/user-activity/heatmapRenvoie une grille 7×24 des compteurs de hits (lignes = jours de semaine 0..6 Lun→Dim,
/api/admin/visits/api/admin/visits/resetResets the publicly displayed visits counter to zero (real visits
/api/admin/visits/stats/api/admin/whatsapp/silence-alertsListe les alertes de silence passées (piste d'audit).
/api/admin/whatsapp/silence-checkManually run the WhatsApp silence detector (also runs every 4h via cron).
/api/admin/whatsapp/template-notes/api/admin/whatsapp/template-notes/{name}/api/admin/whatsapp/template-notes/{name}/api/admin/whatsapp/templatesListe tous les modèles du WABA configuré + fusionne les notes admin (description + disponibilité).
/api/admin/whatsapp/templatesSubmit a new template to Meta for approval.
/api/admin/whatsapp/templates/{name}Supprime un modèle par nom (supprime TOUTES les langues de ce nom sur le WABA).
/api/admin/whatsapp/test-configValidate Meta credentials by probing Graph API for WABA + phone number.
/api/admin/whatsapp/token-healthIter43-fix3 (2026-03) — Diagnostic du token WhatsApp Cloud API.
/api/admin/whatsapp/webhook-logsIter35a — Read the last `limit` raw webhook payloads received from
/api/admin/whatsapp/webhook-logsPurge all stored webhook payloads.
/api/admin/whatsapp/webhook-subscribeIter43-fix16 — Re-souscrire l'app Meta au WABA pour rétablir le
/api/admin/whatsapp/webhook-subscriptionIter43-fix16 (2026-06) — Diagnostic de la souscription du webhook Meta.
/api/integrations/build-link/api/integrations/link-actionsListe les actions deep-link supportées pour le dropdown admin UI.
/api/admin/ai-subscriptions/api/admin/ai-subscriptions/api/admin/ai-subscriptions/{sub_id}/api/admin/ai-subscriptions/{sub_id}/api/admin/ai-subscriptions/{sub_id}/send-reminder/api/admin/ad-banners/api/admin/ad-banners/api/admin/ad-banners/fix-urls/api/admin/ad-banners/run-reminder-cron/api/admin/ad-banners/{banner_id}/api/admin/ad-banners/{banner_id}/api/admin/ad-banners/{banner_id}/rotate-tokenRegenerate the share_token (invalidates previously shared URLs).
/api/admin/ad-banners/{banner_id}/stats/api/admin/ad-banners/{banner_id}/toggle-paid/api/admin/ad-renewal-requests/api/admin/ad-renewal-requests/{req_id}/mark-handled/api/admin/wa-demo/recent/api/admin/wa-demo/{user_id}/mark-seen/api/admin/gdpr/anonymize-now/api/admin/liluvine-weekly-digest/run-now/api/admin/wa-tasks-digest/run-now/api/admin/coupons/api/admin/coupons/api/admin/coupons/{coupon_id}/api/admin/coupons/{coupon_id}/api/admin/docs/regenerate/{slug}/api/admin/ai-costs/monthly/api/admin/clients/{client_id}/ai-quota/api/admin/clients/{client_id}/ai-quota/api/admin/clients/{client_id}/ai-usage/api/admin/clients/{client_id}/ai-usage/export.csv/api/admin/clients/{client_id}/ai-usage/export.pdf/api/admin/incidents-webhook/api/admin/incidents-webhook/password/api/admin/incidents-webhook/regenerate-password/api/admin/contacts/repair-user-contact/api/admin/liluvine-pro/branding/api/admin/liluvine-pro/branding/api/admin/liluvine-pro/bypass-emails/api/admin/liluvine-pro/bypass-emails/api/admin/liluvine-pro/coverage-gapsRenvoie les messages image utilisateur dont le meilleur match Qdrant est sous
/api/admin/liluvine-pro/diagnose/api/admin/liluvine-pro/generate-doc-draft/api/admin/liluvine-pro/inbound-urls/api/admin/liluvine-pro/kb/api/admin/liluvine-pro/kb/api/admin/liluvine-pro/kb/ocr-usageIter38r-fix9k — Monthly OCR usage report (pages + XOF cost).
/api/admin/liluvine-pro/kb/uploadIter38r-fix9i — `force_ocr` (form, optional) :
/api/admin/liluvine-pro/kb/{eid}/api/admin/liluvine-pro/kb/{eid}/api/admin/liluvine-pro/module-acl/api/admin/liluvine-pro/module-acl/api/admin/liluvine-pro/screenshots-historyListe les captures d'écran envoyées par les clients à Liluvine PRO via
/api/admin/liluvine-pro/sessions-history/api/admin/liluvine-pro/sessions/{sid}/release/api/admin/liluvine-pro/sessions/{sid}/takeover/api/admin/liluvine-pro/system-prompt/api/admin/liluvine-pro/system-prompt/api/admin/liluvine-pro/top-screensAggregate the most-matched SAWALI screens across all client
/api/admin/liluvine-pro/wa-autoreply/api/admin/liluvine-pro/wa-autoreply/api/admin/liluvine-pro/wa-autoreply/history/api/admin/media-library/api/admin/media-library/api/admin/media-library/{mid}/api/admin/media-library/{mid}/api/admin/officine-otp/test/api/admin/officine-activities/api/admin/officine-activities/api/admin/officines-registry/api/admin/officines-registry/import-csvImport en masse des officines depuis un fichier CSV.
/api/admin/officines-registry/import-to-contactsImporte une sélection d'officines dans le répertoire de contacts du
/api/admin/officines-registry/{officine_id}/api/admin/officines-registry/{officine_id}Mise à jour d'une fiche officine. Champs autorisés : name (=code),
/api/admin/officines-registry/{officine_id}/approve/api/admin/officines-registry/{officine_id}/link-client/api/admin/officines-registry/{officine_id}/products/api/admin/officines-registry/{officine_id}/products/api/admin/officines-registry/{officine_id}/products/export.csv/api/admin/officines-registry/{officine_id}/products/importImport en masse de produits pour une officine (CSV ou JSON).
/api/admin/officines-registry/{officine_id}/reactivate/api/admin/officines-registry/{officine_id}/suspend/api/admin/officines-registry/{officine_id}/unlink-client/api/admin/officines-registry/{officine_id}/upload-logoUpload du logo d'une officine. Stocke le fichier sous /uploads/officines/.
/api/admin/qdrant/collections/api/admin/qdrant/collections/api/admin/qdrant/collections/{name}/api/admin/qdrant/collections/{name}Met à jour les métadonnées de la collection (enabled_for_liluvine, description).
/api/admin/qdrant/collections/{name}/points/api/admin/qdrant/collections/{name}/points/imageS041 + P1 (2026-02) — Upload an image, save it in the media
/api/admin/qdrant/collections/{name}/points/pdf/api/admin/qdrant/collections/{name}/points/text/api/admin/qdrant/collections/{name}/points/url/api/admin/qdrant/collections/{name}/points/{pid}/api/admin/qdrant/collections/{name}/search/api/admin/qdrant/migrate-mongo-kbOne-shot migration : pull all entries from `liluvine_kb_entries`
/api/admin/qdrant/storageS041 — Total estimated Qdrant disk usage vs cluster quota.
/api/admin/qdrant/test-connection/api/admin/error-registry/migrate-from-tickets/api/admin/story-studio/generate/text-to-imageGénère une image (Nano Banana via Universal Key) en format 9:16.
/api/admin/story-studio/generate/text-to-videoGénère une vidéo à partir d'un prompt texte. Synchrone (jusqu'à 10 min).
/api/admin/story-studio/library/api/admin/story-studio/library/{asset_id}/api/admin/story-studio/library/{asset_id}/api/admin/story-studio/library/{asset_id}/media/api/admin/story-studio/library/{asset_id}/publishPublie une vidéo générée vers les réseaux sociaux sélectionnés.
/api/admin/story-studio/library/{asset_id}/signed-mediaEndpoint PUBLIC (signé par JWT court terme) — utilisé par Meta pour
/api/admin/story-studio/library/{asset_id}/whatsapp-shareRenvoie un deep link WhatsApp pour partager l'asset sur le mobile admin.
/api/admin/story-studio/oauth/meta/callbackEndpoint PUBLIC appelé par Meta après authentification utilisateur.
/api/admin/story-studio/oauth/meta/startGénère l'URL d'autorisation Meta. Le front l'utilise pour rediriger.
/api/admin/story-studio/oauth/tiktok/callback/api/admin/story-studio/oauth/tiktok/start/api/admin/story-studio/posts/api/admin/story-studio/posts/{post_id}/insightsRécupère likes/reach/impressions pour chaque cible d'un post publié.
/api/admin/story-studio/posts/{post_id}/publish-now/api/admin/story-studio/scheduler/tickEndpoint à appeler par un cron externe (ex: every 5min) qui passe les
/api/admin/story-studio/settingsRécupère la config globale Story Studio. Masque les secrets.
/api/admin/story-studio/settingsMet à jour la config globale. Si une valeur secrète est `null` OU
/api/admin/story-studio/social-accounts/api/admin/story-studio/social-accounts/manualIter43-fix10 — Saisie manuelle d'un token (mode dev). Phase 2
/api/admin/story-studio/social-accounts/{account_id}/api/admin/story-studio/social-accounts/{account_id}/pages/{page_id}Active/désactive une Page (page reste connue mais ignorée des publications).
/api/admin/story-studio/social-accounts/{account_id}/refreshRe-fetch les Pages et IG accounts d'un compte Meta connecté.
/api/admin/story-studio/billing/invoices/{invoice_id}/statusMarque une facture comme payée / annulée / en attente.
/api/admin/story-studio/billing/summaryVue agrégée : total crédits en circulation, factures du mois, top consommateurs.
/api/admin/story-studio/billing/tenantsListe tous les tenants ayant déjà une config billing OU au moins un social_account.
/api/admin/story-studio/billing/tenants/{tenant_id}/config/api/admin/story-studio/billing/tenants/{tenant_id}/config/api/admin/story-studio/billing/tenants/{tenant_id}/credits/topupAjoute des crédits manuellement (admin only). Pour un topup via
/api/admin/story-studio/billing/tenants/{tenant_id}/invoices/api/admin/story-studio/billing/tenants/{tenant_id}/ledger/api/admin/stripe/webhook-events/api/admin/synthese/test/api/admin/officines/test-connectionIter41 Phase 4b — Diagnostic verbose pour l'API Officines.
/api/admin/officines/usageRenvoie l'usage de l'API officines : top recherches, consommation publique !aizenta.
/api/admin/vidal/cache/api/admin/vidal/config/api/admin/vidal/config/api/admin/vidal/test-connectionPings VIDAL with a cheap call to validate credentials and base URL.
/api/admin/vidal/usageRenvoie l'usage VIDAL agrégé pour les `days` derniers jours.
/api/admin/voice-notifications/catalog/api/admin/voice-notifications/config/api/admin/voice-notifications/config/api/admin/voice-notifications/custom-events/api/admin/voice-notifications/custom-events/{event_key}/api/admin/voice-notifications/log/api/admin/voice-notifications/rules/api/admin/voice-notifications/rules/{event_key}/api/admin/voice-notifications/test/api/admin/wa-otp/test/api/admin/i18n/translate-empty-bulk/api/admin/i18n/translate-models/api/admin/i18n/translate-suggest/api/admin/i18n/translations/api/admin/i18n/translations/api/admin/i18n/translations.csv/api/admin/i18n/translations/bulk/api/admin/i18n/translations/import-csv/api/admin/i18n/translations/{key}/api/admin/i18n/translator-scoreDaily / monthly word counters + payable amount.
/api/auth/wa-otp/request/api/auth/wa-otp/verify/api/auth/captcha-config/api/auth/change-password/api/auth/login/api/auth/me/api/auth/resend-otp/api/auth/verify-otp/api/admin/business-clients/api/admin/business-clients/api/admin/business-clients/{cid}/api/admin/business-clients/{cid}/api/admin/cashier/backfill-tenantsRecompute tenant_id on all Caisse docs using the latest resolution logic.
/api/admin/cashier/qr/rewrite-base-url/api/admin/legal-forms/api/admin/legal-forms/{lid}/api/admin/payment-methods/api/admin/payment-methods/{pid}/api/admin/payment-methods/{pid}/api/admin/product-categories/api/admin/product-categories/{cid}/api/admin/products/api/admin/products/api/admin/products/{pid}/api/admin/products/{pid}/api/admin/users/can-cash/api/admin/users/{uid}/can-cash/api/cashier/auto-relance/settings/api/cashier/auto-relance/settings/api/cashier/exports/invoices.csv/api/cashier/exports/invoices.pdf/api/cashier/exports/receipts.csv/api/cashier/exports/receipts.pdf/api/cashier/import/business-clients/api/cashier/import/business-clients/fields/api/cashier/import/products/api/cashier/import/products/fields/api/cashier/invoices/api/cashier/invoices/api/cashier/invoices/{iid}/api/cashier/invoices/{iid}/api/cashier/invoices/{iid}/api/cashier/invoices/{iid}/duplicate/api/cashier/invoices/{iid}/pdf/api/cashier/invoices/{iid}/qr.png/api/cashier/invoices/{iid}/receiptExplicit receipt generation for an ALREADY-paid invoice (reprint).
/api/cashier/invoices/{iid}/restore/api/cashier/invoices/{iid}/send-whatsapp/api/cashier/kpis/api/cashier/legal-forms/api/cashier/overdue/count/api/cashier/overdue/relance/api/cashier/overdue/relance-auto-runIter36y — Trigger the auto-relance flow manually (admin/superviseur).
/api/cashier/overdue/relance-history/api/cashier/product-categories/api/cashier/receipts/api/cashier/receipts/api/cashier/receipts/{rid}/api/cashier/receipts/{rid}/api/cashier/receipts/{rid}/pdf/api/cashier/receipts/{rid}/qr.png/api/cashier/receipts/{rid}/restore/api/cashier/receipts/{rid}/send-whatsapp/api/cashier/tenant-info/api/payment-methods/api/public/invoice-pdf/{token}/api/public/receipt-pdf/{token}/api/public/verify/{token}/api/cashier/expenses/api/cashier/expenses/api/cashier/expenses/employees-listIter38m — Lightweight list of employees of the current tenant for the
/api/cashier/expenses/me/dashboard-cardSum of MY unjustified expenses + those late-unjustified.
/api/cashier/expenses/monthly-summary/api/cashier/expenses/{eid}Iter38o — Edit allowed if NOT justified (clôturée):
/api/cashier/expenses/{eid}/api/cashier/expenses/{eid}/justifyJustifies an expense. Refused if past the deadline (unless admin uses force=true).
/api/cashier/expenses/{eid}/unjustifyAdmin only — revert justification (e.g. mistake).
/api/me/chat/clients/api/me/chat/media/{msg_id}/api/me/chat/messages/{msg_id}/read/api/me/chat/search/api/me/chat/transcribe/api/me/chat/unread-count/api/me/chat/{client_id}/members/api/me/chat/{client_id}/messages/api/me/chat/{client_id}/messages/api/me/chat/{client_id}/messages/photo/api/me/chat/{client_id}/threads/api/me/chat/{client_id}/threads/{thread_key}/mark-all-readMarque en masse tous les messages d'un thread comme lus pour l'utilisateur courant.
/api/public/team-presence/api/api-routesListe tous les endpoints disponibles (pour la page /api-docs).
/api/files/{file_path:path}Iter38r-fix8 — Endpoint proxy servant les fichiers depuis Emergent Object Storage.
/api/me/form-categories/api/me/form-categories/api/me/form-categories/{cid}/api/me/form-categories/{cid}/api/me/form-categories/{cid}/set-default/api/me/formsListe les formulaires : tous ceux du client de l'utilisateur + tous les formulaires publics d'autres clients.
/api/me/forms/api/me/forms-analyticsAnalyses globales sur tous les formulaires visibles par l'utilisateur.
/api/me/forms/title-suggestions/api/me/forms/{form_id}/api/me/forms/{form_id}/api/me/forms/{form_id}/api/me/forms/{form_id}/analytics/api/me/forms/{form_id}/analytics/export.csvCSV export of all submissions for a form (flat answers + metadata).
/api/me/forms/{form_id}/importDuplicate a public form into the current client's scope (numbered & owned by them).
/api/me/forms/{form_id}/submissionRenvoie la soumission de l'utilisateur courant pour le formulaire (ou un stub vide).
/api/me/forms/{form_id}/submission/api/me/forms/{form_id}/submissionsListe toutes les soumissions d'un formulaire — propriétaire/admin uniquement.
/api/me/forms/{form_id}/submissions-table/api/me/forms/{form_id}/uploadPer-form file attachment uploader (max 1 Mo). Used by the new "file" field
/api/hr/absences/api/hr/absences/api/hr/absences/scanAuto-detect business days in month with no access_logs entry.
/api/hr/absences/{aid}/api/hr/absences/{aid}/api/hr/absences/{aid}/approveIter40 — Approuve une absence (typiquement une requête !absence WA).
/api/hr/absences/{aid}/rejectIter40 — Refuse une absence en attente : suppression + réactivation de l'utilisateur.
/api/hr/advances/api/hr/advances/api/hr/advances/{aid}/api/hr/advances/{aid}/approveIter40 — Approve a pending advance (typically WA-issued).
/api/hr/advances/{aid}/rejectIter40 — Reject (delete) a pending advance.
/api/hr/advances/{aid}/repay/api/hr/allowances/{aid}/api/hr/allowances/{aid}/api/hr/bonuses/{bid}/api/hr/bonuses/{bid}/api/hr/dashboard/monthly-presenceTop 10 employees by accumulated hours for the given month.
/api/hr/dashboard/weekly-presenceTop 5 active employees this calendar week (Mon-Sun, UTC).
/api/hr/eligible-users/api/hr/employees/api/hr/employees/api/hr/employees/backfill-matriculesIter38c — Assign auto-generated matricule to employees missing one (tenant-scoped).
/api/hr/employees/{eid}/api/hr/employees/{eid}/api/hr/employees/{eid}/allowances/api/hr/employees/{eid}/allowances/api/hr/employees/{eid}/apply-catalog/{cid}0-3 — Applique un modèle de catalogue à un employé. Pour les indemnités,
/api/hr/employees/{eid}/bonuses/api/hr/employees/{eid}/bonuses/api/hr/employees/{eid}/payslip/api/hr/employees/{eid}/payslip.pdf/api/hr/employees/{eid}/restore/api/hr/employees/{eid}/timesheet/api/hr/employees/{src_eid}/copy-pay-items/api/hr/holidays/api/hr/holidays/api/hr/holidays/importImporte les jours fériés à date fixe connus pour l'année/pays donnés.
/api/hr/holidays/{hid}/api/hr/holidays/{hid}/api/hr/pay-catalog/api/hr/pay-catalog/api/hr/pay-catalog/{cid}/api/hr/pay-catalog/{cid}/api/hr/settings/api/hr/settings/api/hr/taxes/api/hr/taxesReplace the tenant's taxes (max 5).
/api/meta/webhookIter38r-fix3 — Accepts either `meta_webhook_verify_token`
/api/meta/webhookIter38r-fix3 — Detects WhatsApp Cloud payloads
/api/officines/lookup/api/officines-portal/auth/magic-callback/api/officines-portal/auth/magic-link/api/officines-portal/auth/request-otp/api/officines-portal/auth/verify-otp/api/officines-portal/history/api/officines-portal/history/export.csv/api/officines-portal/inventory/api/officines-portal/inventory/api/officines-portal/inventory/export.csv/api/officines-portal/inventory/lookup-ammCherche dans `amm_numbers` un produit correspondant au CIP scanné
/api/officines-portal/inventory/{item_id}/api/officines-portal/inventory/{item_id}/api/officines-portal/me/api/officines-portal/me/regenerate-secret/api/officines-portal/register/api/officines-registry/{officine_id}/logo/api/public/officines/registerLets an officine declare its inventory. The body must be HMAC-signed
/api/me/meetings/api/me/meetings/api/me/meetings/{mid}/api/me/meetings/{mid}/api/me/meetings/{mid}/api/me/meetings/{mid}/pdf/api/me/meetings/{mid}/sign/api/me/meetings/{mid}/unsign/api/webhook/stripeStripe webhook. Verifies signature, then finalises either a paid
/api/me/access-logEnregistre un accès à une page du portail. Appelé par la SPA à chaque changement de route.
/api/me/account/api/me/account-detailIter34k — Read-only account profile shown in the user-menu "Mon
/api/me/admin-clientsLe client Primaire (Superviseur) voit tous les autres clients ayant le rôle 'admin'.
/api/me/admin-clients/{target_id}/api/me/ai/summariesListe les résumés IA sauvegardés de l'utilisateur appelant (les admins voient tout,
/api/me/ai/summaries/{sid}/api/me/ai/summaries/{sid}/to-reportConvertit un résumé IA sauvegardé en Rapport (ou en Suivi si un client_id est
/api/me/ai/summarize/api/me/api-traceRecords one API call from the frontend (mutations only, set up by the axios interceptor).
/api/me/appointmentsAll users belonging to the same client see the same set of RDV.
/api/me/appointments/api/me/appointments/{appt_id}Client may edit their own upcoming appointments (pending/confirmed).
/api/me/appointments/{appt_id}/api/me/brandingRenvoie le branding à afficher dans la sidebar du portail connecté.
/api/me/catalog/export.csv/api/me/catalog/history/api/me/catalog/quotes/mark-treated/api/me/catalog/stats/api/me/clientsListe client minimale pour utilisateurs élevés (utilisée dans les formulaires suivis/intervention).
/api/me/clients-rosterRenvoie une liste publique-sûre de clients servant à peupler le dropdown entreprise
/api/me/contact-inboxInbox of messages submitted via the public contact form.
/api/me/contactsListe TOUS les contacts dans le scope du client de l'utilisateur.
/api/me/contacts/api/me/contacts/export.csvIter34w — Export the directory as CSV (Excel-compatible, UTF-8 BOM).
/api/me/contacts/export.json/api/me/contacts/export.pdfIter34w — Generate a PDF listing of the visible directory (ReportLab).
/api/me/contacts/import-cross-tenantCrée un contact dans le scope du tenant de l'appelant depuis n'importe quel
/api/me/contacts/search-cross-tenantRecherche un numéro de téléphone à travers TOUS les tenants. Renvoie une fiche
/api/me/contacts/{cid}/api/me/contacts/{cid}/api/me/contacts/{cid}/active-ticketConvenience: returns the non-closed ticket for a contact (if any).
/api/me/contacts/{cid}/messagesRenvoie la conversation WhatsApp complète pour un contact de l'annuaire.
/api/me/contacts/{cid}/messages/mark-readMarque tous les messages WA entrants d'un contact donné comme lus (fixe read_by_us_at).
/api/me/contacts/{cid}/photoUpload a profile picture for a contact (à la WhatsApp avatar). Stored in
/api/me/contacts/{cid}/photoRemove a contact's profile picture (sets photo_url to null).
/api/me/contacts/{cid}/ticketOpen a new support ticket from the WhatsApp chat window. Blocks if
/api/me/contacts/{cid}/wa-syncRead the latest WhatsApp profile name we observed for this contact's
/api/me/contacts/{contact_id}/save-as-tracked-userIdentique à /admin/contacts/{id}/save-as-tracked-user mais auto-génère aussi un mot de passe,
/api/me/dashboard/ticket-statsPer-user ticket resolution score (only `done` tickets count) over the
/api/me/dashboard/wa-media-summaryRenvoie une synthèse des médias WhatsApp entrants reçus durant les `days` derniers jours.
/api/me/dashboard/wa-reply-statsRenvoie les agrégats de temps de réponse WhatsApp par utilisateur sur la fenêtre courante.
/api/me/demo/statusIter35h — Frontend uses this endpoint to render the persistent
/api/me/documentsRGPD: anonymizes uploaded_by_email/name for non-privileged roles.
/api/me/documents/api/me/documents/{doc_id}/api/me/featuresRésout les feature flags SMART Communications pour l'utilisateur appelant.
/api/me/formations/api/me/formations/{fid}/api/me/formations/{fid}/enroll/api/me/formations/{fid}/modules/{mid}/askTransmet la question de l'utilisateur à l'API REST externe du module configurée par l'admin.
/api/me/formations/{fid}/modules/{mid}/visitMark a module as visited (call when the page is OPENED).
/api/me/formations/{fid}/modules/{mid}/visit/{visit_id}/closeEnregistre la durée une fois que l'utilisateur quitte le module.
/api/me/formations/{fid}/stripe/checkoutCrée une session Stripe Checkout pour une formation payante.
/api/me/idle-config/api/me/intervention-reasonsReturn the (admin-configurable) list of preset reasons used by the
/api/me/interventionsRGPD: anonymizes the technician name for non-privileged roles.
/api/me/interventions/api/me/interventions/hourly-rateRetourne le taux horaire en XOF résolu pour l'utilisateur courant.
/api/me/interventions/pdfPDF de l'historique des interventions selon les filtres (date + client + statut).
/api/me/interventions/{int_id}/api/me/invoices/from-interventionsGénère 1 facture par tenant à partir d'interventions sélectionnées.
/api/me/invoices/from-interventionsListe des factures interventions (admin/sup voient tout, client voit
/api/me/invoices/from-interventions/{inv_id}/pdfPDF de la facture (admin/sup OU le tenant propriétaire).
/api/me/media-libraryTous les médias téléversés par les utilisateurs du même client. Banque partagée.
/api/me/media-libraryUpload + register a media in the shared client library, returns a stable public URL
/api/me/media-library/wa-cleanupDelete WhatsApp-sourced media library entries whose underlying file is
/api/me/media-library/{media_id}/api/me/messaging/schedulesListe les envois WhatsApp programmés de l'utilisateur. Les admins voient tout ; les utilisateurs portail
/api/me/messaging/schedules/api/me/messaging/schedules/{sid}/api/me/messaging/variable-tokensPortal mirror of variable tokens. Same resolution at send time.
/api/me/notes-summaryRenvoie les compteurs et timestamps de dernière mise à jour pour afficher les boutons du dashboard.
/api/me/notes-targetsIter35m — Renvoie la liste des utilisateurs auxquels une note/tâche peut être adressée
/api/me/notes/{kind}/api/me/notes/{kind}/api/me/notes/{kind}/authorsDistinct authors for the kind — used to populate the filter dropdown.
/api/me/notes/{kind}/{note_id}/api/me/notes/{kind}/{note_id}/api/me/notes/{kind}/{note_id}/note-de-service/api/me/notifications/countsReturn the count of new items per module since the user last visited that module.
/api/me/notifications/mark-seenMark a module as visited (resets its badge counter to 0).
/api/me/payment-links/api/me/payment-links/api/me/payment-links/{link_id}/api/me/payment-links/{link_id}/api/me/paymentsListe les paiements récents de l'utilisateur appelant. Admin/superviseur voient tout.
/api/me/payments-dashboard/api/me/payments/pawapay/depositDEPRECATED (Iter38r) — Replaced by the hosted Payment Page flow because
/api/me/payments/pawapay/payment-pageIter38r — Initiate a hosted PawaPay Payment Page session.
/api/me/payments/{deposit_id}Polling endpoint — refreshes the payment by querying PawaPay if still pending.
/api/me/profile-update-requestIter34k — Soumet une demande libre à l'admin pour corriger l'identité,
/api/me/ratings/{kind}/{target_id}/api/me/ratings/{kind}/{target_id}/api/me/recent-activityReturn new activity events for the user's visible scope since the
/api/me/sms/bulk/api/me/sms/messages/api/me/sms/providersTell the portal which SMS providers are configured + the default one.
/api/me/sms/schedules/api/me/sms/schedules/{sid}/api/me/sms/send/api/me/tenant-users/api/me/ticket-motif-templates/api/me/ticket-motif-templates/api/me/ticket-motif-templates/{tpl_id}/api/me/ticketsIter38r-fix9o — Quick-create a ticket from the floating bubble.
/api/me/tickets/api/me/tickets/bulk-deleteHard-delete les tickets sélectionnés par leurs ids. Admin/Sup uniquement.
/api/me/tickets/cost-summaryIter37d — Monthly cost aggregate for closed tickets.
/api/me/tickets/cost-summary.csvIter37e — CSV export du coût mensuel des interventions clôturées.
/api/me/tickets/cost-summary.pdfIter37e — PDF export du coût mensuel des interventions clôturées (A4 paysage).
/api/me/tickets/pending-countRenvoie le nombre de tickets non-clos dans le scope de l'utilisateur.
/api/me/tickets/resetHard-delete TOUS les tickets (remise à zéro complète). Réservé Admin/Superviseur.
/api/me/tickets/trash/api/me/tickets/{tid}/api/me/tickets/{tid}/archive/api/me/tickets/{tid}/assignAssign a ticket to a user (or unassign when user_id is empty).
/api/me/tickets/{tid}/close/api/me/tickets/{tid}/reopenRe-open a closed ticket as a *new* sibling whose number ends with -R{k}.
/api/me/upload/api/me/users/api/me/wa-import-by-phoneCrée un contact d'annuaire directement depuis un numéro de téléphone (utilisé par
/api/me/wa-pending-importsListe les numéros de téléphone inconnus ayant écrit à notre WhatsApp Business
/api/me/wa-pending-imports/{pending_id}Permanently dismiss a pending WA inbound (won't reappear unless they
/api/me/wa-pending-imports/{pending_id}/importPromote a pending WA inbound to a full directory contact. Optionally
/api/me/welcome-briefing/api/me/whatsapp/bulkEnvoie un modèle WhatsApp approuvé par Meta à plusieurs contacts CRM en une fois,
/api/me/whatsapp/history/api/me/whatsapp/messages/{msg_id}/save-to-libraryRegister an inbound WhatsApp media in the shared client media library.
/api/me/whatsapp/send/api/me/whatsapp/send-mediaEnvoie un message média WhatsApp libre dans la fenêtre Meta de 24h.
/api/me/whatsapp/send-textEnvoie un message texte WhatsApp libre — autorisé uniquement dans la fenêtre Meta de 24h
/api/me/whatsapp/templatesUtilisateurs portail : liste les modèles APPROUVÉS + uniquement ceux marqués disponibles.
/api/me/whatsapp/unreadRenvoie les compteurs de non-lus par contact + un total global des messages WA entrants
/api/payments/stripe/status/{session_id}Poll the checkout status. Idempotent — enrollment only created
/api/transcribeAccepts a short audio file (webm/mp3/m4a/wav/ogg, ≤25 Mo) and returns
/api/me/ai/generate-image-imagen/api/me/ai/generate-video-veo/api/me/ai/generate-video-veo/{job_id}/api/me/ai/tts-elevenlabs/api/me/ai/voices/api/me/ai/voices/clone/api/me/ai/voices/{voice_id}/api/me/wa-tasks-digest/api/me/wa-tasks-digest/api/me/gdpr/export/api/me/contact-groups/api/me/contact-groups/api/me/contact-groups/resolveExpand a (groups, contacts) selection into the unique target list.
/api/me/contact-groups/{gid}/api/me/contact-groups/{gid}/api/me/contact-groups/{gid}/contacts/api/me/contact-groups/{gid}/contacts/{contact_id}/api/files/ai/{tenant_id}/{filename}/api/me/ai-usage/api/me/ai/edit-image/api/me/ai/generate-image/api/me/ai/generate-profile-photo/api/me/ai/generate-video/api/me/ai/history/api/me/inbox/import-contactCrée un contact à partir d'un thread inbox qui n'a aucun contact correspondant
/api/me/inbox/mark-read/{channel}/{thread_id}/api/me/inbox/send/api/me/inbox/unifiedRenvoie jusqu'à `limit` threads depuis WhatsApp + Messenger, triés par récence.
/api/me/inbox/unified/{channel}/{thread_id}Return ordered messages of a single thread.
/api/me/liluvine-pro/autoreply-feed/api/me/liluvine-pro/branding/api/me/liluvine-pro/chat/api/me/liluvine-pro/chat-with-image/api/me/liluvine-pro/chat/stream/api/me/liluvine-pro/request-help/api/me/liluvine-pro/sessions/api/me/liluvine-pro/sessions/{sid}/api/me/liluvine-pro/sessions/{sid}/api/me/liluvine-pro/sessions/{sid}/api/me/meta/ads/accounts/api/me/meta/ads/accounts/{ad_account_id}/insights/api/me/meta/ads/campaigns/api/me/meta/ads/campaigns/{campaign_id}/status/api/me/meta/disconnect/api/me/meta/messenger/conversations/api/me/meta/messenger/send/api/me/meta/oauth/callback/api/me/meta/oauth/url/api/me/meta/pages/api/me/meta/pages/{page_id}/comments/{comment_id}/reply/api/me/meta/pages/{page_id}/photos/api/me/meta/pages/{page_id}/posts/api/me/meta/pages/{page_id}/posts/api/me/meta/pages/{page_id}/posts/{post_id}/comments/api/me/meta/status/api/me/payments/pawapay/payout/api/me/payments/pawapay/payout/{pid}/api/me/payments/pawapay/payouts/api/appointments/public/api/availabilityRenvoie la liste des créneaux libres/occupés pour une date donnée.
/api/blog/api/blog/tags/api/blog/{slug}/api/case-studies/api/case-studies/{slug}/api/catalog/api/client-categories/api/company-info/api/contact/api/content/api/content/{slug}/api/deploymentsListe publique, groupée par pays, avec toutes les solutions et le total d'installations.
/api/document-categories/api/feedback/{token}Récupère les infos d'un RDV via son feedback_token (formulaire NPS public).
/api/feedback/{token}Soumet un témoignage NPS via le feedback_token. payload: {score:int, comment:str, allow_publish:bool}
/api/files/{file_id}/api/integrations/resolve-linkEndpoint public — décode un jeton de lien, renvoie ses claims pour que la SPA
/api/newsletter/subscribe/api/newsletter/unsubscribe/api/public/catalog/track/api/public/coupons/{code}/validateValidate a coupon for a given XOF amount (UX preview before checkout).
/api/public/documents/api/public/forms/{form_id}Récupère un formulaire public en anonyme — fonctionne uniquement si `is_public=True`.
/api/public/forms/{form_id}/submission/api/public/incidentsTimeline publique des incidents (résolus + en cours). Utilisé par la page /uptime.
/api/public/incidents/confirm/api/public/incidents/subscribe/api/public/incidents/unsubscribe/api/public/og/product/{product_id}/api/public/orders/{order_id}/api/public/pay/{slug}/api/public/pay/{slug}/deposit/api/public/pay/{slug}/status/{deposit_id}Polling endpoint for the public payment landing page (no auth).
/api/public/policies/{slot}Serve a policy PDF inline so 3rd parties (Google, Facebook…) can verify it.
/api/public/products/api/public/products/{product_id}/checkout/api/public/remote/support/{token}Inspecte la charge support actuelle + la config Liluvine — protégé par jeton HMAC.
/api/public/remote/support/{token}/api/public/statusDonnées de la page de statut publique (accessible à tous). Uniquement les sondes flag public.
/api/public/subscriptionsPublic : renvoie les plans actifs groupés par catégorie (max 4 catégories).
/api/public/subscriptions/order/api/public/support-load/api/public/ui-flagsIter40-route-loader (S051) + Iter40-ui-flags — Tiny anonymous endpoint
/api/testimonialsListe les témoignages clients publiés (pour le site public).
/api/testimonials/statsStatistiques NPS publiques (basées uniquement sur les témoignages publiés).
/api/trackEnregistre une visite et la transmet (si configuré) à l'API REST externe.
/api/versionRenvoie la version du build en cours + l'horodatage du dernier redémarrage.
/api/visits/countTotal visit counter for the public homepage. Includes admin-tunable offset.
/api/visits/trendDaily visit counts for the last N days (default 7), oldest first.
/api/public/ad-banners/activeReturn ONE active banner suitable for `placement` (weighted random).
/api/public/ad-banners/config/api/public/ad-banners/{banner_id}/click/api/public/ad-banners/{banner_id}/impression/api/public/ads-report/{slug}Iter38r-fix9y — Rapport public en direct pour un annonceur. Nécessite le
/api/public/ads-report/{slug}/ai-plan/api/public/ads-report/{slug}/checkoutCrée une session Stripe Checkout pour le renouvellement de la campagne.
/api/public/ads-report/{slug}/mediaSelf-service media update. The advertiser uploads via the admin
/api/public/ads-report/{slug}/payment-status/{session_id}Poll endpoint. Confirms the Stripe session and, on first paid
/api/public/ads-report/{slug}/renew/api/public/docs/api/public/docs/{slug}/api/public/incidentsReçoit un incident depuis un serveur tiers (Watchdog, Uptime-Bot,
/api/public/media-libraryAll `public=True` media, sorted by sort_order asc then created_at desc.
/api/me/errors/api/me/errors/acknowledge-allMarque comme lues TOUTES les erreurs non lues, indépendamment des
/api/me/errors/bulk-acknowledge/api/me/errors/bulk-deleteHard-delete les erreurs sélectionnées par leurs ids.
/api/me/errors/purgeHard-delete errors matching the date range. Superviseur ONLY.
/api/me/errors/resetHard-delete TOUTES les erreurs (remise à zéro complète).
/api/me/errors/stats/api/me/errors/{eid}/api/me/errors/{eid}/api/me/errors/{eid}/acknowledge/api/errors/ingestWebhook public utilisé par les logiciels clients pour pousser des exceptions/erreurs.
/api//api/health/api/versionIter35n — Tag de version public. Affiché sur la page de connexion pour que les utilisateurs
/api/admin/countries/api/admin/countries/api/admin/countries/{code}/api/admin/countries/{code}/api/admin/tenant-country/api/admin/tenant-country/api/me/tenant-meta/api/me/download-requests/api/me/download-requests/admin/audit/api/me/download-requests/{token}/api/me/download-requests/{token}/cancel/api/wa-action/{token}/{action}/api/vidal/prescription/analyzeForwards the payload to VIDAL `/alerts/full`. Result includes alert
/api/vidal/product/{product_id}/api/vidal/product/{product_id}/documents/api/vidal/products/status/api/vidal/quota/me/api/vidal/search/api/voice-notifications/triggerUtilisé par les utilisateurs suivis ou l'admin pour envoyer une notification vocale
/api/whatsapp/webhookMeta verifies the webhook via GET with hub.mode=subscribe, hub.verify_token, hub.challenge.
/api/whatsapp/webhookReceive Meta Cloud API events: new inbound messages + outbound status updates.
/api/webhooks/agenda/{secret}Inbound webhook from n8n AI Agent. Allows CRUD on appointments using a
/api/webhooks/liluvine-pro/{source}/{secret}/api/webhooks/pawapay/deposits/{secret}Iter38r-fix2 — PawaPay deposit callback. URL à coller dans le tableau
/api/webhooks/pawapay/payouts/{secret}/api/webhooks/pawapay/refunds/{secret}Iter38r-fix2 — PawaPay refund callback. URL à coller dans le tableau
/api/webhooks/pawapay/{secret}Legacy generic PawaPay callback (kept for pre-Iter38r-fix2 configs).
/api/webhooks/support-load/{secret}External webhook to push the current support load (0..7).
/api/admin/payroll-webhooks/config/api/admin/payroll-webhooks/config/api/admin/payroll-webhooks/log/api/admin/payroll-webhooks/outbound/previewRenvoie le JSON qui serait envoyé — utile pour revue avant expédition.
/api/admin/payroll-webhooks/outbound/test/api/webhooks/n8n/payroll/{tenant_id}/api/i18n/detectRenvoie {"suggested_lang": "fr|en|ar"} basé sur les en-têtes Cloudflare / CDN
/api/i18n/languages/api/i18n/translationsRenvoie {key: text} pour la langue demandée. Bascule sur FR