NOVIRA API

API métier · Distribution B2B

API NOVIRA.

Le point d'accès unique aux opérations de NOVIRA, la plateforme de distribution B2B de CYBASTION pour la connectivité Internet par satellite Starlink.

Partenaires distributeurs, conformité KYC, clients et sites, réservations, catalogue : le back-office CYBASTION et l'application mobile s'appuient sur les mêmes règles métier, décrites dans un contrat unique.

Domaines couverts

Vendre et opérer, de la prospection à la réservation

L'API couvre le premier périmètre de la plateforme. Chaque réponse est cloisonnée par organisation : un partenaire ne voit que ses propres clients et réservations.

Session

Utilisateur connecté, organisation, rôles cumulés et permissions qui pilotent l'affichage des applications.

  • GET/api/v1/moi

Partenaires

Distributeurs référencés, zones couvertes, secteurs, capacité commerciale et contrat-cadre.

  • GET/api/v1/partenaires
  • GET/api/v1/partenaires/{id}

Conformité

Pièces KYC des partenaires, statut de vérification, motifs de rejet et dates d'expiration.

  • GET/api/v1/partenaires/{id}/documents-kyc

Clients

Entreprises clientes, contacts et sites géolocalisés où la connectivité est installée.

  • GET/api/v1/clients
  • GET/api/v1/clients/{id}
  • GET/api/v1/clients/{id}/sites

Réservations

Demandes des partenaires sur un client, validation par CYBASTION et détection des doublons.

  • GET/api/v1/reservations

Catalogue

Forfaits data Starlink et tarif en vigueur à la date du jour, avec historique des prix.

  • GET/api/v1/offres

Authentification

Un jeton, des permissions

Toutes les opérations exigent un jeton d'accès, à l'exception du contrôle de disponibilité.

  1. Connexion par e-mail

    L'utilisateur se connecte avec son adresse e-mail. Le service d'authentification lui délivre un jeton d'accès à durée limitée.

  2. Jeton transmis à chaque appel

    Le jeton accompagne chaque requête dans l'en-tête Authorization: Bearer.

  3. Droits calculés par permission

    Un utilisateur peut cumuler plusieurs rôles : ses droits sont l'union de leurs permissions, renvoyée par /api/v1/moi.

Les applications décident de ce qu'elles affichent à partir des permissions, jamais à partir d'un nom de rôle. Un élément hors du périmètre de l'organisation répond comme s'il n'existait pas.

Requête
GET /api/v1/moi
Host: api-novira.optima.aora.tech
Authorization: Bearer ‹jeton d'accès›
Réponse200 · extrait
{
  "utilisateur": { "prenom": "Ibrahim", "nom": "Ouattara" },
  "organisation": { "nom": "CYBASTION", "type": "cybastion" },
  "roles": [
    { "code": "cybastion_finance", "libelle": "Finance" },
    { "code": "cybastion_operations", "libelle": "Opérations" }
  ],
  "permissions": [ "clients.consulter",  ]
}

Conventions

Les mêmes règles sur toutes les opérations

Les noms de champs reprennent ceux du modèle de données et les identifiants sont des UUID. Les applications n'ont qu'une seule façon de lire une liste, une erreur, une date ou un montant.

Pagination

Toutes les listes sont paginées et renvoient les éléments de la page avec la position dans la liste.

  • page commence à 1.
  • taille va de 1 à 100 éléments, 20 par défaut.
GET /api/v1/offres?page=1&taille=2
{
  "donnees": [  ],
  "pagination": { "page": 1, "taille": 2, "total": 25, "pages": 13 }
}

Format d'erreur

Toute erreur a la même forme : un code stable pour le programme, un message en français prêt à afficher et des précisions facultatives.

Réponse422
{
  "code": "parametres_invalides",
  "message": "Certains paramètres sont invalides.",
  "details": { "taille": "La taille de page doit être comprise entre 1 et 100." }
}
HTTPCodeSituation
401authentification_requiseSession absente ou expirée
403acces_refusePermission manquante
404ressource_introuvableÉlément inexistant ou hors périmètre
422parametres_invalidesParamètres de requête invalides
429trop_de_requetesTrop d'appels rapprochés
503service_indisponibleService momentanément indisponible

Dates et horodatages

L'API échange des formats normalisés ; les applications les présentent au format français.

  • Dates au format AAAA-MM-JJ.
  • Horodatages ISO 8601 en UTC, soit l'heure d'Abidjan.
"valide_du": "2026-09-01"01/09/2026
"cree_le": "2026-08-28T10:00:00Z"28/08/2026 à 10:00

Montants

Les montants sont exprimés en francs CFA (XOF), hors taxes sauf mention contraire. La TVA applicable est portée par le catalogue.

  • Valeur numérique, sans séparateur ni devise.
  • Affichage avec espaces fines et la mention FCFA.
"prix_ht": 21400002 140 000 FCFA HT
"prix_ht": 36700003 670 000 FCFA HT