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 |