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 :

  1. Récupérer son identifiant de préfixe de portabilité
  2. Créer un panier
  3. Récupérer les cart line correspondantes
  4. Créer une commande

1. Récupération de l'identifiant de préfixe de portabilité

Pour passer une commande de portabilité, il sera obligatoire de posséder et renseigner le préfixe de portabilité sur lequel s'appliquera la portabilité.

Il est donc nécessaire d'avoir un préfixe de portabilité enregistré sur le SaaS.

Pour cela, il est possible de lister l'ensemble des services de type "préfixe de portabilité" et 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
}

1. 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.

Le format de la wanted_date est RFC3339 et le fuseau est UTC.

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.

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
                  }
            }
        }
    ],
    "context": "buyer"
}

2. 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.

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": null,
          "wanted_date": "2024-12-01T10:00:00.000Z",
          "portability_type": "total",
          "routing": "auto_routing_prefix"
        }
      }
    }
  ],
  "total_results": 1,
  "limit": 100,
  "offset": 0
}

3. 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.

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",
        "mailing_address": {
          "address": {
            "street": "35 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",
        "mailing_address": {
          "address": {
            "street": "35 rue des jeuneurs",
            "zip_code": "75002",
            "city": "PARIS"
          }
        }
      },
      "contact": {
        "name": "societe",
        "email": "[email protected]",
        "phone": "+33601020304"
      }
    }
  ]
}