Intégrations Partenaires Launch Pad
Pour les Plateformes Agricoles et les Partenaires FMIS

Ajoutez la Planification de Trajets à Votre Plateforme

Launch Pad est la plateforme d'agriculture de précision de Verge Ag : planification de trajets, optimisation d'itinéraires et opérations de terrain. Les partenaires l'intègrent dans leur propre produit via une API REST et une interface white-label basique, sans avoir à construire ni à opérer les systèmes sous-jacents.

Voir les Niveaux d'Intégration

Vue d'ensemble

L'intégration partenaire de Launch Pad permet à votre plateforme d'incorporer la planification de trajets, l'optimisation d'itinéraires et les opérations de terrain sans avoir à construire ni à opérer les systèmes sous-jacents. Quatre niveaux d'intégration vont d'un simple lien profond à la fédération complète d'identité, tous basés sur une API REST publique et une authentification OAuth 2.0 standard.

Chaque niveau fonctionne de manière autonome. La plupart des partenaires commencent au Niveau 1 (Lancement en Un Clic) et ajoutent des niveaux supérieurs plus tard selon l'évolution de leurs besoins. Les sections suivantes décrivent ce que vivent vos utilisateurs finaux, ce que vous obtenez en tant qu'entreprise, la présentation complète des quatre niveaux et une analyse approfondie du Niveau 1. La section Détail Technique plus bas contient les spécifications d'ingénierie.

4
Niveaux d'Intégration
2/5
Effort du Niveau 1
REST
Style d'API
OAuth 2.0
Standard d'Auth
Ressource Complémentaire

Portail Développeur & Référence API

Référence complète de l'API REST, modèles d'authentification et guides de démarrage pour l'API publique de Launch Pad. Consultez cette ressource lorsque vous commencez à évaluer un niveau supérieur au Niveau 1, ou chaque fois que vous avez besoin de détails au niveau des endpoints au-delà de ce que couvre cette page.

Visiter le Portail Développeur

Ce Que Vivent Vos Utilisateurs

Au Niveau 1, Launch Pad agit comme une application complémentaire à votre produit. Il s'ouvre dans une nouvelle fenêtre du navigateur avec toute la configuration effectuée en arrière-plan, afin que l'utilisateur puisse commencer à travailler immédiatement.

Pas de Nouvelle Inscription

Les utilisateurs ne créent pas de compte Launch Pad. Leur identité provient de votre produit.

Pas de Deuxième Connexion

Les utilisateurs sont connectés automatiquement lorsqu'ils ouvrent Launch Pad depuis votre application.

Pas de Téléversement de Fichier Pour Commencer

La bonne parcelle et ses contours sont déjà chargés à l'arrivée de l'utilisateur. La gestion des contours est l'un des plus grands obstacles à l'adoption d'outils agricoles externes ; un parcours "hyperlien, connexion, envoi de fichier" fait perdre la plus grande partie de la valeur qu'une intégration est censée apporter.

Retour du Résultat (Manuel au Départ)

Lorsque les utilisateurs ont terminé, ils téléchargent le fichier du plan de trajets depuis Launch Pad et le téléversent dans votre produit. Un endroit naturel à automatiser plus tard via un Webhook push ou une intégration Custom push, en réutilisant le client API déjà construit pour le Niveau 1.

Ce Que Vous Obtenez en Tant que Partenaire

Conçu pour les entreprises et les équipes d'ingénierie qui souhaitent intégrer le routage de précision sans avoir à monter l'infrastructure nécessaire pour le soutenir.

Une Identité Administrateur

Un seul utilisateur administrateur constitue votre identité dans Launch Pad. Ce même utilisateur détient la clé API pour les appels de serveur à serveur et peut se connecter directement à Launch Pad pour inspecter, auditer ou assister un client.

Facturation Consolidée

Toute l'utilisation est regroupée sous un seul compte de facturation partenaire. Les utilisateurs finaux ne voient jamais les soldes de crédit ni les factures dans Launch Pad. Vous êtes la partie facturée ; la tarification est basée sur le volume et est négociée.

Vue Admin Multi-Clients

Votre administrateur voit l'utilisation, les plans, les parcelles et l'activité par utilisateur pour chaque client que vous intégrez, le tout en un seul endroit. C'est la visibilité dont vous avez besoin pour assister les clients et réconcilier la facturation.

Quatre Niveaux d'Intégration

Chaque niveau fonctionne de manière autonome. La plupart des partenaires commencent au Niveau 1 et ajoutent des niveaux supérieurs plus tard selon l'évolution de leurs besoins.

La Plupart des Partenaires Commencent Ici

Niveau 1 : Lancement en Un Clic

Les utilisateurs ouvrent Launch Pad depuis votre produit sans s'inscrire, se connecter ni téléverser une parcelle. La bonne parcelle est déjà à l'écran. Le fichier du plan de trajets terminé revient dans votre produit via votre flux d'importation de fichiers existant.

Vous construisez : des appels API pour créer l'utilisateur, demander un lien de lancement, envoyer la parcelle et rediriger le navigateur. Votre flux d'importation de fichiers existant accepte le fichier retourné.

Niveau 2 : Intégration API

Accès programmatique complet aux entreprises, exploitants, exploitations, parcelles, contours, plans de trajets et itinéraires via une API REST. Notifications d'événements sur les actions clés.

Vous construisez : une couche de synchronisation entre votre produit et Launch Pad. Un récepteur de webhook (recommandé) ou un polling planifié pour le chemin de retour.

Niveau 3 : Interface Intégrée

Les écrans de Launch Pad affichés dans votre produit, dans une iframe. Navigation masquée, aux couleurs de votre marque.

Vous construisez : un hôte iframe. Un petit handshake pour transmettre les couleurs de votre marque.

Niveau 4 : Fédération d'Identité

"Se connecter avec Launch Pad" (ou l'inverse) en utilisant OpenID Connect basé sur des standards. Le consentement de l'utilisateur final et la liaison de comptes sont gérés par Launch Pad.

Vous construisez : une bibliothèque cliente OpenID Connect et un magasin de jetons.

Détail du Niveau 1

Comment le Niveau 1 Supprime les Frictions

Pourquoi le Niveau 1 Existe

Le Niveau 1 est la différence entre une intégration et un hyperlien. Du point de vue de l'utilisateur, la Planification de Trajets fait partie de votre produit : il clique sur un bouton, effectue la tâche et ramène le résultat.

Pour que cela fonctionne, le Niveau 1 supprime les deux moments de friction les plus importants dans l'adoption d'un outil agricole externe :

  1. Configuration du compte (inscription, connexion, sélection d'entreprise). Votre backend crée et connecte l'utilisateur en arrière-plan.
  2. Téléversement de parcelle. Votre backend envoie la parcelle à Launch Pad via l'API avant d'ouvrir la fenêtre, de sorte que l'utilisateur arrive avec la bonne parcelle déjà à l'écran.

La gestion des parcelles est le point le plus impactant des deux. C'est l'un des plus grands obstacles à l'adoption d'outils agricoles externes par les agriculteurs.

Modèle de Compte

Un engagement de Niveau 1 est organisé de la manière suivante :

Votre identité dans Launch Pad est un seul utilisateur administrateur

Cet utilisateur détient votre clé API, dispose d'une visibilité administrative sur toutes les organisations client que vous créez, et peut également se connecter directement à Launch Pad pour inspecter, auditer ou assister un client. Les utilisateurs finaux ne voient jamais cet utilisateur.

Chaque client devient sa propre organisation dans Launch Pad

Peuplée avec les utilisateurs finaux que vous créez. Un utilisateur final ne voit que sa propre organisation ; il ne voit jamais les données des clients d'autres partenaires.

La facturation est consolidée sous votre compte de facturation

Les utilisateurs finaux ne voient jamais les soldes de crédit ni les factures dans Launch Pad ; vous êtes la partie facturée.

Vue admin multi-clients

Votre utilisateur administrateur voit l'utilisation par organisation client, les comptages de plans et de parcelles, et l'activité par utilisateur pour chaque client en un seul endroit. C'est la visibilité dont vous avez besoin pour assister les clients et réconcilier la facturation.

Ce Que les Utilisateurs Voient dans Launch Pad

Lorsqu'un utilisateur ouvre Launch Pad via le Niveau 1, certaines options de Launch Pad ne s'appliquent pas et sont masquées :

  • Pas de changement de mot de passe, pas de gestion d'e-mail ou de compte, pas d'inscription. L'utilisateur n'a pas de mot de passe Launch Pad ; la connexion provient de votre produit. L'écran de changement de mot de passe affiche un message "Mot de passe géré par [Partenaire]", de la même façon que Launch Pad gère déjà les utilisateurs qui se connectent via John Deere, Trimble ou CNH.
  • Pas de sélecteur d'entreprise. La session est verrouillée sur une seule organisation client pour cette visite.
  • La déconnexion est remplacée par "Retour à [Partenaire]", ce qui ferme l'onglet ou renvoie l'utilisateur vers une URL que vous fournissez, plutôt que de le laisser sur la page de connexion de Launch Pad.

Le menu de travail principal (Plans, Planification de Trajets, Équipements, Comparer) reste disponible car les utilisateurs en ont besoin pour effectuer le travail. Seules les options d'identité, de facturation, d'administration et de gestion de compte sont masquées.

Retour du Plan de Trajets

Une fois qu'un utilisateur a terminé un plan de trajets dans Launch Pad, le résultat doit revenir dans votre produit. Quatre options sont disponibles et fonctionnent quel que soit le niveau. Les options push sont fortement préférées au polling.

Par Défaut pour le Niveau 1

Téléchargement / Téléversement Manuel

L'utilisateur clique sur Télécharger dans Launch Pad, puis téléverse le fichier dans votre produit.

Idéal quand : c'est le moyen le plus rapide de démarrer.

Recommandé pour la Production

Webhook Push

Launch Pad envoie chaque plan terminé à une URL que vous fournissez, signé avec HMAC.

Idéal quand : vous souhaitez une livraison en temps réel et pouvez héberger un endpoint webhook générique.

Ingénierie Par Partenaire

Custom Push

Verge écrit une intégration sur mesure qui livre les plans terminés directement dans votre API existante.

Idéal quand : vous disposez d'une API entrante qui accepte des identifiants mais ne souhaitez pas construire un récepteur webhook.

À Utiliser avec Parcimonie

Polling Pull

Votre backend récupère périodiquement les plans terminés depuis l'API de Launch Pad.

Idéal quand : aucune option push n'est possible. La cadence doit être conservative.

Prérequis obligatoire pour le téléchargement/téléversement manuel : votre flux d'importation doit accepter au moins un format émis par Launch Pad (ISOXML, Shapefile, KML ou formats spécifiques au partenaire ; confirmé lors du cadrage). Sans ce recoupement, le Niveau 1 ne peut pas livrer un flux de bout en bout utilisable.

Pour les Développeurs

Détail Technique

Un lecteur non technique peut s'arrêter ici. La suite de cette page est la spécification d'ingénierie : flux de bout en bout, anatomie de l'URL de redirection et mécanique du chemin de retour.

Flux de Bout en Bout

Ce qui se passe, étape par étape, lorsqu'un utilisateur partenaire ouvre Launch Pad :

sequenceDiagram
    autonumber
    participant YU as Interface Partenaire
    participant YB as Backend Partenaire
    participant LA as Launch Pad API
    participant LU as Launch Pad UI

    YU->>YB: l'utilisateur clique sur "Ouvrir Plan de Trajets"

    note over YB,LA: Étape 1 : créer l'utilisateur LP s'il n'existe pas
    YB->>LA: POST /api/users (idempotent sur externalUserId)
    YB->>LA: POST /api/company-accesses (idempotent sur utilisateur + org)

    note over YB,LA: Étape 2 (optionnel) : envoyer une parcelle
    YB->>LA: POST /api/vBoundary/upsert

    note over YB,LA: Étape 3 : demander un code de lancement
    YB->>LA: POST /api/partner/launch ({ userId, companyId, returnUrl })
    LA-->>YB: { code, expiresInSec: 600 }

    YB-->>YU: 302 redirige vers https://your-app.vergeag.com/launch?code=...
    YU->>LU: le navigateur navigue vers /launch?code=...
    LU->>LA: POST /api/partner/launch/{code}/exchange
    LA-->>LU: JWT + refresh token
    note over LU: stocke le JWT dans localStorage,
supprime le code de l'URL,
navigue vers returnUrl

Propriétés Clés

  • Vous vous authentifiez de serveur à serveur avec un identifiant à longue durée de vie (la clé API de votre utilisateur administrateur). Le navigateur ne voit jamais la clé API.
  • Le navigateur ne voit qu'un code opaque, à usage unique et à courte durée de vie dans l'URL (durée de vie de 10 minutes, consommé lors de l'échange).
  • L'endpoint d'échange ne nécessite pas de connexion ; le code lui-même est le justificatif d'identité. L'interface de Launch Pad l'appelle dès que l'utilisateur arrive.
  • Launch Pad émet une session utilisateur normale (JWT + refresh token), la stocke dans localStorage et achemine l'utilisateur vers l'URL que vous avez spécifiée.

Alignement avec les Standards

Le modèle est l'OAuth 2.0 Authorization Code Grant, avec l'écran de consentement interactif remplacé par un appel d'autorisation de serveur à serveur depuis votre backend. La terminologie OAuth moderne appelle cette variante de canal arrière le Pre-Authorized Code Flow (introduit dans la spécification OpenID for Verifiable Credential Issuance).

Le code à courte durée de vie dans l'URL et l'échange par canal arrière pour un JWT se comportent exactement comme dans l'OAuth classique ; le consentement est établi par l'accord de partenariat plutôt que par une boîte de dialogue de consentement à chaque lancement.

À Quoi Ressemble l'URL de Redirection

Ce que reçoit le navigateur de l'utilisateur (sur une ligne, en tant qu'en-tête Location:) :

https://your-app.vergeag.com/launch?code=lc_R3w9q-Kx7VtNm2bH8sLpYj4eQ6gZc1aXfU0dT5nMoP&returnUrl=%2Fpath-planning%2Fboundary%2Fb3f47e1c-8a02-4d59-9c6e-2f7a8b1d6e09

Décodée pour plus de lisibilité :

Composant Valeur Notes
Origine https://your-app.vergeag.com Verge fournit l'origine de production lors de l'onboarding. HTTPS est obligatoire ; le HTTP simple est refusé.
Chemin /launch Route publique non authentifiée. Aucune session Launch Pad préalable n'est requise.
code lc_R3w9q-... Le préfixe lc_ identifie cette valeur comme un code de lancement (distinct d'une clé API LP- dans les journaux). Le payload est de 32 octets aléatoires cryptographiques, encodés en base64url. À usage unique, TTL de 10 minutes, lié au moment de l'émission à un utilisateur, une organisation et un returnUrl.
returnUrl /path-planning/boundary/... Le chemin relatif de Launch Pad vers lequel l'utilisateur est envoyé après l'émission du JWT. Utilise des segments de route (par exemple /path-planning/boundary/:id) pour que la parcelle se charge automatiquement. Doit commencer par /. Les URL absolues, les URL relatives au protocole //host et \ sont rejetées à l'émission.

Ce Que Fait l'Interface de Launch Pad à l'Arrivée

Vous n'implémentez pas cela ; c'est fourni à titre de référence pour vous permettre de comprendre ce que voient vos utilisateurs entre le clic et la parcelle affichée :

  1. Lit code et returnUrl depuis la chaîne de requête.
  2. Échange le code avec Launch Pad contre une session utilisateur.
  3. Connecte l'utilisateur à la bonne organisation client.
  4. Supprime le code de la barre d'adresse pour qu'il ne reste pas dans l'historique du navigateur.
  5. Envoie l'utilisateur vers le returnUrl que vous avez spécifié.

Si code est absent, expiré ou déjà utilisé, l'utilisateur arrive sur une page d'erreur lui demandant de retourner dans votre produit et de réessayer.

Options de Retour en Détail

Téléchargement / Téléversement Manuel

L'utilisateur clique sur Télécharger dans Launch Pad, le fichier arrive sur son appareil, et il le téléverse dans votre produit via votre flux d'importation de fichiers existant. Par défaut pour le Niveau 1. Aucune nouvelle infrastructure de votre côté. Requiert que votre flux d'importation accepte au moins un format émis par Launch Pad (ISOXML, Shapefile, KML ou formats spécifiques au partenaire).

Webhook Push

Launch Pad envoie des POST HTTPS à une URL que vous fournissez. Chaque requête porte une signature HMAC-SHA256, calculée contre un secret partagé que Verge émet lors de l'onboarding. Vous vérifiez la signature, traitez le payload et répondez avec un 2xx en 10 secondes.

Propriétés Clés

  • Vous ne vous authentifiez pas auprès de Launch Pad pour ce flux. Pas de handshake OAuth, pas de JWT, pas de clé API Launch Pad de votre côté. Le secret HMAC partagé est l'intégralité du modèle d'authentification.
  • Un secret par abonnement, rotatif. Émis une fois lors de l'onboarding. La rotation utilise une fenêtre de chevauchement à deux secrets pour que les livraisons ne échouent pas pendant le basculement.
  • La livraison de fichiers s'adapte à la taille du payload. Les petits artefacts (moins de 1 Mo) sont envoyés en ligne en base64 dans le corps du webhook. Les artefacts plus grands sont envoyés sous forme d'URL de téléchargement présignée à courte durée intégrée dans le corps ; vous faites un GET sur cette URL directement, sans aucune accréditation Launch Pad.
  • Livraison at-least-once. Launch Pad réessaie avec un backoff exponentiel sur les réponses non-2xx et les timeouts. Chaque événement porte un en-tête Verge-Webhook-Id pour que vous puissiez dédupliquer.

Ce Que Vous Construisez

  • Un endpoint HTTPS public qui accepte des POST. Aucune connexion ni session n'est requise sur l'endpoint au-delà de la vérification de la signature.
  • Vérification HMAC à l'aide du secret partagé (environ dix lignes de code dans n'importe quel langage).
  • Une vérification d'idempotence sur Verge-Webhook-Id pour qu'un réessai ne traite jamais deux fois.
  • Une réponse 2xx rapide. Traitez tout travail lourd de manière asynchrone pour que les timeouts ne déclenchent pas des tempêtes de réessais.

Ce Que Verge Opère

  • L'émetteur sortant et la file de réessais.
  • La gestion dead-letter pour les livraisons définitivement échouées.
  • Une interface d'administration pour consulter les journaux de livraison et rejouer les événements échoués.
  • Un ensemble publié de plages d'IP sortantes que vous pouvez autoriser au niveau du pare-feu.

Custom Push (ingénierie par partenaire)

Si vous disposez déjà d'une API entrante authentifiée mais ne souhaitez pas construire un récepteur webhook générique, Verge peut écrire une intégration push sur mesure qui appelle votre API directement. Vous partagez des identifiants sécurisés avec Verge (de préférence une clé API) ; l'émetteur de Verge s'authentifie auprès de vous à chaque push.

Cette option existe en raison d'une asymétrie dans la direction de confiance. Pour les grands partenaires FMIS (John Deere, Trimble, CNH), les utilisateurs finaux s'authentifient auprès de Launch Pad avec leur compte OEM, de sorte que Launch Pad détient déjà des jetons sécurisés pour renvoyer des données. Launch Pad opère ce modèle d'OEM push aujourd'hui. Dans une intégration de Niveau 1, la direction de confiance est inversée (c'est vous qui vous authentifiez auprès de Launch Pad), de sorte que Launch Pad n'a pas d'identifiants préexistants vers votre système. Custom push comble cette lacune avec un arrangement sur mesure.

Compromis

  • Ingénierie sur mesure du côté de Verge. L'API de chaque partenaire est différente. Il s'agit d'un travail par partenaire, pas d'une fonctionnalité générique, et la tarification le reflète.
  • Accord de partenaire de confiance. Vous partagez une clé API (ou un identifiant sécurisé équivalent) avec Verge et opérez cet identifiant de votre côté.
  • Maintenance conjointe. Les deux parties maintiennent l'intégration opérationnelle lors des changements d'API et des rotations d'identifiants.

Adapté lorsque vous disposez d'une API entrante existante, ne souhaitez pas construire un récepteur webhook générique, et êtes suffisamment engagé pour financer le travail par partenaire.

Polling Pull (à utiliser avec parcimonie ; push est préféré)

Si aucune option push n'est viable, votre backend peut appeler périodiquement l'API de Launch Pad (en utilisant la même X-API-KEY déjà émise pour le provisionnement) pour récupérer les plans de trajets publiés ou mis à jour depuis le dernier sondage.

Traitez cela comme une récupération par lots éventuellement cohérente, et non comme une livraison en temps réel. Une cadence typique est horaire ou moins fréquente. Un polling à haute fréquence qui ressemble à un busy-wait sur une action utilisateur n'est pas pris en charge et peut être soumis à un rate limiting. Faire du polling en continu pendant des heures en attente d'un seul événement déclenché par l'utilisateur est exactement le modèle que cette option ne couvre pas.

  • Ce que vous construisez : une boucle de polling avec une cadence conservative, une déduplication par ID de plan de trajets et une ingestion dans votre stockage de fichiers.
  • Compromis : latence significative entre l'action de l'utilisateur et l'arrivée des données ; charge supplémentaire sur l'API de Launch Pad.
  • Push est fortement préféré. Utilisez le polling uniquement si ni le Webhook push ni le Custom push ne sont viables.

Niveaux Supérieurs

Cette page est la référence complète pour le Niveau 1. Pour les niveaux supérieurs :

Niveau 2 (Intégration API)

Le schéma public de l'API se trouve à vergeag.com/developers. Une fois le Niveau 1 en place, vous pouvez étendre l'intégration en appelant davantage l'API directement, en utilisant la même clé API que vous détenez déjà.

Niveau 3 (Interface Intégrée)

Contactez Verge pour définir le périmètre. L'Interface Intégrée implique des accords sur les jetons de marque, la configuration d'un hôte iframe et un build de l'interface par partenaire. Ce n'est pas en libre-service.

Niveau 4 (Fédération d'Identité)

Contactez Verge pour définir le périmètre. La Fédération d'Identité requiert un enregistrement de client OIDC basé sur des standards et un accord de fédération entre les deux parties.

Parlons d'une Intégration Partenaire

Les intégrations partenaires sont dimensionnées au cas par cas. Contactez-nous et nous examinerons ensemble la sélection du niveau, les options de retour et l'onboarding.

Contacter Verge Ag