Skip to main content

MNP Supplier ENUM API

1. Introduction

HORISEN ENUM API provides an efficient way to retrieve MCC/MNC information of recipient mobile subscriber by sending ENUM queries to MNP ENUM Supplier, where:

  • HORISEN - Client
  • MNP Supplier - Server

2. Authentication

All ENUM queries require authentication. This is essential for the ENUM to identify which user is making the call and return the appropriate results, as well as for security reasons. For this purpose, the ENUM API uses the client IP address and port for authentication.

During the implementation, HORISEN will provide its IP addresses for querying Supplier ENUM service.

3. MNP request over the ENUM API interface

Using this method, the HORISEN SMS Platform (MNP Service) performs ENUM queries to MNP Supplier about specific phone numbers.

MNP Supplier should provide the following information:

  • ENUM domain: MNP Supplier domain (SUPPLIER_DOMAIN) For more information refer to the example below.
  • IP address and port: the MNP Supplier can provide one or more IPs or ENUM service domains (SUPPLIER_ENUM_ADDRESS) with port (SUPPLIER_ENUM_PORT).
  • Timeout: the period the client (HORISEN SMS Platform in this case) should define as time to expect positive or negative response.

If the MNP Supplier provides more than one IP address for querying, he should also provide more information about:

  • Throughput: multiple supplier IP addresses can be queried to increase throughput.
  • Primary or Secondary: multiple supplier IP addresses can be used as primary and fallback.

ENUM resolution operates similarly to reverse DNS lookup queries. To perform the lookup, the E.164 number needs to be transformed in accordance with the following rules:

  • Remove non-numeric characters such as spaces, +, dashes etc. (e.g. number «+41-787078880» needs to be transformed into «41787078880»);
  • Reverse the digits and insert a dot between every digit (e.g.41787078880 becomes 0.8.8.8.7.0.7.8.7.1.4);
  • Add suffix domain (e.g. the number now becomes 0.8.8.8.7.0.7.8.7.1.4.SUPPLIER_DOMAIN).

4. Example of ENUM query over HORISEN MNP Server

Example of ENUM Query from HORISEN MNP Server:

dig @SUPPLIER_ENUM_ADDRESS -p SUPPLIER_ENUM_PORT -t naptr 0.8.8.8.7.0.7.8.7.1.4.SUPPLIER_DOMAIN

The query would then be for the NAPTR record for 0.8.8.8.7.0.7.8.7.1.4.SUPPLIER_DOMAIN.

5. Example of ENUM response from Supplier ENUM Server

A successful query response will return a NAPTR record with the operator's MCC and MNC or SPID in Answer section:

; <<>> DiG 9.10.3-P4-Debian <<>> @SUPPLIER_ENUM_ADDRESS -p SUPPLIER_ENUM_PORT -t naptr 1.9.7.8.6.9.7.5.0.3.1.SUPPLIER_DOMAIN
; (1 server found)
...
...

;; QUESTION SECTION:
;1.9.7.8.6.9.7.5.0.3.1.SUPPLIER_DOMAIN. IN NAPTR

;; ANSWER SECTION:
1.9.7.8.6.9.7.5.0.3.1.SUPPLIER_DOMAIN. 60 IN NAPTR 100 100 "U" "E2U+PSTN:TEL" "!^.*$!<TEL:+41787078880;spid=2095;mcc=310;mnc=012;ported=true;npdi>!" .

;; Query time: 87 msec
;; SERVER: 208.76.18.32#53(208.76.18.32)
;; WHEN: Mon Aug 02 10:18:46 CEST 2021
;; MSG SIZE rcvd: 236

Our SMS Platform supports the following combination of response fields:

  • Fields "mcc" and "mnc", for example mcc=310;mnc=012.
  • Field "spid", which is a supplier-defined list of mappings (SPID -> MCC/MNC). The supplier then needs to provide the way to update this list of mappings.
  • Field "ported" indicates the ported status (boolean value).

6. ENUM Rcode

Suppliers should use the standard error code list, as defined on the DNS Parameters page.

NameValueDescription
NOERRORRCODE:0DNS Query completed successfully.
FORMERRRCODE:1DNS Query Format Error.
SERVFAILRCODE:2Server failed to complete the DNS request.
NXDOMAINRCODE:3Domain name does not exist.