Loading Optiviera...

REST API

Référence API REST 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.

Démarrage rapide

Du zéro à votre premier appel API en trois étapes

1

S'authentifier

Envoyez vos identifiants à POST /api/auth/login. La réponse contient un token JWT valable 24 heures.

2

Ajouter l'en-tête Auth

Attachez le token à chaque requête : Authorization: Bearer [token]

3

Appeler l'API

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.

Authentification

Chaque requête doit porter un token JWT Bearer valide obtenu depuis le endpoint de connexion

Comment ça fonctionne

  • POST vers /api/auth/login avec votre email et mot de passe
  • Stocker le token de façon sécurisée (cookie httpOnly ou en mémoire)
  • Inclure Authorization: Bearer [token] dans chaque requête suivante
  • Les tokens expirent après 24 heures — renouvelez avec POST /api/auth/refresh
Requête de connexionbash
curl -X POST https://optiviera.com/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"••••"}'
Réponse réussiejson
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "expiresIn": 86400,
  "tokenType": "Bearer"
}
Utiliser le tokenhttp
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

URL de base & Format

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.

Format JSON

Toutes les requêtes et réponses utilisent application/json. Définissez Content-Type: application/json pour les opérations d'écriture.

Portée tenant

Les données sont automatiquement filtrées à votre organisation via le TenantId intégré dans votre JWT.

Pagination

Les endpoints de liste supportent ?page=1&pageSize=20. La réponse inclut totalCount, page et pageSize.

Filtrage & Tri

La plupart des endpoints de liste acceptent des paramètres comme ?status=Open&sortBy=createdAt&sortDir=desc.

Groupes d'endpoints API

12 groupes de ressources couvrant tous les modules de la plateforme

Authentification

  • POST/api/auth/login
  • POST/api/auth/refresh
  • POST/api/auth/logout

Tickets & HelpDesk

  • GET/api/tickets
  • POST/api/tickets
  • GET/api/tickets/{id}
  • PUT/api/tickets/{id}
  • DELETE/api/tickets/{id}
  • POST/api/tickets/{id}/comments

Finance & Comptabilité

  • GET/api/invoices
  • POST/api/invoices
  • GET/api/journal-entries
  • POST/api/journal-entries
  • GET/api/balance-sheet
  • GET/api/trial-balance

RH & Employés

  • GET/api/employees
  • POST/api/employees
  • GET/api/employees/{id}
  • PUT/api/employees/{id}
  • GET/api/positions
  • GET/api/departments

Paie

  • GET/api/payroll
  • POST/api/payroll/run
  • GET/api/payroll/{id}
  • PUT/api/payroll/{id}/approve

Ventes & Commandes

  • GET/api/orders
  • POST/api/orders
  • GET/api/quotations
  • POST/api/quotations
  • GET/api/customers
  • POST/api/customers

Achats

  • GET/api/purchase-orders
  • POST/api/purchase-orders
  • GET/api/suppliers
  • POST/api/suppliers
  • GET/api/purchase-orders/{id}

Inventaire

  • GET/api/products
  • POST/api/products
  • GET/api/stock-movements
  • POST/api/stock-movements
  • GET/api/warehouses

CRM & Leads

  • GET/api/leads
  • POST/api/leads
  • GET/api/contacts
  • POST/api/contacts
  • GET/api/pipeline-stages

Ordres de travail

  • GET/api/work-orders
  • POST/api/work-orders
  • GET/api/work-orders/{id}
  • PUT/api/work-orders/{id}
  • DELETE/api/work-orders/{id}

Rapports & Analyses

  • GET/api/reports/tickets
  • GET/api/reports/finance
  • GET/api/reports/hr
  • GET/api/reports/sales
  • GET/api/reports/inventory

Paramètres

  • GET/api/settings/tenant
  • PUT/api/settings/tenant
  • GET/api/settings/users
  • GET/api/sla-configs
  • POST/api/sla-configs

Codes de statut HTTP

La sémantique HTTP standard est utilisée de manière cohérente dans toute l'API

200OK

Requête réussie. Le corps contient le résultat.

201Créé

Ressource créée. Le corps contient le nouvel objet avec son ID.

204Sans contenu

Requête réussie. Pas de corps (utilisé pour DELETE).

400Requête invalide

Requête mal formée ou champs obligatoires manquants.

401Non autorisé

Token JWT manquant, expiré ou invalide.

403Interdit

Token valide mais permissions insuffisantes pour cette action.

404Introuvable

La ressource n'existe pas ou appartient à un autre tenant.

422Erreur de validation

La validation des données a échoué. Voir le tableau details dans la réponse.

500Erreur serveur

Erreur serveur inattendue. Contactez le support avec l'ID de requête.

Format des réponses d'erreur

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 — HTTP status code
  • error — Error type identifier
  • message — Human-readable description
  • details — Field-level validation errors (array)
Exemple de réponse d'erreurjson
{
  "status": 422,
  "error": "ValidationError",
  "message": "Request validation failed",
  "details": [
    { "field": "email", "message": "Email is required" },
    { "field": "password", "message": "Minimum 8 characters" }
  ]
}

Prêt à intégrer ?

Explorez la documentation Swagger interactive complète ou contactez notre équipe pour l'accès API.