HORISEN 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 Suppler – 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: timeout that 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 similar with 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 add 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

Query would be then for 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 NAPTR record with 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 supplier-defined list of mappings SPID->MCC/MNC list. The supplier then needs to provide the way to update this list of mappings.
  • Field “ported” provides ported status (boolean value).

6. ENUM Rcode

Suppliers should use a standard error code list, as defined here.

Name Value Description
NOERROR RCODE:0 DNS Query completed successfully
FORMERR RCODE:1 DNS Query Format Error
SERVFAIL RCODE:2 Server failed to complete the DNS request
NXDOMAIN RCODE:3 Domain name does not exist