
Loading Optiviera...
JSON · Auth JWT · Multi-tenant
Intégrez n'importe quel système avec Optiviera via une API REST entièrement documentée. Tous les points de terminaison nécessitent un token JWT Bearer et sont automatiquement limités à votre tenant.
Du zéro à votre premier appel API en trois étapes
Envoyez vos identifiants à POST /api/auth/login. La réponse contient un token JWT valable 24 heures.
Attachez le token à chaque requête : Authorization: Bearer [token]
Tous les endpoints se trouvent sous https://optiviera.com/api et répondent en JSON. Le contexte tenant est dérivé automatiquement de votre token.
Chaque requête doit porter un token JWT Bearer valide obtenu depuis le endpoint de connexion
curl -X POST https://optiviera.com/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","password":"••••"}'{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresIn": 86400,
"tokenType": "Bearer"
}Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...Tout ce que vous devez savoir avant votre premier appel
URL de base: https://optiviera.com/api — Tous les endpoints sont relatifs à cette URL de base. Utilisez toujours HTTPS.
Toutes les requêtes et réponses utilisent application/json. Définissez Content-Type: application/json pour les opérations d'écriture.
Les données sont automatiquement filtrées à votre organisation via le TenantId intégré dans votre JWT.
Les endpoints de liste supportent ?page=1&pageSize=20. La réponse inclut totalCount, page et pageSize.
La plupart des endpoints de liste acceptent des paramètres comme ?status=Open&sortBy=createdAt&sortDir=desc.
12 groupes de ressources couvrant tous les modules de la plateforme
/api/auth/login/api/auth/refresh/api/auth/logout/api/tickets/api/tickets/api/tickets/{id}/api/tickets/{id}/api/tickets/{id}/api/tickets/{id}/comments/api/invoices/api/invoices/api/journal-entries/api/journal-entries/api/balance-sheet/api/trial-balance/api/employees/api/employees/api/employees/{id}/api/employees/{id}/api/positions/api/departments/api/payroll/api/payroll/run/api/payroll/{id}/api/payroll/{id}/approve/api/orders/api/orders/api/quotations/api/quotations/api/customers/api/customers/api/purchase-orders/api/purchase-orders/api/suppliers/api/suppliers/api/purchase-orders/{id}/api/products/api/products/api/stock-movements/api/stock-movements/api/warehouses/api/leads/api/leads/api/contacts/api/contacts/api/pipeline-stages/api/work-orders/api/work-orders/api/work-orders/{id}/api/work-orders/{id}/api/work-orders/{id}/api/reports/tickets/api/reports/finance/api/reports/hr/api/reports/sales/api/reports/inventory/api/settings/tenant/api/settings/tenant/api/settings/users/api/sla-configs/api/sla-configsLa sémantique HTTP standard est utilisée de manière cohérente dans toute l'API
Requête réussie. Le corps contient le résultat.
Ressource créée. Le corps contient le nouvel objet avec son ID.
Requête réussie. Pas de corps (utilisé pour DELETE).
Requête mal formée ou champs obligatoires manquants.
Token JWT manquant, expiré ou invalide.
Token valide mais permissions insuffisantes pour cette action.
La ressource n'existe pas ou appartient à un autre tenant.
La validation des données a échoué. Voir le tableau details dans la réponse.
Erreur serveur inattendue. Contactez le support avec l'ID de requête.
Toutes les réponses d'erreur suivent une structure JSON cohérente
En cas d'échec d'une requête, l'API retourne un corps JSON structuré. Utilisez le tableau details pour le retour de validation au niveau des champs.
{
"status": 422,
"error": "ValidationError",
"message": "Request validation failed",
"details": [
{ "field": "email", "message": "Email is required" },
{ "field": "password", "message": "Minimum 8 characters" }
]
}Explorez la documentation Swagger interactive complète ou contactez notre équipe pour l'accès API.