Procédures tRPC
tRPC est l'API canonique de la plateforme Inklura. Chaque domaine est exposé comme un
router de procédures, accessible à l'adresse /api/trpc/<router>.<procedure>. Il y a
environ 350 routers et ~6 567 procédures — le catalogue ci-dessous est représentatif,
non exhaustif.
Nommage des procédures
Un appel nomme un router et une procédure joints par un point :
<router>.<procedure>
Par exemple products.list, orders.get, invoices.createDraft, campaigns.sendCampaign.
Le router regroupe un domaine ; la procédure est l'opération.
Types de procédures
Chaque procédure repose sur l'une des six procédures de base, qui déterminent ce qu'un appelant doit présenter :
| Type | Requiert |
|---|---|
publicProcedure |
Rien — appelable sans session (par ex. connexion, inscription, réinitialisation de mot de passe). |
protectedProcedure |
Une session valide (JWT Bearer ou cookie de session). |
permissionProtectedProcedure(["perm:action"]) |
Une session et la ou les permissions nommées. |
tenantProtectedProcedure |
Une session limitée à un locataire résolu. |
roleProtectedProcedure |
Une session détenant un rôle requis. |
internalProcedure |
Non appelable de l'extérieur — usage interne/service uniquement. |
Les procédures internalProcedure existent dans l'arbre des routers, mais ne sont pas
joignables par un appelant externe. Ne construisez pas dessus.
Conventions d'appel
Les queries sont des GET, les mutations des POST. Les entrées et les sorties sont
encapsulées en superjson : les entrées vont dans {"json":<value>}, et le résultat qui
vous intéresse est imbriqué sous result.data.json. Authentifiez-vous avec un JWT Bearer (voir
Sessions et tokens).
HTTP brut — query (GET)
L'entrée est encodée dans l'URL, dans ?input= :
curl -G "https://manage.inklura.fr/api/trpc/products.get" \
-H "Authorization: Bearer $INKLURA_TOKEN" \
--data-urlencode 'input={"json":{"id":"<product-id>"}}'
Pour une procédure qui ne prend aucune entrée, omettez entièrement ?input= :
curl "https://manage.inklura.fr/api/trpc/auth.getSession" \
-H "Authorization: Bearer $INKLURA_TOKEN"
HTTP brut — mutation (POST)
L'entrée est le corps JSON, encapsulée de la même manière :
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"}}'
Les deux renvoient la charge utile sous result.data.json :
{ "result": { "data": { "json": { "id": "…" } } } }
Client typé (@trpc/client)
Pour les appelants TypeScript, utilisez @trpc/client avec le transformer superjson et un
httpBatchLink pointé vers le mount. Ajoutez l'en-tête Authorization via l'option headers
du link :
import { createTRPCClient, httpBatchLink } from "@trpc/client";
import superjson from "superjson";
const client = createTRPCClient<AppRouter>({
links: [
httpBatchLink({
url: "https://manage.inklura.fr/api/trpc",
transformer: superjson,
headers() {
return {
Authorization: `Bearer ${process.env.INKLURA_TOKEN}`,
// Optionnellement, fixer la portée locataire/site :
"X-Tenant-Id": process.env.INKLURA_TENANT_ID ?? "",
"X-Site-Id": process.env.INKLURA_SITE_ID ?? "",
};
},
}),
],
});
const session = await client.auth.getSession.query();
const created = await client.clients.create.mutate({
name: "Acme SARL",
email: "contact@acme.example",
});
Avec le transformer configuré sur le link, le client gère pour vous l'encapsulation et le désencapsulage superjson — vous passez et recevez des valeurs simples.
Batching
L'endpoint parle le protocole de batch tRPC standard : httpBatchLink regroupe donc plusieurs
appels effectués dans le même tick en une seule requête HTTP. Le remplacement de méthode est
activé sur le mount (allowMethodOverride=true), et le mount accepte à la fois GET et POST.
Catalogue des routers
Les routers ci-dessous sont des exemples vérifiés, regroupés par famille. Ils sont représentatifs des ~350 routers de la plateforme — ce n'est pas une liste complète. Les nombres de procédures sont approximatifs.
Auth et identité
| Router | Procédures (exemples) |
|---|---|
auth |
getSession, getProfile, canAccessManage, getUserInfo, verifyEmail, resendVerificationEmail, et les publiques login / register / signup / requestPasswordReset / bridgeOidc |
Commerce et CRM
| Router | Procédures (exemples) |
|---|---|
products |
~27 procédures — list / get plus le CRUD (seules list / get sont exposées en REST) |
orders |
~48 procédures — CRUD plus le cycle de vie de la préparation de commande |
clients |
create et le reste du CRUD |
invoices |
getInvoices, getInvoice, createInvoice, createDraft, updateDraft, updateInvoiceStatus, convertQuote, createCreditNote, getDashboardMetrics, et la publique getPublicInvoice |
Autres routers de cette famille (noms seulement) : profile, users, tiers, vendors,
inventory, stockActions, recurringInvoices, payments, stripe, shipping,
taxRates, coupons, subscriptions, accounting, billing, saasPlans.
POS et restaurant
Noms seulement : posManagement, posOrders, kitchen/kds, tablePayment, posLoyalty,
clickCollect, floorPlans, tableReservations, delivery.
CMS et publication
Noms seulement : cms, articles, posts, medias, forms, sections, slider,
magazinePublications, classifiedAds, feedApiKeys.
Communications et marketing
| Router | Procédures (exemples) |
|---|---|
campaigns |
getCampaigns, getCampaignById, createCampaign, createCampaignWizard, updateCampaign, deleteCampaign, sendCampaign, pauseCampaign, resumeCampaign, duplicateCampaign, getCampaignActivity, getCampaignTags, createCampaignTag |
helpdeskKb |
getArticles, getArticleById, createArticle, updateArticle, deleteArticle, getCategories, getCategoryById, createCategory, updateCategory, deleteCategory |
Autres routers de cette famille (noms seulement) : marketingCampaigns, emails,
emailTemplates, newsletter, segments, communications, mautic, support,
chat/liveChat.
Plateforme et administration
Noms seulement : admin, tenants, settings, permissions, onboarding, site,
siteProvisioning, webhooks, sessions, monitoring, health, queues,
aiOperations, workflowAutomation.
Comme le catalogue est vaste et en évolution, considérez les listes ci-dessus comme une carte de départ. Les noms de procédures vérifiés peuvent être appelés en toute confiance ; les routers « noms seulement » sont réels, mais les signatures de leurs procédures ne sont pas documentées ici.
Voir aussi
- Sessions et tokens — comment le serveur résout votre identité et votre portée
- Erreurs et limites de débit — l'enveloppe d'erreur et les erreurs de validation Zod
- Pagination et filtrage — la convention
page/pageSize - Endpoints REST — le pont partiel
/api/v1