Une API propre, typée, documentée.
REST + JSON, versionnée par URL, scope-gated, paginée par curseur. SDKs Node, Python, React et Embed. Webhooks signés, OpenAPI 3.1 généré, code generators prêts à l'emploi.
Première session en 5 minutes.
# 1. Créer une session d'inspection
curl -X POST https://api.nexbasira.com/v1/sessions \
-H "Authorization: Bearer nbx_live_sk_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"type": "field_inspection",
"reference": "INS-42871",
"participant": {
"name": "Marie L.",
"channel": "sms",
"phone": "+33612345678"
},
"callbacks": {
"session.completed": "https://your-app.com/webhooks/nbx"
}
}'
# Réponse 201 — la session est créée, le lien SMS est en route
{
"id": "sess_42871",
"status": "pending",
"join_url": "https://join.nexbasira.com/s/abc123def...",
"expires_at": "2026-05-26T14:00:00Z"
}import Nexbasira from '@nexbasira/node';
const nbx = new Nexbasira({ apiKey: process.env.NBX_KEY });
const session = await nbx.sessions.create({
type: 'field_inspection',
reference: 'INS-42871',
participant: {
name: 'Marie L.',
channel: 'sms',
phone: '+33612345678',
},
callbacks: {
'session.completed': 'https://your-app.com/webhooks/nbx',
},
});
console.log(session.join_url);
// → https://join.nexbasira.com/s/abc123def...
// Itérer sur les sessions récentes (async iterator)
for await (const s of nbx.sessions.list({ status: 'completed' })) {
console.log(s.id, s.completed_at);
}from nexbasira import Nexbasira
nbx = Nexbasira(api_key=os.environ["NBX_KEY"])
session = nbx.sessions.create(
type="field_inspection",
reference="INS-42871",
participant={
"name": "Marie L.",
"channel": "sms",
"phone": "+33612345678",
},
callbacks={
"session.completed": "https://your-app.com/webhooks/nbx",
},
)
print(session.join_url)
# → https://join.nexbasira.com/s/abc123def...
# Récupérer le dossier de preuve une fois signé
evidence = nbx.evidence.retrieve(session_id=session.id)
print(evidence.pdf_url, evidence.audit_chain_hash)import { NexbasiraEmbed } from '@nexbasira/react';
export function InspectionView({ sessionId }) {
return (
<NexbasiraEmbed
sessionId={sessionId}
onCapture={(evt) => trackPhoto(evt)}
onSigned={(evt) => redirect(evt.evidence_url)}
theme="dark"
brand={{ logo: "/logo.svg", accent: "#00E5A0" }}
/>
);
}
// L'embed gère WebRTC, capture GPS, signature eIDAS.
// Vous gérez l'UI autour. White-label par défaut.Tout ce que vous pouvez piloter depuis l'API.
/sessions
Créer, lister, récupérer et terminer une session d'inspection. Invitations SMS / email.
/evidence
Lister les preuves d'une session, télécharger le PDF signé, récupérer le hash blockchain.
/whiteboards
Récupérer les annotations en SVG / PNG par session. Export horodaté.
/webhooks
Enregistrer un endpoint, rotation du secret, test-fire. Signature HMAC-SHA256.
/branding
Personnaliser logo, couleurs, domaine pour le mode marque blanche.
/org
Lecture des métadonnées de l'organisation, quotas, membres, rôles RBAC.
Webhooks signés HMAC-SHA256.
Format Stripe-style avec tolérance d'horloge de 5 minutes. Secret stocké chiffré au repos. Re-tentatives exponentielles avec backoff jusqu'à 24h.
# En-tête envoyé par Nexbasira
Nbx-Signature: t=1714060800,v1=5257a869e7ec...
# Vérification (Node.js)
import { verifyWebhook } from '@nexbasira/node';
app.post('/webhooks/nbx', (req, res) => {
const event = verifyWebhook(
req.rawBody,
req.headers['nbx-signature'],
process.env.NBX_WEBHOOK_SECRET
);
if (event.type === 'session.completed') {
downloadEvidence(event.data.id);
}
res.json({ ok: true });
});
4 SDKs typés et maintenus.
npm install @nexbasira/node
- Types générés depuis OpenAPI
- Pagination async iterator
- Vérif webhook intégrée
pip install nexbasira
- Modèles Pydantic v2
- Mode async + sync
- Erreurs typées par code
npm install @nexbasira/react
- Composant <Embed/> clé en main
- Hooks useSession, useEvidence
- Theming Tailwind compat.
<script src="cdn.nbx.com/embed.js"></script>
- Zéro framework, <30 Ko
- CDN europe distribué
- Compat. tous frameworks
Connectez Nexbasira à votre stack.
OIDC + SAML 2.0 SSO
Just-in-time provisioning avec allowlist par domaine et rôle par défaut.
SCIM 2.0
Provisioning automatique des utilisateurs et groupes. Bearer token par organisation.
Webhooks & vérification
Helpers de vérification HMAC dans tous les SDKs. Re-tentatives exponentielles.
Self-hosting
Stack Docker + Caddy documentée. Disponible sur plan Enterprise.
Idempotence
En-tête Idempotency-Key sur tous les POST. Pas de doublon, jamais.
Rate limits
Headers X-RateLimit-* sur chaque réponse. Quotas par clé API et par org.
Schéma généré, public, versionné.
Téléchargez le schéma OpenAPI 3.1 filtré (uniquement les opérations publiques) et générez vos types automatiquement.
# Types TypeScript
npx openapi-typescript \
https://api.nexbasira.com/v1/openapi.json \
-o src/nbx-types.ts
# Modèles Pydantic
datamodel-codegen \
--url https://api.nexbasira.com/v1/openapi.json \
--output-model-type pydantic_v2.BaseModel \
--output nbx_models.py
Stabilité garantie par SemVer-URL
Les changements cassants vivent sous un nouveau préfixe (/v2/) avec 12 mois de chevauchement minimum avant la retraite de la version précédente. Les ajouts (nouveaux champs optionnels, nouveaux endpoints, nouveaux événements) sont déployés en place. Nos SDKs traitent les champs inconnus comme rétrocompatibles.
Prêt à intégrer Nexbasira ?
Obtenez votre clé API sandbox en 30 secondes, sans carte bancaire.