Aller au contenu

Développeurs

Ouvert par conception

Code public, API documentées, référentiels ouverts et serveur MCP : tout ce qu’il faut pour connecter votre outil à Ekylibre, au Lexicon et à Aiffel.

REST · OpenAPI 3

L’API d’Ekylibre

Ekylibre expose une API REST en JSON (version 2), décrite au format OpenAPI. Chaque exploitation est un espace de données séparé (un tenant), désigné par le sous-domaine ou par l’en-tête X-Tenant. On s’authentifie avec un jeton lié à l’utilisateur, obtenu par POST /tokens.

Ressources (extrait)

cultivable_zones
parcelles
products
animaux, matériel, végétaux…
variants
variantes du catalogue
interventions
interventions et leurs enregistrements
activity_productions
productions
input_totals
totaux d’intrants
farm_profiles · farm_accountancy
profil et comptabilité par campagne
lexicon/registered_phytosanitary_*
produits phytosanitaires homologués

Documentation de l’API

bash
# 1. Obtenir un jeton
curl -X POST https://VOTRE_INSTANCE/api/v2/tokens \
  -H "Content-Type: application/json" \
  -d '{"email": "vous@exemple.fr", "password": "…"}'

# 2. Lister les parcelles de l'exploitation
curl https://VOTRE_INSTANCE/api/v2/cultivable_zones \
  -H "Authorization: simple-token vous@exemple.fr VOTRE_JETON"

Remplacez VOTRE_INSTANCE par l’adresse de votre Ekylibre. Le jeton peut aussi passer en paramètres (access_email et access_token).

JSON · CSV · PostgreSQL

Le Lexicon en JSON, en CSV ou en SQL

Chaque page du Lexicon existe aussi en JSON et en CSV : ajoutez .json ou .csv à son adresse. L’essentiel des données est ouvert, sans clé. Les jeux réservés aux adhérents d’OSFarm demandent une clé d’API, transmise dans l’en-tête Authorization: Bearer ou X-API-Key. Les données sont lisibles depuis d’autres sites (CORS ouvert).

Paquets PostgreSQL : chaque jeu de données est un paquet versionné, à charger dans votre propre base. Versions, licences et dates de source sont listées dans le catalogue.

bash
curl https://lexicon.osfarm.org/phytosanitary/products.json

# Jeux réservés aux adhérents OSFarm : ajouter la clé
curl https://lexicon.osfarm.org/… \
  -H "Authorization: Bearer VOTRE_CLE"
Réponse (extrait)
{
  "title": "Produits",
  "table": {
    "columns": { "name": "Nom", "firm": "Firme", "type": "Type", … },
    "rows": [ { "name": { "@type": "Text", "value": "…" }, … }, … ]
  },
  "credit": { "provider": { "value": "ANSES" }, "license": { … }, "date": { … } },
  "page": 1, "items-per-page": 150, "total-pages": …,
  "formats": { … }
}

Model Context Protocol

Branchez un assistant d’IA sur 623 M de données

Le Lexicon expose un serveur MCP (JSON-RPC sur HTTP). Un assistant d’IA compatible peut y chercher et croiser les jeux de données, avec leurs sources : identifier une parcelle, chercher un produit phytosanitaire, retrouver une commune ou une entreprise.

Ajoutez cette configuration à votre client MCP. Le nom du serveur (ici lexicon) est libre ; l’emplacement du fichier dépend du client.

JSON
{
  "mcpServers": {
    "lexicon": {
      "type": "http",
      "url": "https://lexicon.osfarm.org/mcp"
    }
  }
}

Ruby on Rails

Un connecteur, c’est un plugin

Les connecteurs d’Ekylibre sont des extensions indépendantes : des moteurs Rails (Rails engines) packagés en gem Ruby, chacun dans son dépôt ekylibre-<nom>.

  • Un dépôt, une gem

    Le plugin déclare un Rails::Engine et s’ajoute au Gemfile d’Ekylibre.

  • Une intégration

    Il décrit la connexion au service tiers (identifiants, vérification) et les synchronisations à lancer, par exemple chaque jour.

  • Des tâches de fond

    Les données sont récupérées par des jobs, puis transformées en objets Ekylibre : interventions, relevés, écritures.

  • Des points d’extension

    Le plugin ajoute ses vues, ses traductions et ses boutons aux écrans existants.

  • Une version publiée

    Dès qu’un tag est publié sur GitHub, le connecteur apparaît sur ce site.

Gemfile.plugins
# Gemfile.plugins (chargé par le Gemfile d'Ekylibre)
gem 'ekylibre-samsys',
    git: 'https://github.com/ekylibre/ekylibre-samsys.git',
    tag: '0.7.0'
lib/ekylibre-samsys/engine.rb
module EkylibreSamsys
  class Engine < ::Rails::Engine
    initializer :ekylibre_samsys_i18n do |app|
      app.config.i18n.load_path += Dir[root.join('config', 'locales', '**', '*.yml')]
    end

    initializer :ekylibre_samsys_integration do
      Samsys::SamsysIntegration.run every: :day do
        SamsysFetchUpdateCreateJob.perform_now(…)
      end
    end

    initializer :add_samsys_partials do
      Ekylibre::View::Addon.add(:extensions_content_top,
        'backend/ride_sets/sync_samsys_toolbar', to: 'backend/ride_sets#index')
    end
  end
end

Extrait abrégé du plugin ekylibre-samsys.

Les 10 plugins stables

Dépôts actifs ayant au moins une version publiée. Version et licence relevées sur GitHub à la construction du site.

DépôtRôleVersionLicence
ekylibre-ednotifIdentification animale1.0.0non déclarée
ekylibre-bankingRelevés bancaires0.1.0non déclarée
ekylibre-hajimariAssistant de démarrage0.11.0AGPL-3.0
ekylibre-planningPlanification1.0.0MIT
ekylibre-samsysMachines connectées0.7.0non déclarée
ekylibre-previmeteoObjets connectés météo0.2.1non déclarée
ekylibre-weenatStations météo et capteurs0.1.1non déclarée
ekylibre-cap2020Pièges connectés1.0.0non déclarée
ekylibre-vitiEkyvitiv3.18.0-63.0MIT
ekylibre-baqioVentes et logistique du vin0.5.1AGPL-3.0

Construire votre connecteur

  1. 1

    Partez d’un plugin existant proche de votre cas : Samsys pour des machines, Weenat pour des capteurs, Baqio pour un logiciel de vente.

  2. 2

    Décrivez l’intégration : authentification auprès de votre service et test de connexion.

  3. 3

    Écrivez la récupération des données dans un job, et leur correspondance avec les modèles d’Ekylibre, en vous appuyant sur les nomenclatures Onoma et Lexicon.

  4. 4

    Ajoutez des tests, la documentation et les traductions (au moins français et anglais).

  5. 5

    Publiez une première version (tag), puis annoncez-la sur le Discord.

Documentation technique

Les licences

ÉlémentLicence
Ekylibre (cœur)GNU AGPL v3
Plugins et connecteursIndiquée dans chaque dépôt (voir le tableau ci-dessus)
Lexicon (code)Code source ouvert sur GitHub
Données du LexiconChaque jeu garde la licence de sa source, précisée dans le catalogue (par exemple Licence Ouverte 2.0)

L’AGPL garantit que le code d’Ekylibre reste libre, y compris quand il est proposé en service en ligne : toute version modifiée mise à disposition des utilisateurs doit publier son code.

Contribuer

Premier commit d’Ekylibre en septembre 2008 : 23 192 commits et 39 contributeurs à ce jour. Signalez un bogue, proposez une amélioration ou une nouvelle donnée : toutes les contributions sont bienvenues.