Creation d'une Portabilité via Marketplace
Création d'une portabilité via l'API Marketplace Netwo.
Netwo - Effectuer une portabilité
La demande de portabilité consiste à passer une commmande.
Il s'agit d'un processus en quatre étapes :
- Récupérer le service ID du préfixe de portabilité souhaité
- Créer un panier (cart)
- Récupérer la cart line correspondante
- Créer une commande à partir du cart et de la cart line
1. Récupération de l'identifiant de préfixe de portabilité
Pour passer une commande de portabilité, il est obligatoire de posséder et renseigner le préfixe de portabilité sur lequel s'applique la portabilité.
Il est donc nécessaire d'avoir un préfixe de portabilité hébergé sur le SaaS.
Pour cela, il est possible de lister l'ensemble des services de type "préfixe de portabilité" pour obtenir la liste des identifiants souhaités.
Exemple :
GET /service?product_category[]=prefix_hosting
{
"services": [
{
"bought": {
"service_id": "{{prefix_service_id}}",
"service_type": "prefix_hosting",
"reference": "S-ZZZZ-ZZZZ",
"external_provider_reference": null,
"external_consumer_reference": null,
"product_name": "Hébergement d'un préfixe de portabilité",
"provider_name": "Netwo",
"consumer_name": "{{consumer}}",
"client_name": "{{client}}",
"client_address": null,
"status": "initialized",
"commissioning_date": null,
"termination_date": null,
"resold_service_id": null,
"bought_service_id": null,
"resource": null,
"specifics": {
"prefix_hosting": {
"resource": "010203",
"sip_trunk_reference": "S-YYYY-YYYY"
}
},
"category": "prefix_hosting"
},
"resold": null
}
],
"total_results": 1,
"limit": 1000,
"offset": 0
}
Dans cet exemple, cet "service_id": "{{prefix_service_id}}",
qui nous intéresse.
2. Création du panier avec la portabilité
La route /cart
permet de créer un panier.
Il est possible de passer un objet RIO au lieu de DID si la portabilité est avec RIO.
Cet appel renvoie un cart_id qui sera nécessaire pour récupérer les cart lines, et procéder
à l'étape du passage de commande.
Documentation API pour créer un CART
Exemple :
POST /cart
{
"lines": [
{
"entity": {
"portability": {
"idn": "0123456789",
"wanted_date": "2024-12-01T10:00:00.000Z",
"rio_or_did": {
"did": [
"0234567890",
"0234567891",
"0234567892"
]
},
"portability_type": "total",
"option_call_validation": false,
"option_delegated": false,
"comments": "Informations éventuelles à passer aux opérateurs destinataires"
}
}
}
],
"context": "buyer"
}
idn : Correspond au NDI de la portabilité dans le cadre d'un portabilité PS_E, ou alors du numéro à porter dans le cadre d'une portabilité PSN/PSNG.
wanted_date : La date de portabilité souhaité au format RFC3339 et le fuseau horaire en UTC. min = + 6 jours ouvrés. max = +89 jours.
rio_or_did : Liste des SDA à porter dans le cadre d'un portaiblité PS_E, ou alors du numéro de RIO dans le cadre d'une PSG/PSNG.
portability_type : Type de portabilité "total" ou "partial"
option_call_validation : Validation par appel
option_delegated : Délégation de la réalisation de la portabilité à Netwo.
3. Récupération des cart lines
La création de commande requiert de récupérer au préalable les lignes du panier par la route /cart/{{cart_id}}/lines
Cet appel permet également de vérifier les prix qui seront appliqués lors de la commande.
Documentation API lister les cart lines
GET /cart/{{cart_id}}/lines
{
"elements": [
{
"cart_line_id": "{{cart_line_id}}",
"quantity": 1,
"index": 0,
"discount": {
"access_fee": null,
"recurring_price": null
},
"product": {
"product_name": "Portabilité",
"product_category": "inbound_portability",
"specifics": {
"catalog": {
"description": "La portabilité est un processus de récupération des numéros principal et secondaires permettant de réaliser auprès de l’opérateur actuel du client la demande de transfert des numéros vers le nouvel opérateur.",
"contract_name": "Portabilité",
"contract_version_product_id": "{{cvp_id}}",
"variation_id": null,
"contract_document_bundle_url": "https://www.netwo.io",
"infra_provider_slug": null,
"infra_provider_name": null,
"collected_by": "Netwo"
}
},
"product_feature_set": {
"access_fee": 0.0,
"billing_periodicity": 1,
"is_sellable": true,
"payment_term": "payable_in_arrears",
"recurring_price": 0.0
}
},
"options": [],
"context": {
"portability": {
"idn": "0123456789",
"rio_or_did": {
"did": [
"0234567890",
"0234567891",
"0234567892"
]
},
"comments": "Informations éventuelles à passer aux opérateurs destinataires",
"wanted_date": "2024-12-01T10:00:00.000Z",
"portability_type": "total",
"routing": "auto_routing_prefix"
}
}
}
],
"total_results": 1,
"limit": 100,
"offset": 0
}
4. Création de la commande
La route /order
permet de créer une commande.
La commande lancera une demande de portabilité dans un délai de quelques minutes.
Les informations d'adresse du client final sont obligatoires pour passer une commande de portabilité :
- customer.customer_location.address.street
- customer.customer_location.address.zip_code
- customer.customer_location.address.city
Documentation API pour créer une commande
Exemple avec une commande de portabilité sur un préfixe
POST /order
{
"cart_id": "{{cart_id}}",
"lines": [
{
"cart_line_id": "{{cart_line_id}}",
"attributes": {
"portability": {
"routing": "routing_on_prefix",
"prefix_service_id": "{{prefix_service_id}}"
}
},
"customer": {
"name": "Societé",
"company_number": "00000000000000",
"customer_location": {
"address": {
"street_number": "35",
"street": "Rue des Jeuneurs",
"zip_code": "75002",
"city": "Paris"
}
}
},
"contact": {
"name": "societe",
"email": "[email protected]",
"phone": "+33601020304"
}
}
]
}
Exemple avec une commande de portabilité sur un sip trunk C5
POST /order
{
"cart_id": "{{cart_id}}",
"lines": [
{
"cart_line_id": "{{cart_line_id}}",
"attributes": {
"portability": {
"routing": {
"sip_trunk_c5": {
"service_id": "{{sip_trunk_service_id}}"
}
},
"prefix_service_id": "{{prefix_service_id}}"
}
},
"customer": {
"name": "Societé",
"company_number": "00000000000000",
"customer_location": {
"address": {
"street_number": "35",
"street": "Rue des Jeuneurs",
"zip_code": "75002",
"city": "Paris"
}
}
},
"contact": {
"name": "societe",
"email": "[email protected]",
"phone": "+33601020304"
}
}
]
}
5. Consultation d'informations techniques détaillées
Après avoir passé une commande de portabilité, vous pouvez obtenir des informations techniques détaillées sur le traitement de votre portabilité d'un point de vue APNF.
Endpoint de récupération des informations techniques APNF
Le contenu de l'attribut apnf_requests
contient les requêtes effectivement envoyées sur le MOP - à l'APNF - à destination des opérateurs concernés par la portabilité entrante.
Il est normal que ce tableau reste vide un certain temps juste après le passage de votre commande.
Il sera rempli une fois que notre système aura validé et traité votre demande de portabilité, puis envoyé les requêtes sur le MOP et que l'APNF aura accusé réception de ces requêtes.
Ce processus peut prendre jusqu'à plusieurs heures en cas de délai de traitement anormalement long par un maillon de cette chaîne.
Information importante : ces informations techniques ne doivent être utilisées qu'à titre informatif, à vocation de debug pour communiquer avec les opérateurs concernés.
Exemple
{
"apnf_requests": [
{
"operator_code": "XXXX00",
"state": "Planned",
"ope": "XXXX00",
"opa": "YYYY00",
"intermediate_id": "12345",
"main_apnf_reference": "ABCD",
"sub_apnf_reference": "ABCD",
"mop_offer_code": "PS_E",
"portability_type": "totale",
"simplified_process_option": true,
"scheduled_date": "2024-06-15T09:00:00Z"
},
{
"operator_code": "YYYY00",
"state": "ArOk",
"ope": "XXXX00",
"opa": "YYYY00",
"intermediate_id": "12346",
"main_apnf_reference": "ABCD",
"sub_apnf_reference": "ABCDA",
"mop_offer_code": "PS_E",
"portability_type": "totale",
"simplified_process_option": true,
"scheduled_date": ""
}
]
}
Updated 3 months ago