Référence API OmniHSS
← Retour au Guide des Opérations
Table des Matières
- Aperçu de l'API
- Authentification
- Gestion des Abonnés
- Gestion des MSISDN
- Gestion des SIM
- Gestion des Ensembles de Clés
- Gestion des Profils
- Gestion des IP Statique
- Gestion du Roaming
- Gestion de l'EIR
- Statut et Santé
- Gestion des Erreurs
- Exemples d'Utilisation de l'API
Aperçu de l'API
URL de Base
https://[hostname]:8443/api
Format de la Demande
- Content-Type :
application/json - Protocole : HTTPS uniquement
- Port : 8443 (configurable)
Format de la Réponse
Toutes les réponses sont en JSON avec la structure suivante :
Réponse de Succès :
{
"data": { ... }
}
Réponse d'Erreur :
{
"error": "Description du message d'erreur"
}
Codes de Statut HTTP
| Code | Signification | Cas d'Utilisation |
|---|---|---|
| 200 | OK | GET, PUT, DELETE réussi |
| 201 | Créé | POST réussi |
| 400 | Mauvaise Demande | Données d'entrée invalides |
| 404 | Non Trouvé | La ressource n'existe pas |
| 422 | Entité Non Traitable | Erreur de validation |
| 500 | Erreur Interne du Serveur | Erreur côté serveur |
Flux de Demande API
Gestion des Abonnés
Lister les Abonnés
Récupérer tous les abonnés ou filtrer par critères.
Point de Terminaison : GET /api/subscriber
Paramètres de Requête :
| Paramètre | Type | Description |
|---|---|---|
enabled | boolean | Filtrer par statut activé |
ims_enabled | boolean | Filtrer par statut IMS activé |
Exemple de Demande :
curl -k https://hss.example.com:8443/api/subscriber
Exemple de Réponse :
{
"data": [
{
"id": 1,
"imsi": "001001123456789",
"enabled": true,
"ims_enabled": true,
"sim_id": 1,
"key_set_id": 1,
"epc_profile_id": 1,
"ims_profile_id": 1,
"roaming_profile_id": 1,
"custom_attributes": {},
"inserted_at": "2025-10-15T10:30:00Z",
"updated_at": "2025-10-15T10:30:00Z"
}
]
}
Obtenir un Abonné par ID
Récupérer un abonné spécifique par ID de base de données.
Point de Terminaison : GET /api/subscriber/:id
Paramètres de Chemin :
| Paramètre | Type | Description |
|---|---|---|
id | integer | ID de base de données de l'abonné |
Exemple de Demande :
curl -k https://hss.example.com:8443/api/subscriber/1
Obtenir un Abonné par IMSI
Récupérer un abonné par son IMSI.
Point de Terminaison : GET /api/subscriber/imsi/:imsi
Paramètres de Chemin :
| Paramètre | Type | Description | Format |
|---|---|---|---|
imsi | string | Identité d'Abonné Mobile Internationale | 14-15 chiffres |
Exemple de Demande :
curl -k https://hss.example.com:8443/api/subscriber/imsi/001001123456789
Cas d'Utilisation : Dépannage d'un abonné spécifique par son IMSI.
Obtenir un Abonné par MSISDN
Récupérer un abonné par son numéro de téléphone.
Point de Terminaison : GET /api/subscriber/msisdn/:msisdn
Paramètres de Chemin :
| Paramètre | Type | Description | Format |
|---|---|---|---|
msisdn | string | Numéro ISDN de Station Mobile | 1-15 chiffres (E.164) |
Exemple de Demande :
curl -k https://hss.example.com:8443/api/subscriber/msisdn/14155551234
Cas d'Utilisation : Recherche d'informations sur un abonné lorsque vous n'avez que son numéro de téléphone.
Créer un Abonné
Provisionner un nouvel abonné.
Point de Terminaison : POST /api/subscriber
Corps de la Demande :
{
"subscriber": {
"imsi": "001001123456789",
"enabled": true,
"ims_enabled": true,
"sim_id": 1,
"key_set_id": 1,
"epc_profile_id": 1,
"ims_profile_id": 1,
"roaming_profile_id": 1,
"custom_attributes": {
"note": "Abonné de test"
}
}
}
Champs Requis :
imsi- Doit être de 14-15 chiffres, uniquekey_set_id- Doit référencer un Ensemble de Clés existantepc_profile_id- Doit référencer un Profil EPC existant
Champs Optionnels :
enabled- Par défaut : trueims_enabled- Par défaut : truesim_id- Référence à une carte SIMims_profile_id- Référence à un Profil IMS (requis pour les services IMS)roaming_profile_id- Référence à un Profil de Roaming (requis pour le contrôle du roaming)msisdns- Tableau d'IDs MSISDN (numéros de téléphone)static_ips- Tableau d'IDs IP Statique pour les attributions APNcustom_attributes- Paires clé-valeur personnalisées
Voir Aussi :
- Exemple Complet de Provisionnement d'Abonné - Flux de travail de bout en bout
- Documentation Multi-MSISDN - Attribution de numéros de téléphone aux abonnés
- Gestion des IP Statique - Attribution d'IPs statiques aux APNs
Exemple de Demande :
curl -k -X POST https://hss.example.com:8443/api/subscriber \
-H "Content-Type: application/json" \
-d '{
"subscriber": {
"imsi": "001001123456789",
"key_set_id": 1,
"epc_profile_id": 1
}
}'
Flux de Provisionnement :
Mettre à Jour un Abonné
Modifier un abonné existant.
Point de Terminaison : PUT /api/subscriber/:id
Paramètres de Chemin :
| Paramètre | Type | Description |
|---|---|---|
id | integer | ID de base de données de l'abonné |
Corps de la Demande :
{
"subscriber": {
"enabled": false,
"ims_enabled": false,
"epc_profile_id": 2,
"custom_attributes": {
"note": "Désactivé temporairement"
}
}
}
Champs Modifiables :
enabled- Activer/désactiver tous les servicesims_enabled- Activer/désactiver les services IMSsim_id- Changer l'attribution de la carte SIMkey_set_id- Changer les clés cryptographiques (soyez prudent !)epc_profile_id- Changer le profil de service de donnéesims_profile_id- Changer le profil de service vocalroaming_profile_id- Changer la politique de roamingmsisdns- Mettre à jour les numéros de téléphone attribués à l'abonnéstatic_ips- Mettre à jour les attributions IP statique aux APNscustom_attributes- Mettre à jour les données personnalisées
Non Modifiables :
imsi- Ne peut pas changer l'IMSI (supprimer et recréer à la place)
Voir Aussi :
- Gestion des Profils - Gestion des profils de service
Exemple de Demande :
curl -k -X PUT https://hss.example.com:8443/api/subscriber/1 \
-H "Content-Type: application/json" \
-d '{
"subscriber": {
"enabled": false
}
}'
Cas d'Utilisation :
- Désactiver temporairement l'abonné :
{"enabled": false} - Désactiver uniquement les services vocaux :
{"ims_enabled": false} - Changer le profil de service :
{"epc_profile_id": 2}(voir Profils EPC) - Mettre à jour la politique de roaming :
{"roaming_profile_id": 3}(voir Gestion du Roaming)
Supprimer un Abonné
Supprimer un abonné du système.
Point de Terminaison : DELETE /api/subscriber/:id
Paramètres de Chemin :
| Paramètre | Type | Description |
|---|---|---|
id | integer | ID de base de données de l'abonné |
Exemple de Demande :
curl -k -X DELETE https://hss.example.com:8443/api/subscriber/1
Avertissement : Cela supprime définitivement l'abonné et toutes les données d'état associées (sessions PDN, appels, etc.). L'IMSI peut être réutilisé après la suppression.
Remarque : La suppression d'un abonné ne supprime PAS les éléments associés :
- Ensemble de Clés - Peut être réutilisé pour d'autres abonnés
- SIM - Peut être réattribuée à un nouvel abonné
- Profils - Ressources partagées utilisées par plusieurs abonnés
- MSISDNs - Doit être supprimé séparément si désiré
Annuler la Demande de Localisation (Détachement Forcé)
Envoyer une Demande d'Annulation de Localisation (CLR) pour détacher de force un abonné de son MME actuellement enregistré.
Point de Terminaison : POST /api/subscriber/cancel_location
Corps de la Demande :
{
"imsi": "001001123456789"
}
Paramètres :
| Paramètre | Type | Requis | Description |
|---|---|---|---|
imsi | string | Oui | IMSI de l'abonné à détacher (14-15 chiffres) |
Exemple de Demande :
curl -k -X POST https://hss.example.com:8443/api/subscriber/cancel_location \
-H "Content-Type: application/json" \
-d '{"imsi": "001001123456789"}'
Réponse de Succès (200 OK) :
{
"data": {
"message": "Demande d'Annulation de Localisation envoyée avec succès",
"imsi": "001001123456789",
"destination_host": "mme01.operator.com",
"destination_realm": "epc.operator.com"
}
}
Réponse d'Erreur (404 Non Trouvé) :
{
"error": "Abonné non trouvé ou non actuellement enregistré à un MME"
}
Comportement :
- Envoie un CLR S6a au MME où l'abonné est actuellement enregistré (
subscriber_state.last_seen_mme) - Utilise
Cancellation-Type: subscription_withdrawal(force le détachement complet) - Définit
CLR-Flags: {s6a_indicator: 1, reattach_required: 1}(l'UE doit se ré-authentifier) - Retourne 404 si l'abonné n'a jamais été enregistré ou si
last_seen_mmeest nul - Affects all MSISDNs associés à l'IMSI (même appareil physique/SIM)
Cas d'Utilisation :
- Prévention de Fraude : Détacher immédiatement un abonné suspect
- Résiliation de Souscription : Forcer la déconnexion lorsque le compte est désactivé
- Dépannage : Effacer l'enregistrement MME obsolète pour le débogage
- Migration : Forcer la ré-authentification pour appliquer de nouveaux paramètres de profil
- Sécurité : Déconnecter immédiatement un abonné compromis
Considérations Multi-IMSI :
Lors de l'utilisation de CLR avec des scénarios multi-MSISDN :
-
Plusieurs MSISDN, Un Seul IMSI :
// L'abonné a l'IMSI 001001123456789 avec les MSISDNs ["+1234567890", "+9876543210"]
POST /api/subscriber/cancel_location
{"imsi": "001001123456789"}
// Résultat : Un CLR envoyé, les deux MSISDNs affectés (même appareil) -
IMSI Différents (Appareils Différents) :
// Deux abonnés avec le même MSISDN mais des IMSIs différents (scénario de portabilité de numéro)
// Abonné A : IMSI 001001111111111, MSISDN "+1234567890"
// Abonné B : IMSI 001001222222222, MSISDN "+1234567890"
POST /api/subscriber/cancel_location
{"imsi": "001001111111111"}
// Résultat : Seul l'Abonné A est détaché, l'Abonné B n'est pas affecté
Remarques Importantes :
- Basé sur l'IMSI : CLR est toujours envoyé par IMSI, pas par MSISDN
- Asynchrone : CLR est envoyé de manière asynchrone ; la réponse de succès signifie que le CLR a été envoyé, pas que le MME l'a traité
- Pas de validation de l'état du MME : CLR est envoyé même si le MME est injoignable (comportement standard de l'HSS)
- Idempotent : Sûr d'appeler plusieurs fois pour le même IMSI
Documentation Connexe :
- Flux de Protocole de Demande d'Annulation de Localisation
- Scénarios Multi-IMSI
- Architecture de l'Interface S6a
Gestion des MSISDN
Les MSISDN (numéros de téléphone) peuvent être attribués aux abonnés pour activer les services vocaux. Voir Documentation Multi-MSISDN pour des détails sur l'attribution de plusieurs numéros à un seul abonné.
Lister les MSISDN
Récupérer tous les numéros de téléphone.
Point de Terminaison : GET /api/msisdn
Exemple de Demande :
curl -k https://hss.example.com:8443/api/msisdn
Obtenir un MSISDN
Récupérer un numéro de téléphone spécifique.
Point de Terminaison : GET /api/msisdn/:id
Exemple de Demande :
curl -k https://hss.example.com:8443/api/msisdn/1
Créer un MSISDN
Créer un nouveau numéro de téléphone.
Point de Terminaison : POST /api/msisdn
Corps de la Demande :
{
"msisdn": {
"msisdn": "14155551234"
}
}
Validation :
- Doit être de 1 à 15 chiffres
- Doit être unique
- Doit suivre le format E.164 (format international sans le signe +)
Exemple de Demande :
curl -k -X POST https://hss.example.com:8443/api/msisdn \
-H "Content-Type: application/json" \
-d '{
"msisdn": {
"msisdn": "14155551234"
}
}'
Assigner un MSISDN à un Abonné
Pour attribuer un numéro de téléphone à un abonné, vous devez créer un enregistrement de jointure. Cela se fait généralement par le biais de l'endpoint de mise à jour de l'abonné ou via une manipulation directe de la base de données.
Modèle Multi-MSISDN :
Voir Fonctionnalités Multi-MSISDN et Multi-IMSI pour une utilisation détaillée.
Supprimer un MSISDN
Supprimer un numéro de téléphone.
Point de Terminaison : DELETE /api/msisdn/:id
Exemple de Demande :
curl -k -X DELETE https://hss.example.com:8443/api/msisdn/1
Gestion des SIM
Les enregistrements de carte SIM stockent des informations physiques sur la carte SIM, y compris l'ICCID, les détails du fournisseur, les codes PIN/PUK et les clés OTA. Les enregistrements de SIM peuvent être liés à des abonnés.
Voir Aussi :
- Documentation Multi-IMSI - Plusieurs abonnés sur une seule carte SIM physique
Lister les SIM
Récupérer toutes les cartes SIM.
Point de Terminaison : GET /api/sim
Exemple de Demande :
curl -k https://hss.example.com:8443/api/sim
Obtenir une SIM
Récupérer une carte SIM spécifique.
Point de Terminaison : GET /api/sim/:id
Exemple de Demande :
curl -k https://hss.example.com:8443/api/sim/1
Créer une SIM
Créer un nouvel enregistrement de carte SIM.
Point de Terminaison : POST /api/sim
Corps de la Demande :
{
"sim": {
"iccid": "8991101200003204510",
"sim_vendor": "Gemalto",
"batch_name": "2025-Q1-Batch-01",
"is_esim": false,
"pin1": "1234",
"pin2": "5678",
"puk1": "12345678",
"puk2": "87654321",
"adm1": "admin-code-1",
"kic": "0123456789ABCDEF0123456789ABCDEF",
"kid": "FEDCBA9876543210FEDCBA9876543210"
}
}
Champs Requis :
iccid- 19-20 chiffres, unique
Champs Optionnels mais Importants :
sim_vendor- Nom du fabricantbatch_name- Pour le suiviis_esim- Drapeau booléen pour eSIMpin1,pin2- Codes PIN utilisateurpuk1,puk2- Codes de déverrouillage PINadm1-adm10- Codes administratifskic,kid- Clés de sécurité OTA (chaîne hexadécimale)
Exemple de Demande :
curl -k -X POST https://hss.example.com:8443/api/sim \
-H "Content-Type: application/json" \
-d '{
"sim": {
"iccid": "8991101200003204510",
"sim_vendor": "Gemalto"
}
}'
Mettre à Jour une SIM
Modifier les données de la carte SIM.
Point de Terminaison : PUT /api/sim/:id
Exemple de Demande :
curl -k -X PUT https://hss.example.com:8443/api/sim/1 \
-H "Content-Type: application/json" \
-d '{
"sim": {
"batch_name": "Nom de Lot Mis à Jour"
}
}'
Supprimer une SIM
Supprimer un enregistrement de carte SIM.
Point de Terminaison : DELETE /api/sim/:id
Avertissement : Assurez-vous qu'aucun abonné ne référence cette SIM avant de la supprimer.
Gestion des Ensembles de Clés
Les ensembles de clés contiennent le matériel cryptographique (Ki, OPC/OP, AMF, SQN) utilisé pour l'authentification des abonnés via l'algorithme Milenage. Chaque abonné doit référencer un ensemble de clés.
Voir Aussi :
- Flux de Protocole - Procédures d'authentification utilisant des ensembles de clés
Lister les Ensembles de Clés
Récupérer tous les ensembles de clés cryptographiques.
Point de Terminaison : GET /api/key_set
Exemple de Demande :
curl -k https://hss.example.com:8443/api/key_set
Obtenir un Ensemble de Clés
Récupérer un ensemble de clés spécifique.
Point de Terminaison : GET /api/key_set/:id
Exemple de Demande :
curl -k https://hss.example.com:8443/api/key_set/1
Exemple de Réponse :
{
"data": {
"id": 1,
"ki": "0123456789ABCDEF0123456789ABCDEF",
"opc": "FEDCBA9876543210FEDCBA9876543210",
"op": null,
"amf": "8000",
"sqn": 0,
"authentication_algorithm": "milenage",
"ota_counter": 0
}
}
Créer un Ensemble de Clés
Créer un nouvel ensemble de clés cryptographiques.
Point de Terminaison : POST /api/key_set
Corps de la Demande :
{
"key_set": {
"ki": "0123456789ABCDEF0123456789ABCDEF",
"opc": "FEDCBA9876543210FEDCBA9876543210",
"amf": "8000",
"sqn": 0,
"authentication_algorithm": "milenage"
}
}
Champs Requis :
ki- Clé de 128 bits (32 caractères hexadécimaux)- Soit
opcOUop(l'OPC peut être dérivé de l'OP) authentication_algorithm- Actuellement seulement "milenage"
Champs Optionnels :
amf- Par défaut : "8000"sqn- Par défaut : 0ota_counter- Par défaut : 0
Format des Clés :
- Toutes les clés sont des chaînes hexadécimales
- Ki, OPC, OP : 32 caractères hexadécimaux (128 bits)
- AMF : 4 caractères hexadécimaux (16 bits)
Exemple de Demande :
curl -k -X POST https://hss.example.com:8443/api/key_set \
-H "Content-Type: application/json" \
-d '{
"key_set": {
"ki": "0123456789ABCDEF0123456789ABCDEF",
"opc": "FEDCBA9876543210FEDCBA9876543210",
"authentication_algorithm": "milenage"
}
}'
Avertissement de Sécurité : Les ensembles de clés contiennent des matériaux cryptographiques hautement sensibles. Protégez l'accès à l'API en conséquence.
Mettre à Jour un Ensemble de Clés
Modifier un ensemble de clés existant.
Point de Terminaison : PUT /api/key_set/:id
Avertissement : Changer les clés pour un abonné actif entraînera des échecs d'authentification. Ne mettez à jour les clés que pendant les fenêtres de maintenance ou pour de nouveaux abonnés.
Impact : Les mises à jour affectent immédiatement tous les abonnés utilisant cet ensemble de clés. Les abonnés actifs échoueront à l'authentification lors de la prochaine tentative de connexion.
Supprimer un Ensemble de Clés
Supprimer un ensemble de clés.
Point de Terminaison : DELETE /api/key_set/:id
Avertissement : Assurez-vous qu'aucun abonné ne référence cet ensemble de clés avant de le supprimer. Interrogez d'abord les abonnés pour vérifier les références.
Gestion des Profils
Profils EPC
Les profils EPC (Evolved Packet Core) définissent les paramètres de service de données pour les abonnés. Ces profils sont référencés lors de la création des abonnés.
Lister les Profils EPC
Point de Terminaison : GET /api/epc/profile
Obtenir un Profil EPC
Point de Terminaison : GET /api/epc/profile/:id
Créer un Profil EPC
Point de Terminaison : POST /api/epc/profile
Corps de la Demande :
{
"epc_profile": {
"name": "Plan de Données Standard",
"ue_ambr_dl_kbps": 100000,
"ue_ambr_ul_kbps": 50000,
"network_access_mode": 0,
"tracking_area_update_interval_seconds": 54
}
}
Champs :
| Champ | Description | Unités | Valeurs Typiques |
|---|---|---|---|
name | Nom du profil | Texte | Identifiant unique |
ue_ambr_dl_kbps | Limite de bande passante de téléchargement | Kbps | 10000-1000000 |
ue_ambr_ul_kbps | Limite de bande passante de téléchargement | Kbps | 5000-500000 |
network_access_mode | Type d'accès | Enum | 0=Packet uniquement, 2=Packet+Réservé |
tracking_area_update_interval_seconds | Minuteur TAU | Secondes | 54 (typique) |
Exemple de Demande :
curl -k -X POST https://hss.example.com:8443/api/epc/profile \
-H "Content-Type: application/json" \
-d '{
"epc_profile": {
"name": "Premium 100Mbps",
"ue_ambr_dl_kbps": 100000,
"ue_ambr_ul_kbps": 50000
}
}'
Voir Aussi :
- Documentation des Profils - Guide de configuration détaillé des profils
- Provisionnement Complet d'Abonné - Utilisation des profils EPC dans le provisionnement
Mettre à Jour un Profil EPC
Point de Terminaison : PUT /api/epc/profile/:id
Remarque : Les modifications des profils EPC affectent tous les abonnés utilisant ce profil. Les sessions actives peuvent devoir être rétablies.
Supprimer un Profil EPC
Point de Terminaison : DELETE /api/epc/profile/:id
Avertissement : Assurez-vous qu'aucun abonné ne référence ce profil avant de le supprimer.
Profils IMS
Les profils IMS (IP Multimedia Subsystem) définissent les paramètres de service vocal et les Critères de Filtrage Initiaux (IFC) pour les abonnés. Ces profils sont référencés lors de la création des abonnés avec les services IMS activés.
Lister les Profils IMS
Point de Terminaison : GET /api/ims/profile
Créer un Profil IMS
Point de Terminaison : POST /api/ims/profile
Corps de la Demande :
{
"ims_profile": {
"name": "VoLTE Standard",
"ifc_template": "<Modèle-IMS-XML-ici>"
}
}
Voir Aussi :
- Documentation des Profils - Détails et exemples de modèles IFC
- Flux de Protocole - Flux d'enregistrement IMS et d'appels
Profils APN
Les profils APN (Access Point Name) se composent de trois composants qui fonctionnent ensemble :
- Identifiant APN - Définit le nom de l'APN et la version IP
- Profil QoS APN - Définit les paramètres de Qualité de Service
- Profil APN - Combine identifiant et QoS, lié aux Profils EPC
Voir Documentation PCRF pour la configuration détaillée des politiques, la gestion de la QoS et la ré-authentification automatique. Voir aussi Documentation des Profils pour des exemples de configuration APN.
Lister les Identifiants APN
Point de Terminaison : GET /api/apn/identifier
Créer un Identifiant APN
Point de Terminaison : POST /api/apn/identifier
Corps de la Demande :
{
"apn_identifier": {
"apn": "internet",
"ip_version": 2
}
}
Valeurs de Version IP :
0- IPv4 uniquement1- IPv6 uniquement2- IPv4v6 (double pile)3- IPv4 ou IPv6 (choix du réseau)
Lister les Profils QoS APN
Point de Terminaison : GET /api/apn/qos_profile
Créer un Profil QoS APN
Point de Terminaison : POST /api/apn/qos_profile
Corps de la Demande :
{
"apn_qos_profile": {
"name": "Internet Meilleur Effort",
"qci": 9,
"allocation_retention_priority": 8,
"apn_ambr_dl_kbps": 50000,
"apn_ambr_ul_kbps": 25000,
"pre_emption_capability": false,
"pre_emption_vulnerability": true
}
}
Lister les Profils APN
Point de Terminaison : GET /api/apn/profile
Créer un Profil APN
Point de Terminaison : POST /api/apn/profile
Corps de la Demande :
{
"apn_profile": {
"name": "Profil APN Internet",
"apn_identifier_id": 1,
"apn_qos_profile_id": 1
}
}
Champs Requis :
apn_identifier_id- Doit référencer un Identifiant APN existantapn_qos_profile_id- Doit référencer un Profil QoS APN existant
Voir Aussi :
- Provisionnement Complet d'Abonné - Exemple complet incluant la configuration APN
- Profils EPC - Les profils APN sont liés aux profils EPC
Gestion des IP Statique
Les adresses IP statiques peuvent être attribuées à des APNs spécifiques pour des abonnés individuels. Cela permet aux abonnés de recevoir une adresse IPv4 et/ou IPv6 prédéterminée lors de la connexion à un APN particulier, plutôt que de recevoir une adresse dynamique d'un pool DHCP.
Architecture :
Flux de Données Lors de la Connexion de l'Abonné :
Réponse de Mise à Jour de Localisation - Cartographie des Données de Configuration APN :
Ce diagramme montre exactement d'où provient chaque champ dans l'AVP de Configuration APN de la Réponse de Mise à Jour de Localisation S6a dans la base de données :
Observations Clés :
- Identifiant de Contexte : Index séquentiel (0, 1, 2...) pour chaque APN dans le profil
- Sélection de Service : Provient directement de
apn_identifier.apn(ex : "internet", "ims") - Type de PDN : Encodé à partir de
apn_identifier.ip_version(ipv4=0, ipv6=1, ipv4v6=2, ipv4_or_ipv6=3) - Paramètres QoS : Tous provenant de la table
apn_qos_profile - Bande Passante AMBR : Les valeurs sont multipliées par 1000 (conversion kbps → bps)
- Adresse IP de Partie Servie : Incluse uniquement si une IP statique existe pour cette combinaison abonné+APN
- Processus de recherche :
subscriber.static_ips→ filtrer parapn_profile_id→ extraire les IPs - La compatibilité de la version IP est vérifiée par rapport à
apn_identifier.ip_version
- Processus de recherche :
- VPLMN-Dynamic-Address-Allowed : Codé en dur à 0 (non autorisé) - force l'utilisation d'une IP statique si fournie
Hiérarchie des Relations :
Concepts Clés :
- Attribution par APN : Chaque IP Statique est liée à un Profil APN spécifique
- Une IP par APN par Abonné : Un abonné ne peut avoir qu'une seule attribution IP statique par APN
- Support IPv4 et IPv6 : Les IP statiques peuvent être uniquement IPv4, uniquement IPv6 ou double pile
- Unicité Globale des IP : Chaque adresse IP doit être globalement unique à travers tous les enregistrements d'IP statique dans le système
- La même adresse IPv4 ou IPv6 ne peut pas être attribuée à plusieurs abonnés (même sur différents APNs)
- Cela empêche les conflits de routage et l'ambiguïté des adresses IP
- Appliqué par des index uniques de base de données sur les champs
ipv4_static_ipetipv6_static_ip
- Relation Plusieurs-à-Plusieurs : Les abonnés et les IP Statique sont liés via une table de jointure
Cas d'Utilisation :
- Adresses IP fixes pour des appareils IoT
- Hébergement de serveurs sur des appareils mobiles (nécessite une IP statique pour les connexions entrantes)
- Applications héritées nécessitant des adresses IP spécifiques
- Routage de politique réseau basé sur l'adresse IP source
- Conformité réglementaire nécessitant le suivi des adresses IP
Lister les IP Statique
Récupérer toutes les attributions IP statiques.
Point de Terminaison : GET /api/epc/static_ip
Exemple de Demande :
curl -k https://hss.example.com:8443/api/epc/static_ip
Exemple de Réponse :
{
"data": [
{
"id": 1,
"apn_profile_id": 5,
"ipv4_static_ip": "100.64.1.1",
"ipv6_static_ip": "2606:4700:4700::1111",
"apn_profile": {
"id": 5,
"name": "Profil APN Internet",
"apn_identifier": {
"apn": "internet",
"ip_version": "ipv4v6"
}
},
"inserted_at": "2025-11-15T10:30:00Z",
"updated_at": "2025-11-15T10:30:00Z"
}
]
}
Obtenir une IP Statique
Récupérer une attribution IP statique spécifique.
Point de Terminaison : GET /api/epc/static_ip/:id
Paramètres de Chemin :
| Paramètre | Type | Description |
|---|---|---|
id | integer | ID de base de données de l'IP statique |
Exemple de Demande :
curl -k https://hss.example.com:8443/api/epc/static_ip/1
Créer une IP Statique
Créer une nouvelle attribution IP statique pour un APN.
Point de Terminaison : POST /api/epc/static_ip
Corps de la Demande :
{
"static_ip": {
"apn_profile_id": 5,
"ipv4_static_ip": "100.64.1.1",
"ipv6_static_ip": "2606:4700:4700::1111"
}
}
Champs Requis :
apn_profile_id- Doit référencer un Profil APN existant- Au moins une des
ipv4_static_ipOUipv6_static_ipdoit être spécifiée
Champs Optionnels :
ipv4_static_ip- Adresse IPv4 (notation décimale pointée)ipv6_static_ip- Adresse IPv6 (notation standard)
Validation du Format IP :
- IPv4 : Format standard décimal pointé (ex :
100.64.1.1) - IPv6 : Format standard hexadécimal séparé par des deux-points (ex :
2606:4700:4700::1111) - Les adresses IPv4 et IPv6 doivent être globalement uniques à travers tous les enregistrements d'IP statique
- Cela empêche les conflits d'adresses IP dans le réseau
- La même IP ne peut pas être attribuée à plusieurs abonnés, même sur différents APNs
- C'est une contrainte au niveau de la base de données appliquée par des index uniques
Options de Configuration :
| Configuration | IPv4 | IPv6 | Exemple |
|---|---|---|---|
| IPv4 Seulement | ✓ | - | {"ipv4_static_ip": "100.64.1.1"} |
| IPv6 Seulement | - | ✓ | {"ipv6_static_ip": "2606:4700:4700::1111"} |
| Double Pile | ✓ | ✓ | Les deux champs spécifiés |
Exemples de Demandes :
IP Statique uniquement IPv4 :
curl -k -X POST https://hss.example.com:8443/api/epc/static_ip \
-H "Content-Type: application/json" \
-d '{
"static_ip": {
"apn_profile_id": 5,
"ipv4_static_ip": "100.64.1.1"
}
}'
IP Statique uniquement IPv6 :
curl -k -X POST https://hss.example.com:8443/api/epc/static_ip \
-H "Content-Type: application/json" \
-d '{
"static_ip": {
"apn_profile_id": 6,
"ipv6_static_ip": "2606:4700:4700::1111"
}
}'
IP Statique double pile :
curl -k -X POST https://hss.example.com:8443/api/epc/static_ip \
-H "Content-Type: application/json" \
-d '{
"static_ip": {
"apn_profile_id": 5,
"ipv4_static_ip": "100.64.1.1",
"ipv6_static_ip": "2606:4700:4700::1111"
}
}'
Réponse de Succès (201 Créé) :
{
"data": {
"id": 1,
"apn_profile_id": 5,
"ipv4_static_ip": "100.64.1.1",
"ipv6_static_ip": "2606:4700:4700::1111",
"inserted_at": "2025-11-15T10:30:00Z",
"updated_at": "2025-11-15T10:30:00Z"
}
}
Voir Aussi :
- Attribuer une IP Statique à un Abonné - Comment lier cela à un abonné
- Profils APN - Gestion des configurations APN
Mettre à Jour une IP Statique
Modifier une attribution IP statique existante.
Point de Terminaison : PUT /api/epc/static_ip/:id
Paramètres de Chemin :
| Paramètre | Type | Description |
|---|---|---|
id | integer | ID de base de données de l'IP statique |
Corps de la Demande :
{
"static_ip": {
"ipv4_static_ip": "100.64.1.2",
"ipv6_static_ip": "2606:4700:4700::1112"
}
}
Champs Modifiables :
ipv4_static_ip- Changer l'adresse IPv4ipv6_static_ip- Changer l'adresse IPv6apn_profile_id- Changer l'attribution APN
Non Modifiables :
id- Clé primaire (lecture seule)
Avertissement : Changer l'adresse IP pour un abonné actif affectera sa prochaine connexion PDN. Les sessions PDN actives continueront à utiliser l'ancienne IP jusqu'à ce qu'elles se déconnectent et se reconnectent.
Exemple de Demande :
curl -k -X PUT https://hss.example.com:8443/api/epc/static_ip/1 \
-H "Content-Type: application/json" \
-d '{
"static_ip": {
"ipv4_static_ip": "100.64.1.2"
}
}'
Supprimer une IP Statique
Supprimer une attribution IP statique.
Point de Terminaison : DELETE /api/epc/static_ip/:id
Paramètres de Chemin :
| Paramètre | Type | Description |
|---|---|---|
id | integer | ID de base de données de l'IP statique |
Exemple de Demande :
curl -k -X DELETE https://hss.example.com:8443/api/epc/static_ip/1
Comportement :
- Supprime l'attribution IP statique
- N'affecte PAS le Profil APN (l'APN reste disponible pour d'autres abonnés)
- Les abonnés utilisant cette IP statique recevront des IP dynamiques lors de la prochaine connexion
- L'adresse IP devient disponible pour réutilisation après suppression
Avertissement : Si un abonné utilise activement cette IP statique, la supprimer entraînera la réception d'une IP dynamique lors de sa prochaine connexion PDN. Assurez-vous que les abonnés sont hors ligne ou envoyez une Demande d'Annulation de Localisation avant de supprimer.
Assigner une IP Statique à un Abonné
Pour attribuer une IP statique à un abonn��, vous devez associer l'enregistrement IP statique à l'Abonné lors de la création ou de la mise à jour.
Modèle d'Attribution :
- Créer l'IP Statique (voir Créer une IP Statique)
- Attribuer à l'Abonné en utilisant le champ
static_ips
Créer un Abonné avec IP Statique :
# Étape 1 : Créer une IP statique pour l'APN "internet"
STATIC_IP_ID=$(curl -k -X POST https://hss.example.com:8443/api/epc/static_ip \
-H "Content-Type: application/json" \
-d '{
"static_ip": {
"apn_profile_id": 5,
"ipv4_static_ip": "100.64.1.1",
"ipv6_static_ip": "2606:4700:4700::1111"
}
}' | jq -r '.data.id')
# Étape 2 : Créer un abonné avec l'IP statique attribuée
curl -k -X POST https://hss.example.com:8443/api/subscriber \
-H "Content-Type: application/json" \
-d "{
\"subscriber\": {
\"imsi\": \"001001123456789\",
\"key_set_id\": 1,
\"epc_profile_id\": 1,
\"static_ips\": [$STATIC_IP_ID]
}
}"
Mettre à Jour un Abonné Existant avec IP Statique :
curl -k -X PUT https://hss.example.com:8443/api/subscriber/1 \
-H "Content-Type: application/json" \
-d '{
"subscriber": {
"static_ips": [1, 2]
}
}'
Plusieurs IP Statique (Différents APNs) :
Un abonné peut avoir plusieurs IP statiques tant que chacune est pour un APN différent :
# Créer une IP statique pour l'APN "internet"
INTERNET_IP=$(curl -k -X POST https://hss.example.com:8443/api/epc/static_ip \
-H "Content-Type: application/json" \
-d '{
"static_ip": {
"apn_profile_id": 5,
"ipv4_static_ip": "100.64.1.1"
}
}' | jq -r '.data.id')
# Créer une IP statique pour l'APN "ims"
IMS_IP=$(curl -k -X POST https://hss.example.com:8443/api/epc/static_ip \
-H "Content-Type: application/json" \
-d '{
"static_ip": {
"apn_profile_id": 6,
"ipv4_static_ip": "100.64.2.1"
}
}' | jq -r '.data.id')
# Attribuer les deux à l'abonné
curl -k -X POST https://hss.example.com:8443/api/subscriber \
-H "Content-Type: application/json" \
-d "{
\"subscriber\": {
\"imsi\": \"001001123456789\",
\"key_set_id\": 1,
\"epc_profile_id\": 1,
\"static_ips\": [$INTERNET_IP, $IMS_IP]
}
}"
Règles de Validation :
- ✓ Autorisé : Plusieurs IP statiques pour différents APNs
- ✗ Rejeté : Plusieurs IP statiques pour le même APN
Exemple d'Erreur - APN Dupliqué :
# Cela échouera si les deux IP statiques référencent le même APN
curl -k -X POST https://hss.example.com:8443/api/subscriber \
-H "Content-Type: application/json" \
-d '{
"subscriber": {
"imsi": "001001123456789",
"static_ips": [1, 2]
}
}'
# Réponse d'Erreur :
{
"errors": {
"static_ips": [
"les IP statiques par apn par abonné doivent être uniques. par ex un abonné ne peut pas se voir attribuer l'IP statique 100.64.1.1 pour internet et aussi 100.64.1.2 pour internet"
]
}
}
Voir Aussi :
- Créer un Abonné - Provisionnement d'abonné
- Mettre à Jour un Abonné - Modification de la configuration de l'abonné
- Exemple Complet de Provisionnement d'IP Statique - Flux de travail de bout en bout
Gestion du Roaming
Les profils de roaming contrôlent si les abonnés peuvent accéder aux services de données et IMS sur des réseaux visités. Les profils sont attribués aux abonnés et se composent de règles correspondant aux MCC/MNC.
Lister les Profils de Roaming
Point de Terminaison : GET /api/roaming/profile
Créer un Profil de Roaming
Point de Terminaison : POST /api/roaming/profile
Corps de la Demande :
{
"roaming_profile": {
"name": "Transporteurs des États-Unis uniquement",
"data_action_if_no_rules_match": 1,
"ims_action_if_no_rules_match": 1
}
}
Valeurs d'Action :
0- Autoriser1- Refuser
Actions par Défaut :
data_action_if_no_rules_match- Action lorsque aucune règle de roaming ne correspondims_action_if_no_rules_match- Action par défaut spécifique à IMS
Lister les Règles de Roaming
Point de Terminaison : GET /api/roaming/rule
Créer une Règle de Roaming
Point de Terminaison : POST /api/roaming/rule
Corps de la Demande :
{
"roaming_rule": {
"name": "Autoriser AT&T",
"mcc": "310",
"mnc": "410",
"data_action": 0,
"ims_action": 0
}
}
Champs :
mcc- Code Pays Mobile (3 chiffres)mnc- Code Réseau Mobile (2-3 chiffres)data_action- Autoriser (0) ou Refuser (1) les services de donnéesims_action- Autoriser (0) ou Refuser (1) les services IMS/vocaux
Voir Aussi :
- Documentation sur le Roaming - Configuration détaillée et exemples
- Flux de Protocole - Comment fonctionne le contrôle du roaming dans les flux Diameter
Gestion de l'EIR
OmniHSS fonctionne comme un Registre d'Identité d'Équipement (EIR) via l'interface Diameter S13. Les règles EIR contrôlent l'accès des appareils en fonction des modèles IMEI.
Voir Documentation EIR pour le contrôle d'identité des équipements détaillé, les flux d'interface S13 et la validation IMEI.
Lister les Règles EIR
Point de Terminaison : GET /api/eir/rule
Créer une Règle EIR
Point de Terminaison : POST /api/eir/rule
Corps de la Demande :
{
"eir_rule": {
"name": "Bloquer iPhone 6",
"imei_regex": "^35[0-9]{6}0[0-9]{7}$",
"action": 1
}
}
Champs :
name- Nom descriptif pour la règleimei_regex- Expression régulière pour correspondre aux numéros IMEIaction- Liste blanche (0), Liste noire (1) ou Liste grise (2)
Valeurs d'Action :
0- Liste blanche (autoriser)1- Liste noire (refuser)2- Liste grise (autoriser mais suivre)
Cas d'Utilisation :
- Bloquer les appareils volés (liste noire de numéros IMEI spécifiques)
- Restreindre les types d'appareils (liste noire par modèle TAC)
- Autoriser uniquement les appareils approuvés (modèle de liste blanche avec refus par défaut)
Voir Aussi :
- Flux de Protocole - Flux d'interface S13 et flux de vérification EIR
- Vue d'Ensemble de l'Architecture - Fonction EIR d'OmniHSS
Documentation Supplémentaire
Pour plus d'informations, consultez la documentation suivante :
- Statut et Santé - Points de terminaison de vérification de la santé de l'API
- Gestion des Erreurs - Erreurs courantes et dépannage
- Exemples d'Utilisation de l'API - Flux de travail de provisionnement complet
← Retour au Guide des Opérations | Suivant : Panneau de Contrôle →