Aller au contenu principal

Référence API OmniHSS

← Retour au Guide des Opérations


Table des Matières


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

CodeSignificationCas d'Utilisation
200OKGET, PUT, DELETE réussi
201CrééPOST réussi
400Mauvaise DemandeDonnées d'entrée invalides
404Non TrouvéLa ressource n'existe pas
422Entité Non TraitableErreur de validation
500Erreur Interne du ServeurErreur 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ètreTypeDescription
enabledbooleanFiltrer par statut activé
ims_enabledbooleanFiltrer 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ètreTypeDescription
idintegerID 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ètreTypeDescriptionFormat
imsistringIdentité d'Abonné Mobile Internationale14-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ètreTypeDescriptionFormat
msisdnstringNuméro ISDN de Station Mobile1-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, unique
  • key_set_id - Doit référencer un Ensemble de Clés existant
  • epc_profile_id - Doit référencer un Profil EPC existant

Champs Optionnels :

  • enabled - Par défaut : true
  • ims_enabled - Par défaut : true
  • sim_id - Référence à une carte SIM
  • ims_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 APN
  • custom_attributes - Paires clé-valeur personnalisées

Voir Aussi :

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ètreTypeDescription
idintegerID 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 :

Non Modifiables :

  • imsi - Ne peut pas changer l'IMSI (supprimer et recréer à la place)

Voir Aussi :

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ètreTypeDescription
idintegerID 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ètreTypeRequisDescription
imsistringOuiIMSI 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_mme est 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 :

  1. 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)
  2. 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 :


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 :

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 fabricant
  • batch_name - Pour le suivi
  • is_esim - Drapeau booléen pour eSIM
  • pin1, pin2 - Codes PIN utilisateur
  • puk1, puk2 - Codes de déverrouillage PIN
  • adm1-adm10 - Codes administratifs
  • kic, 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 opc OU op (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 : 0
  • ota_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 :

ChampDescriptionUnitésValeurs Typiques
nameNom du profilTexteIdentifiant unique
ue_ambr_dl_kbpsLimite de bande passante de téléchargementKbps10000-1000000
ue_ambr_ul_kbpsLimite de bande passante de téléchargementKbps5000-500000
network_access_modeType d'accèsEnum0=Packet uniquement, 2=Packet+Réservé
tracking_area_update_interval_secondsMinuteur TAUSecondes54 (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 :

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 :

Profils APN

Les profils APN (Access Point Name) se composent de trois composants qui fonctionnent ensemble :

  1. Identifiant APN - Définit le nom de l'APN et la version IP
  2. Profil QoS APN - Définit les paramètres de Qualité de Service
  3. 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 uniquement
  • 1 - IPv6 uniquement
  • 2 - 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 :

Voir Aussi :


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 :

  1. Identifiant de Contexte : Index séquentiel (0, 1, 2...) pour chaque APN dans le profil
  2. Sélection de Service : Provient directement de apn_identifier.apn (ex : "internet", "ims")
  3. Type de PDN : Encodé à partir de apn_identifier.ip_version (ipv4=0, ipv6=1, ipv4v6=2, ipv4_or_ipv6=3)
  4. Paramètres QoS : Tous provenant de la table apn_qos_profile
  5. Bande Passante AMBR : Les valeurs sont multipliées par 1000 (conversion kbps → bps)
  6. Adresse IP de Partie Servie : Incluse uniquement si une IP statique existe pour cette combinaison abonné+APN
    • Processus de recherche : subscriber.static_ips → filtrer par apn_profile_id → extraire les IPs
    • La compatibilité de la version IP est vérifiée par rapport à apn_identifier.ip_version
  7. 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_ip et ipv6_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ètreTypeDescription
idintegerID 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_ip OU ipv6_static_ip doit ê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 :

ConfigurationIPv4IPv6Exemple
IPv4 Seulement-{"ipv4_static_ip": "100.64.1.1"}
IPv6 Seulement-{"ipv6_static_ip": "2606:4700:4700::1111"}
Double PileLes 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 :

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ètreTypeDescription
idintegerID 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 IPv4
  • ipv6_static_ip - Changer l'adresse IPv6
  • apn_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ètreTypeDescription
idintegerID 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 :

  1. Créer l'IP Statique (voir Créer une IP Statique)
  2. 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 :


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 - Autoriser
  • 1 - Refuser

Actions par Défaut :

  • data_action_if_no_rules_match - Action lorsque aucune règle de roaming ne correspond
  • ims_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ées
  • ims_action - Autoriser (0) ou Refuser (1) les services IMS/vocaux

Voir Aussi :


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ègle
  • imei_regex - Expression régulière pour correspondre aux numéros IMEI
  • action - 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 :


Documentation Supplémentaire

Pour plus d'informations, consultez la documentation suivante :


← Retour au Guide des Opérations | Suivant : Panneau de Contrôle →