Aperçu

L'API de la plateforme Inklura expose chaque domaine métier — produits, commandes, clients, factures, campagnes, et environ 350 autres routers — sur une seule surface canonique.

  • Canonique : tRPC. Chaque procédure est accessible à l'adresse /api/trpc/<router>.<procedure>. Il y a environ 350 routers de premier niveau et ~6 567 procédures.
  • Partiel : REST. Un pont /api/v1/<router>/<procedure> existe, mais seule une poignée de procédures est câblée à ce jour. Considérez-le comme expérimental.

Les nouvelles intégrations devraient viser tRPC.

URL de base

https://manage.inklura.fr

Tous les exemples de cette page utilisent cet hôte. Voir Environnements pour d'autres cibles.

Note

Une copie interne « lean » du même router tourne sur l'interface de loopback (127.0.0.1:4000) pour servir la console ; elle n'est pas publique. Le serveur de développement écoute sur le port 3060.

Format des requêtes et des réponses

tRPC est monté sur /api/trpc et accepte à la fois GET et POST. Le transformer de sérialisation est superjson : les entrées sont donc encapsulées sous la forme {"json": <value>}, et la charge utile qui vous intéresse est imbriquée sous result.data.json dans la réponse.

Type de procédure Verbe HTTP Entrée
Query GET ?input={"json":<value>} (encodé dans l'URL)
Mutation POST corps de requête {"json":<value>}

Query (GET)

Une query passe son entrée dans l'URL. Ici, auth.getSession ne prend aucune entrée, donc le ?input= est omis :

curl "https://manage.inklura.fr/api/trpc/auth.getSession" \
  -H "Authorization: Bearer $INKLURA_TOKEN"

Une query qui prend une entrée encode une enveloppe superjson dans ?input= :

curl -G "https://manage.inklura.fr/api/trpc/products.get" \
  -H "Authorization: Bearer $INKLURA_TOKEN" \
  --data-urlencode 'input={"json":{"id":"<product-id>"}}'

La réponse imbrique le résultat sous result.data.json :

{
  "result": {
    "data": {
      "json": { "id": "<product-id>", "name": "…" }
    }
  }
}

Mutation (POST)

Une mutation envoie son entrée dans le corps JSON, là encore encapsulée dans {"json":<value>} :

curl -X POST "https://manage.inklura.fr/api/trpc/clients.create" \
  -H "Authorization: Bearer $INKLURA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"json":{"name":"Acme SARL","email":"contact@acme.example"}}'

La réponse a la même forme result.data.json. Voir Procédures tRPC pour un exemple @trpc/client typé et l'ensemble des conventions d'appel.

Batching

L'endpoint parle le protocole de batch tRPC standard : un client configuré avec httpBatchLink peut donc regrouper plusieurs appels dans une seule requête HTTP. Le remplacement de méthode est activé sur le mount (allowMethodOverride=true). Voir Procédures tRPC.

Tenancy

Inklura est multi-locataire, et votre locataire voyage dans votre identifiant. Chaque appel se résout à une portée locataire (et généralement site) :

  • JWT Bearer (recommandé). Le token signé encode votre tenantId et votre siteId. Lorsque vous vous authentifiez avec un token Bearer, le serveur prend le locataire/site directement dans le token et ne cherche pas plus loin. C'est ce qui fait de manage.inklura.fr un endpoint unique et véritablement multi-locataire — vous choisissez le locataire en choisissant le token que vous envoyez, et la même URL sert tous les locataires. Voir Sessions et tokens.
  • Cookie de session / navigateur. Une requête authentifiée uniquement par un cookie de session déduit sa portée à partir de, dans l'ordre : les en-têtes explicites X-Tenant-Id / X-Site-Id, puis les cookies selected_tenant / selected_site / selected_host, puis l'en-tête Host de la requête.
X-Tenant-Id: <tenant uuid>
X-Site-Id:   <site uuid>
Note

Ne comptez pas sur X-Tenant-Id / X-Site-Id pour choisir un locataire sur l'hôte partagé manage.inklura.fr — les en-têtes de tenancy fournis par le client y sont supprimés à titre de mesure anti-usurpation. Les appelants programmatiques doivent porter le locataire dans leur token Bearer, qui fait autorité sur tous les hôtes ; le chemin par en-tête est destiné à un locataire appelant son propre domaine, où le Host identifie déjà le locataire. Les portails OpenAPI annoncent toujours les deux en-têtes aux côtés de bearerAuth pour ce cas.

Note

La tenancy est appliquée dans le code applicatif, et non par la sécurité au niveau des lignes de la base de données. Chaque ligne détenue par un locataire porte un tenantId — voir le Modèle de données.

Où aller ensuite

Page Ce qu'elle couvre
Sessions et tokens Ordre de résolution des tokens, portée locataire/site, bypass de dev
Procédures tRPC Types de procédures, conventions d'appel, catalogue des routers
Endpoints REST Le pont partiel /api/v1 et les portails OpenAPI
Modèle de données ORM, multi-tenancy et les modèles clés
Erreurs et limites de débit Enveloppe d'erreur, codes et limites limitées à des fonctionnalités
Pagination et filtrage La convention page/pageSize