Développeurs
Ton catalogue dans ton code. Itaja encaisse.
Un SDK pour Node, Python ou Laravel, une commande pour envoyer ce que tu vends, une route pour recevoir les webhooks signés. La référence complète s’ouvre aux marchands de la bêta.
- Node.js
- Python
- Laravel
import { itaja } from "@/itaja.config"; const { checkoutUrl } = await itaja.checkout.create({ homeUrl: "https://shop.example/cart", currency: "XOF", lineItems: [ { name: "Shirt", quantity: 2, unitPrice: 5000 }, ], }); return Response.redirect(checkoutUrl);Démarrage en cinq étapes
01Installe le SDK
npm i @itaja/node# pnpm add @itaja/node# bun add @itaja/node02Pose tes clés dans .env
.env # itjs_ : sandbox · itjp_ : productionITAJA_API_KEY=itjs_…ITAJA_WEBHOOK_SECRET=whsec_…03Déclare ce que tu vends
itaja.config.ts import { createItaja, plan } from "@itaja/node"; const pro = plan({ name: "Pro", group: "My App", price: { amount: 5000, currency: "XOF", interval: "month", },}); export const itaja = createItaja({ catalog: [pro],});04Envoie ton catalogue
npx itaja push# npx itaja status# npx itaja push --yes (CI)05Monte la route des webhooks
app/itaja/webhook/route.ts import { itaja } from "@/itaja.config"; export const POST = itaja.handler;
Côté serveur uniquement : le SDK porte ta clé secrète. Jamais dans un navigateur ni une application mobile.
Un plan, une licence, des crédits, un checkout.
Tu déclares ce que tu vends dans ton code. Une commande l’envoie à Itaja.
- 01Un plan d’abonnement5 000 XOF par mois.
- 02Une licenceUne clé valable un an, activable sur trois appareils.
- 03Un pack de crédits100 crédits pour 1 000 XOF, consommés à l’usage.
- 04Un checkout directUn panier e-commerce, rien à déclarer : deux t-shirts à 5 000 XOF.
import { createItaja, creditPack, credits, license, plan,} from "@itaja/node";// Un plan d’abonnementconst pro = plan({ name: "Pro", group: "My App", price: { amount: 5000, currency: "XOF", interval: "month" },});// Une licenceconst desktop = license({ name: "Desktop app", devices: 3, duration: "days-365", price: { amount: 25000, currency: "XOF" },});// Un pack de créditsconst small = creditPack({ name: "100 tokens", of: credits({ name: "AI tokens" }), credits: 100, price: { amount: 1000, currency: "XOF" },});export const itaja = createItaja({ catalog: [pro, desktop, small],});// Un checkout direct · src/cart.tsconst { checkoutUrl } = await itaja.checkout.create({ homeUrl: "https://shop.example/cart", currency: "XOF", lineItems: [{ name: "Shirt", quantity: 2, unitPrice: 5000 }],});npx itaja push# envoie le catalogue
from itaja import ( create_itaja, credit_pack, credits, license, plan,)# Un plan d’abonnementpro = plan("Pro", "My App", price={ "amount": 5000, "currency": "XOF", "interval": "month"})# Une licencedesktop = license("Desktop app", devices=3, duration="days-365", price={"amount": 25000, "currency": "XOF"})# Un pack de créditssmall = credit_pack("100 tokens", credits("AI tokens"), 100, {"amount": 1000, "currency": "XOF"})itaja = create_itaja(catalog=[pro, desktop, small])# Un checkout direct · cart.pyshirt = {"name": "Shirt", "quantity": 2, "unitPrice": 5000}checkout = itaja.checkout.create( homeUrl="https://shop.example/cart", currency="XOF", lineItems=[shirt])itaja push# envoie le catalogue
<?phpuse Itaja\Laravel\Catalog\{CreditPack, Credits, License, Plan};return [ // Un plan d’abonnement Plan::make('Pro', 'My App', price: ['amount' => 5000, 'currency' => 'XOF', 'interval' => 'month']), // Une licence License::make('Desktop app', price: ['amount' => 25000, 'currency' => 'XOF'], devices: 3, duration: 'days-365'), // Un pack de crédits CreditPack::make('100 tokens', Credits::make('AI tokens'), 100, ['amount' => 1000, 'currency' => 'XOF']),];// Un checkout direct · CartController.php$checkout = Itaja::checkout()->create([ 'homeUrl' => url('/cart'), 'currency' => 'XOF', 'lineItems' => [['name' => 'Shirt', 'quantity' => 2, 'unitPrice' => 5000]],]);php artisan itaja:push# envoie le catalogue
Montants indicatifs. Le SDK tourne sur ton serveur : il porte ta clé secrète.
Un événement, une fonction.
La route vérifie la signature, ignore une livraison déjà traitée et répond 500 si ton code échoue : Itaja relivre. Chaque événement arrive typé.
Les événements
- checkout.paid
- invoice.paid
- invoice.payment_failed
- subscription.past_due
- subscription.canceled
export const itaja = createItaja({ catalog: [pro], on: { "checkout.paid": ({ data }) => fulfil(data.checkoutId), "subscription.past_due": ({ data }) => warnCustomer(data), "subscription.canceled": ({ data }) => downgrade(data), },});# Teste un handler en local, avec un exemple signénpx itaja trigger checkout.paid \ --url localhost:3000/itaja/webhookCe qu’il y a derrière
Démarrage rapide
Trois paquets publiés : @itaja/node (npm), itaja (PyPI) et itaja/itaja-laravel (Composer). Tu déclares ton catalogue dans ton langage, tu l’envoies, une seule route reçoit les webhooks.
npx itaja pushRéférence API
Produits, clients, encaissement, abonnements, crédits et license keys derrière une seule API, décrite par une spécification OpenAPI que ton agent de codage lit directement.
OpenAPIWebhooks
Des événements signés : paiement confirmé, crédits accordés ou consommés, license key émise ou révoquée. Le SDK vérifie la signature et n’exécute jamais deux fois la même livraison.
itaja.handlerAgents de codage
Neuf skills publics (itaja/skills) pour l’agent que tu utilises déjà : il lit l’API et écrit l’intégration à ta place.
npx skills add itaja/skills
Itaja est en bêta privée : la référence complète est ouverte aux marchands de la bêta. Contacter les sales
Intégration
Une commande. Ton agent fait le reste.
Des SDK Node, Python et Laravel, une API lisible, et des skills prêts pour l’agent de codage que tu utilises déjà.
Pour ton agent de codage
npx skills add itaja/skills
Les SDK, avec ton gestionnaire de paquets
- npm install @itaja/node
- pnpm add @itaja/node
- bun add @itaja/node
- yarn add @itaja/node
- pip install itaja
- composer require itaja/itaja-laravel
Skills, SDKs et packages
- TypeScript
- Node.js
- Python
- Dart (Bientôt)
- Laravel
Les SDK Node, Python et Laravel sont publiés ; Dart est annoncé. Ils portent ta clé secrète : ils tournent sur ton serveur, jamais dans un navigateur ni une application mobile. La première commande installe les skills dans ton agent, les suivantes ajoutent le SDK de ton langage.