AO VIVO · AUDIT CHAIN · UE
SISTEMA · 99,99% DISPONIBILIDADE
v 1.0 ↗ FEITO NA UE
URL BASE
https://api.nexbasira.com/v1
🇪🇺 Alojado na UE SemVer · v1 stable 12 meses de retrocompat. mín.

A sua primeira sessão em 5 minutos.

# 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.

Tudo o que pode controlar a partir da API.

POST GET DELETE

/sessions

Criar, listar, obter e terminar uma sessão de inspeção. Convites por SMS / email.

GET

/evidence

Listar as provas de uma sessão, transferir o PDF assinado, obter o hash da blockchain.

GET

/whiteboards

Obter as anotações em SVG / PNG por sessão. Exportação com carimbo temporal.

POST GET

/webhooks

Registar endpoint, rotação do segredo, teste de disparo. Assinatura HMAC-SHA256.

GET PATCH

/branding

Personalizar logótipo, cores, domínio para o modo marca branca.

GET

/org

Leitura dos metadados da organização, quotas, membros, funções RBAC.

Webhooks assinados HMAC-SHA256.

Formato ao estilo Stripe com tolerância de relógio de 5 minutos. Segredo armazenado cifrado em repouso. Novas tentativas exponenciais com backoff até 24h.

Eventos disponíveis
session.createdSessão criada, link enviado
session.joinedParticipante entrou
session.evidence.capturedNova foto / anotação
session.signedAssinatura eIDAS aposta
session.anchoredHash inscrito na blockchain
session.completedPDF pronto a transferir
Exemplo de assinatura
# 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 tipados e mantidos.

@nexbasira/node
v2.6.0 · Node 18+
npm install @nexbasira/node
  • Tipos gerados a partir de OpenAPI
  • Paginação async iterator
  • Verificação de webhook integrada
nexbasira (Python)
v2.6.0 · Python 3.10+
pip install nexbasira
  • Modelos Pydantic v2
  • Modo async + sync
  • Erros tipados por código
@nexbasira/react
v2.6.0 · React 18+
npm install @nexbasira/react
  • Componente <Embed/> pronto a usar
  • Hooks useSession, useEvidence
  • Theming compatível com Tailwind
@nexbasira/embed
v2.6.0 · Vanilla JS
<script src="cdn.nbx.com/embed.js"></script>
  • Zero framework, <30 KB
  • CDN distribuído na Europa
  • Compatível com todos os frameworks

Ligue a Nexbasira à sua stack.

🔑

OIDC + SAML 2.0 SSO

Provisioning just-in-time com allowlist por domínio e função por defeito.

👥

SCIM 2.0

Provisioning automático de utilizadores e grupos. Bearer token por organização.

📨

Webhooks & verificação

Helpers de verificação HMAC em todos os SDKs. Novas tentativas exponenciais.

🏠

Self-hosting

Stack Docker + Caddy documentada. Disponível no plano Enterprise.

🔄

Idempotência

Cabeçalho Idempotency-Key em todos os POST. Sem duplicados, nunca.

📊

Rate limits

Cabeçalhos X-RateLimit-* em cada resposta. Quotas por chave API e por org.

OpenAPI 3.1

Esquema gerado, público, versionado.

Transfira o esquema OpenAPI 3.1 filtrado (apenas as operações públicas) e gere os seus tipos automaticamente.

https://api.nexbasira.com/v1/openapi.json
# 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

Estabilidade garantida por SemVer-URL

As alterações disruptivas vivem sob um novo prefixo (/v2/) com pelo menos 12 meses de sobreposição antes da reforma da versão anterior. As adições (novos campos opcionais, novos endpoints, novos tipos de eventos) são implementadas no local. Os nossos SDKs tratam os campos desconhecidos como compatíveis com versões futuras.

Pronto para integrar a Nexbasira?

Obtenha a sua chave API sandbox em 30 segundos, sem cartão de crédito.