Introduction
L'API VOP permet à des applications tierces et à des portails clients d'accéder aux données de la plateforme Revtelecom. Elle est accessible à l'adresse https://vopapi.revtelecom.net.
- Toutes les réponses sont au format JSON
- L'authentification utilise des tokens JWT Bearer
- La version courante de l'API est v1
URL de base
https://vopapi.revtelecom.net/v1
Tous les endpoints sont préfixés par /v1.
Authentification
L'API utilise des tokens JWT (JSON Web Token) d'une durée de validité d'1 heure. Pour obtenir un token, appelez POST /v1/auth/token avec vos identifiants VOP.
Incluez ensuite le token dans le header Authorization de chaque requête :
Authorization: Bearer <votre_token>
Exemple avec cURL
# 1. Obtenir un token
curl -X POST https://vopapi.revtelecom.net/v1/auth/token \
-H "Content-Type: application/json" \
-d '{"username":"user@societe.fr","password":"motdepasse"}'
# 2. Utiliser le token
curl https://vopapi.revtelecom.net/v1/acces \
-H "Authorization: Bearer eyJhbGci..."
Codes d'erreur
| Code HTTP | Signification |
|---|---|
| 200 | Succès |
| 201 | Ressource créée |
| 400 | Requête invalide (paramètre manquant ou incorrect) |
| 401 | Non authentifié (token absent, invalide ou expiré) |
| 403 | Accès refusé (ressource appartenant à un autre revendeur) |
| 404 | Ressource introuvable |
| 500 | Erreur serveur interne |
Format d'une réponse d'erreur
{
"success": false,
"error": "Token invalide ou expiré"
}
Format d'une réponse réussie
{
"success": true,
"data": { /* contenu de la réponse */ }
}
Format d'une réponse paginée
{
"success": true,
"data": [ /* tableau de résultats */ ],
"meta": {
"total": 142,
"page": 1,
"per_page": 25,
"pages": 6
}
}
Auth
Authentifie un utilisateur VOP et retourne un token JWT valable 1 heure.
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| username | string | Requis | Identifiant VOP (email ou username) |
| password | string | Requis | Mot de passe VOP |
Exemple de requête
POST /v1/auth/token
Content-Type: application/json
{
"username": "user@societe.fr",
"password": "motdepasse"
}
Exemple de réponse
{
"success": true,
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 3600,
"token_type": "Bearer",
"societe": "MA SOCIETE"
}
}
Trunk SIP
Retourne la liste des trunks SIP actifs.
Paramètres query
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| page | integer | 1 | Numéro de page |
| per_page | integer | 25 | Résultats par page (max 100) |
| client_id | integer | — | Filtrer par client |
Exemple de réponse
{
"success": true,
"data": [
{ "id": 25, "ref": "MASTRU00013", "client": "MA SOCIETE" }
],
"meta": { "total": 5, "page": 1, "per_page": 25, "pages": 1 }
}
Retourne les informations complètes d'un trunk : générales, configuration et statut.
Exemple de réponse
{
"success": true,
"data": {
"generales": {
"id": 25, "ref": "MASTRU00013", "client": "MA SOCIETE",
"server": "sip01.revtelecom.net", "type": "SIP",
"datesub": "2024-01-15", "dateend": "2026-01-15", "nb_sda": 12
},
"trunk": {
"name": "sip-client-01", "mode": "trunk",
"inbound": 10, "outbound": 10, "global": 20,
"DPT": "75", "strip": 0,
"ips": [{ "ip": "1.2.3.4", "pays": "France", "isp": "Orange" }],
"zones": { "zone1": true, "zone2": true, "zone3": false }
},
"status": {
"statut": "Actif",
"plafond": "500.00", "plafond_sva": "100.00",
"conso_appels": 3600, "conso_spec": 0, "conso_ent": 120
}
}
}
Paramètres query
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| page | integer | 1 | Numéro de page |
| per_page | integer | 25 | Résultats par page (max 500) |
| date_start | string | 1er du mois | Date début (YYYY-MM-DD HH:MM:SS) |
| date_end | string | Aujourd'hui | Date fin (YYYY-MM-DD HH:MM:SS) |
Exemple de réponse
{
"success": true,
"data": [
{
"date": "2026-06-24 10:32:11",
"appelant": "0612345678",
"numero": "0123456789",
"duree": "00:02:34",
"disposition": "ANSWERED"
}
],
"meta": { "total": 142, "page": 1, "per_page": 25, "pages": 6 }
}
Mêmes paramètres que /cdr/recus.
Exemple de réponse
{
"success": true,
"data": [
{
"date": "2026-06-24 09:15:00",
"appelant": "0123456789",
"destination": "0698765432",
"duree": "00:01:12",
"disposition": "ANSWERED"
}
],
"meta": { "total": 98, "page": 1, "per_page": 25, "pages": 4 }
}
Mobile
Retourne la liste des lignes mobiles actives.
Paramètres query
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| page | integer | 1 | Numéro de page |
| per_page | integer | 25 | Résultats par page (max 100) |
| client_id | integer | — | Filtrer par client |
Exemple de réponse
{
"success": true,
"data": [
{ "id": 18, "ref": "MASMOB00014", "client": "MA SOCIETE" }
],
"meta": { "total": 2, "page": 1, "per_page": 25, "pages": 1 }
}
Exemple de réponse
{
"success": true,
"data": {
"generales": {
"id": 18, "ref": "MASMOB00014", "client": "MA SOCIETE",
"abonne": "Dupont Jean", "ligne": "0612345678",
"datesub": "01/03/2024", "dateend": "01/03/2026"
},
"ligne": {
"serial": "8933012345678901234",
"forfait": "20 Go", "data": "20480",
"option_5g": false, "ip_fixe": ""
},
"status": { "statut": "Actif" }
}
}
Paramètres query
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| page | integer | 1 | Numéro de page |
| per_page | integer | 25 | Max 500 |
| date_start | string | 1er du mois | YYYY-MM-DD HH:MM:SS |
| date_end | string | Aujourd'hui | YYYY-MM-DD HH:MM:SS |
Exemple de réponse
{
"success": true,
"data": [
{
"date": "2026-06-24 10:00:00", "apn": "mobiledata",
"volume": "12.45 Mo", "pays": "France",
"roaming": "Non", "imei": "354123456789012", "rat": "4G"
}
],
"meta": { "total": 48, "page": 1, "per_page": 25, "pages": 2 }
}
Mêmes paramètres que /cdr/data.
Exemple de réponse
{
"success": true,
"data": [
{
"date": "2026-06-24 09:15:00", "type": "Appel sortant",
"appelant": "0612345678", "destination": "0698765432",
"duree": "00:02:15", "roaming": "Non"
}
],
"meta": { "total": 23, "page": 1, "per_page": 25, "pages": 1 }
}
IoT / M2M
Retourne la liste des cartes SIM IoT actives.
Paramètres query
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| page | integer | 1 | Numéro de page |
| per_page | integer | 25 | Résultats par page (max 100) |
| client_id | integer | — | Filtrer par client |
Exemple de réponse
{
"success": true,
"data": [
{ "id": 5, "ref": "MASM2M00001", "client": "MA SOCIETE" }
],
"meta": { "total": 1, "page": 1, "per_page": 25, "pages": 1 }
}
Exemple de réponse
{
"success": true,
"data": {
"generales": {
"id": 5, "ref": "MASM2M00001", "client": "MA SOCIETE",
"abonne": "Capteur Site A", "ligne": "33612345678",
"datesub": "01/01/2025", "dateend": "01/01/2027"
},
"sim": {
"serial": "8933012345678901234",
"forfait": "1 Mo Europe", "data": "1", "tarif": "2.50"
},
"status": { "statut": "Actif" }
}
}
Mêmes paramètres et format de réponse que /v1/mobile/{id}/cdr/data.
Mêmes paramètres et format de réponse que /v1/mobile/{id}/cdr/voix.