Relié à la fiche publique du lieu : elle affiche « Vérifié par {{ currentOrg.name }} » et reprend le téléphone et les horaires.
Ce lieu existe peut-être déjà sur la carte publique :
{{ c.name }} · {{ categoryLabel(c.category) }} · à {{ c.distance_m }} m
L’entreprise reçoit son propre espace dans « {{ currentOrg.name }} » ({{ orgKindLabel(currentOrg.kind) }}) : ses données restent séparées de celles des autres. Son chef y est ajouté s’il a déjà un compte Ndahunu, sinon il est invité et rejoint l’espace en créant son compte avec cette adresse.
Si la personne n’a pas encore de compte Ndahunu, une invitation est gardée : elle rejoint l’espace dès qu’elle crée son compte avec cet e-mail (ou en ouvrant le lien d’invitation). Les agents retrouvent leur travail dans l’app (« Mon travail » sur la carte). Le rôle Lecture permet de consulter l’espace et le bilan sans rien modifier.
Invitations en attente ({{ invitations.length }})
Un lien d’invitation est valable 7 jours. S’il est ouvert avec un compte d’une autre adresse, vous devez valider la personne ici.
À valider : {{ i.claimed_name || '—' }} ({{ i.claimed_email }}) a ouvert le lien {{ timeAgo(i.claimed_at) }}. Accepté comme agent : un lien ne donne jamais le rôle Chef.
Reliez votre logiciel à Ndahunu : ce que vous y enregistrez ({{ integrationScope }}) arrive automatiquement dans cet espace, et votre logiciel est prévenu de chaque changement fait sur le terrain. À transmettre à votre informaticien.
1. Clés d’API
Une clé par système (site, logiciel). Elle donne accès aux données de {{ currentOrg.name }} uniquement. Ne la publiez jamais, ne l’envoyez pas par message : donnez-la directement à votre informaticien.
Votre nouvelle clé (affichée une seule fois) :
{{ integration.newKey }}
Nom
Début de la clé
Permissions
Créée
Dernière utilisation
{{ k.name }}
{{ k.key_prefix }}…
{{ scopeLabel(k) }} · expire le {{ formatDay(k.expires_at.slice(0, 10)) }}
Adresse (https) que Ndahunu appelle à chaque changement : livraison, mission commencée ou terminée par un agent, signalement d’un habitant reçu. Chaque appel est signé avec le secret ci-dessous (en-tête X-Ndahunu-Signature, HMAC-SHA256 du corps).
Secret de signature : {{ integration.webhookSecret }}
Dernières notifications
Sans réponse correcte (code 2xx), Ndahunu réessaie après 1, 5 et 30 minutes puis 2 heures (5 essais au plus).
Adresse de base : {{ apiBase }}. Chaque appel est un POST avec les en-têtes apikey: {{ anonKeyShort }} (clé publique du projet, ci-dessous) et Content-Type: application/json, et la clé secrète de l’organisation dans le corps (api_key).
Créer une livraison (à appeler à chaque commande)
{{ curlCreate }}
Champs : address_code (obligatoire : code Ndahunu du client, avec ou sans le dernier caractère), external_id (n° de commande : une commande envoyée deux fois ne crée qu’une livraison), reference, recipient_name, recipient_phone, notes, scheduled_for (AAAA-MM-JJ). La réponse contient l’état et un lien de suivi (tracking_url) à envoyer au client.
Connaître l’état d’une livraison
{{ curlStatus }}
Annuler une livraison
{{ curlCancel }}
Notification reçue par votre système
{{ webhookExample }}
États : a_livrer, en_route, livre, echec, annule. Erreurs : code d’adresse introuvable ou incorrect, clé invalide ou révoquée.
Lieu : pour chaque élément, mission ou zone, un code Ndahunu (address_code) ou des coordonnées GPS (latitude, longitude). external_id est votre propre identifiant : renvoyer le même identifiant met à jour l’élément au lieu d’en créer un autre.
Créer une mission de terrain
{{ curlTask }}
Champs : title (obligatoire), kind (contrôle, réparation, intervention…), details, priority (basse, normale, haute, urgente), due_date, asset_external_id (élément de l’inventaire concerné : la mission est alors placée au même endroit). Le chef l’attribue ensuite à un agent, qui la reçoit dans l’app.
Connaître l’état d’une mission, l’annuler
{{ curlTaskStatus }}
{{ curlCancelTask }}
Notification quand l’agent termine
{{ webhookTaskExample }}
Évènements : task.created, task.en_cours, task.termine (avec le compte rendu), task.annule.
Ajouter ou mettre à jour un élément de l’inventaire
{{ curlAsset }}
Champs : category et name (obligatoires), status (actif, travaux, hors_service, projet), notes, attributes (vos champs libres), path (tracé d’une rue ou d’une route : [[latitude, longitude], …]). Envoyez tous les champs à chaque fois.
Retirer un élément
{{ curlDeleteAsset }}
Publier ou mettre à jour une zone
{{ curlZone }}
geometry : tracé {"type":"line","points":[…]}, surface {"type":"polygon","points":[…]} ou cercle {"type":"circle","center":[lat, lng],"radius":mètres}. severity : info, moyenne, haute. Avec is_public: true, la zone s’affiche pour tous sur la carte et dans les itinéraires de l’app.
Lever une zone (route rouverte, alerte terminée)
{{ curlEndZone }}
Récupérer les signalements des habitants
{{ curlReports }}
Renvoie jusqu’à 500 signalements modifiés depuis since (lieu, thème, description, nom et téléphone de l’auteur). Chaque nouveau signalement est aussi envoyé à votre adresse de notification (report.received).
Mettre à jour un signalement
{{ curlReportStatus }}
États : recu, en_cours, resolu, rejete. L’habitant est prévenu dans l’app.
Cet espace est réservé aux membres de l’organisation.
Accès réservé aux administrateurs.
État de Ndahunu
Base à jour (version {{ automation ? automation.schema_version : requiredSchema }}).
Base pas à jour : exécutez la migration {{ requiredSchema }} dans Supabase (dossier supabase/migrations). Version actuelle : {{ schema || 'inconnue' }}.
Dernière purge des données de plus de trois ans : {{ formatDate(automation.last_purge) }} · {{ automation.purge.files_waiting }} fichier(s) à effacer à la main dans Supabase Storage (table purge_files).
{{ automation.automation ? 'Tâches automatiques actives (rappels, nouveaux essais des notifications).' : 'Tâches automatiques inactives : activez pg_cron dans Supabase (Database → Extensions), puis réexécutez la migration 049.' }}
Aucun espace ne traite ce thème à cet endroit. Transmettez-les à un espace, ou ajoutez le thème et le village à un espace (onglet Organisations) : Ndahunu proposera alors de lui transmettre ceux qui correspondent.