Introduction

Mitto’s Number Lookup service provides a simple way to retrieve mobile subscription information given one or more mobile subscriber number (MSISDN). The service is available both via ENUM interface or REST API. This document describes the necessary parameters and how to use the Number Lookup service via ENUM API interface.

ENUM API Interface

The ENUM API is accessed through a Uniform Resource Identifier (URI)
consisting of the following elements:

  • Base Zone
  • Phone Number

The ENUM API is reachable using the following interfaces:

Primary Interface IP 185.124.68.84 Port 6363
Secondary Interface IP 185.124.68.85 Port 6363

The API uses IP whitelists to authenticate the users, and it is therefore required to register the IP address of the client to access the ENUM lookup API. Your account manager or the support desk can help you with the whitelisting procedure.

ENUM API URI

The ENUM API can be accessed through the following base zone:

e164.arpa

Complete URI – lookup a number

The complete lookup ENUM URI is built as follows:

[Reverse MSISDN number separated by dots].e164.arpa

e.g. to lookup the number +491XXXXXXXXX using the ENUM API the following URI is required:

4.3.2.1.5.5.5.2.7.1.9.4.e164.arpa

Using the DIG command, it is very easy to access MITTO’s ENUM Lookup API:

dig @185.124.68.84 –p 6363 IN NAPTR 4.3.2.1.5.5.5.2.7.1.9.4.e164.arpa

The answer to the lookup request will have the following format (relevant extract):

;; ANSWER SECTION:
4.3.2.1.5.5.5.2.7.1.9.4.e164.arpa. 3600 IN NAPTR 0 0 "u" "E2U+SIP" "!^.*$!sip:+491XXXXXXXXXims.mnc02.mcc262.3gppnetwork.org;cost=0.000600000000;
ported=0!" .

The main parameters returned by the lookup request are the Mobile Country Code (MCC), the Mobile Network Code (MNC) and the cost associated to the service:

Number = +491XXXXXXXXX
MCC = 262 (Germany)
MNC = 02 (Vodafone)
cost = 0.000600000000
ported = NOT PORTED

Complete URI – lookup multiple numbers

The Number Lookup service can be retrieved for multiple MSISDN by using the
same DIG request with multiple contents:

dig @185.124.68.84 –p 6363 IN NAPTR 4.3.2.1.5.5.5.2.7.1.9.4.e164.arpa 5.5.6.0.0.0.0.1.1.5.1.9.4.e164.arpa

In this case the answer to the lookup request will have the following format (relevant extract):

;; ANSWER SECTION:
4.3.2.1.5.5.5.2.7.1.9.4.e164.arpa. 3600 IN NAPTR 0 0 "u" "E2U+SIP" "!^.*$!sip:+491XXXXXXXXX@ims.mnc02.mcc262.3gppnetwork.org;cost=0.000600000000;
ported=0!" .

;; ANSWER SECTION:
5.5.6.0.0.0.0.1.1.5.1.9.4.e164.arpa. 3600 IN NAPTR 0 0 “u” “E2U+SIP” “!^.*$!sip:+491XXXXXXXXX@ims.mnc07.mcc262.3gppnetwork.org;cost=0.000600000000;
omnc=01;ported=1!” .

The main information returned by the request is similar to the previous example:

Number = +491XXXXXXXXX
MCC = 262
MNC = 02
cost = 0.000600000000
ported = NOT PORTED

Number = +491XXXXXXXXX
MCC = 262
MNC = 07 (O2)
cost = 0.000600000000
ported = PORTED OMNC = 01 (the number was ported from T-Mobile to O2)

ENUM API Responses

Beside the basic information about the subscription network of a given MSISDN, the API can provide upon request additional information regarding the status of the subscriber number.

The following table indicates additional information that can be retrieved using the ENUM API:

Parameter Type Description
sip String The MSISDN added with a ‘+’ sign as preamble
mnc String Mobile Network Code. Length of the MNC can be two or three digits
mcc String Mobile Country Code. Length of the MNC can be three digits only
cost Decimal The cost of the lookup request
ported Boolean Provides information on the mobile number portability status of the MSISDN (‘0’ not ported, ‘1’ ported)
omnc String In case of ported number, it provides in form of MNC the network code the MSISDN originally belonged to
roaming Boolean Provides information on the roaming status of the MSISDN (‘0’ in the home network, ‘1’ in roaming)
rmcc String In the case the MSISDN is roaming, it provides as MCC the country code where the line is at the moment of the request
MSC String Provides the Global Title of the Mobile Switching Centre (the serving network node)
IMSI String Provides the International Mobile Subscriber Identity, this field identifies uniquely the user of a mobile network
absent Boolean Informs about the status of the user at the time of the lookup request (‘0’ subscriber available, ‘1’ subscriber absent)
gsmcode Number Returns the GSM error code giving detailed information. Below the description of the GSM error codes
err String Provides the specific error to a request fault

The ENUM API provides together with the lookup answer a series of error codes: GSM error codes, API specific error codes, and status error codes. These can be used to interpret the reason of a call failure.

The following table provides the description of the possible status code values:

ENUM code Description Reason
NOERROR ok
REFUSED Unauthorized – IP not registered
– ENUM not activated
SERVFAIL Wrong formatted request Missing parameter(s)

The following table provides an overview about the API error codes and their meaning:

Error Code Description Reason
0 Success The lookup was successfully executed
1 Unknown Error A generic error occurred
2 Unauthorized Missing or invalid credentials
3 Insufficient funds Refused due to insufficient funds
4 Not allowed Lookup type not allowed
5 Invalid MSISDN Not properly formatted MSISDN
6 MSISDN not mobile The number doesn’t belong to a mobile carrier

The following table provides an overview about the GSM error codes:

GSM error code Description
0 No error
1 Unknown subscriber
2 Unknown subscriber – NR changed
5 Unidentified subscriber
6 Absent subscriber for SM
7 Unknown equipment
8 Roaming not allowed
9 Illegal subscriber
10 Bearer service not provisioned Teleservice not provisioned
12 Illegal equipment
13 Call barred
21 Facility not supported
27 Absent subscriber
28 Incompatible MS terminal error
31 Subscriber busy for SMS MT
32 Equipment failure
33 MS memory capacity exceeded
34 GSM system failure
35 GSM Data Error – data missing
36 GSM Data Error
45 Subscriber busy
100/101 Internal equipment error
103/104/105 Unspecified GSM error
150/151 Request timeout

Examples

This section provides further example on the usage of the Number
Lookup ENUM API, applied to different numbering scenarios.

Lookup a number

dig @185.124.68.84 -p 6363 IN NAPTR 4.3.2.1.5.5.5.2.7.1.9.4.e164.arpa

The Number Lookup reply to the command will be (full response):

; <<>> DiG 9.14.2 <<>> @185.124.68.84 -p 6363 IN NAPTR 4.3.2.1.5.5.5.2.7.1.9.4.e164.arpa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15783
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;4.3.2.1.5.5.5.2.7.1.9.4.e164.arpa. IN NAPTR

;; ANSWER SECTION:
4.3.2.1.5.5.5.2.7.1.9.4.e164.arpa. 3600 IN NAPTR 0 0 "u" "E2U+SIP" "!^.*$!sip:+491XXXXXXXXX@ims.mnc02.mcc262.3gppnetwork.org;cost=0.000600000000;
ported=0!" .

;; ADDITIONAL SECTION:
RequestId. 6000 IN TXT "1d2ae619-a739-4b5a-ac50-15a23e6c89c7"

;; Query time: 46 msec
;; SERVER: 185.124.68.84#6363(185.124.68.84)
;; WHEN: Fri Oct 08 13:17:28 Central Europe Daylight Time 2021

Number lookup information provided:

Number = +491XXXXXXXXX
MCC = 262 (Germany)
MNC = 02 (Vodafone)
cost = 0.000600000000
ported = NOT PORTED

Lookup a ported number

dig @185.124.68.84 -p 6363 IN NAPTR 1.3.5.0.0.0.0.1.1.5.1.9.4.e164.arpa

The Number Lookup reply to the command will be:

; <<>> DiG 9.14.2 <<>> @185.124.68.84 -p 6363 IN NAPTR 1.3.5.0.0.0.0.1.1.5.1.9.4.e164.arpa ; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16373
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;1.3.5.0.0.0.0.1.1.5.1.9.4.e164.arpa. IN NAPTR

;; ANSWER SECTION:
1.3.5.0.0.0.0.1.1.5.1.9.4.e164.arpa. 3600 IN NAPTR 0 0 "u" "E2U+SIP" "!^.*$!sip:+491XXXXXXXXX@ims.mnc07.mcc262.3gppnetwork.org;cost=0.000600000000;
omnc=01;ported=1!" .

;; ADDITIONAL SECTION:
RequestId. 6000 IN TXT "535a41ba-097a-41a7-857d-38077c0a3cf0"

;; Query time: 68 msec
;; SERVER: 185.124.68.84#6363(185.124.68.84)
;; WHEN: Fri Oct 08 13:26:02 Central Europe Daylight Time 2021

Number lookup information provided:
Number = +491XXXXXXXXX MCC = 262 (Germany) MNC = 07 (O2)
cost = 0. 000600000000 ported = PORTED
OMNC = 01 (the number was ported from T-Mobile to O2)

Lookup a number while roaming

dig @185.124.68.84 -p 6363 IN NAPTR 1.1.1.8.1.5.1.4.6.7.1.9.4.e164.arpa

; <<>> DiG 9.14.2 <<>> @185.124.68.84 -p 6363 IN NAPTR 1.1.1.8.1.5.1.4.6.7.1.9.4.e164.arpa ; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44012
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;1.1.1.8.1.5.1.4.6.7.1.9.4.e164.arpa. IN NAPTR

;; ANSWER SECTION:
1.1.1.8.1.5.1.4.6.7.1.9.4.e164.arpa. 3600 IN NAPTR 0 0 "u" "E2U+SIP" "!^.*$!sip:+491XXXXXXXXX@ims.mnc03.mcc262.3gppnetwork.org;absent=0;cost=0.00120 0000000;gsmCode=0;imsi=26203XXXXXXXXXXX;omnc=07;ported=1;roaming=1!" .

;; ADDITIONAL SECTION:
RequestId. 6000 IN TXT "8f88b5c1-c343-4821-a751-d32f0a252a28"

;; Query time: 860 msec
;; SERVER: 185.124.68.84#6363(185.124.68.84)
;; WHEN: Fri Oct 08 13:35:41 Central Europe Daylight Time 2021
;; MSG SIZE rcvd: 285

Based on the information provided in the Answer section above, the Number Lookup request provided the following details:

Number = +491XXXXXXXXX MCC = 262 (Germany) MNC = 03 (O2)
cost = 0.001200000000 ported = PORTED
OMNC = 07 (the number was ported from O2 to O2)
roaming = NUMBER IN ROAMING
rmcc =
imsi = 26203XXXXXXXXXXX (International Mobile Subscriber Identity)
absent = 0, the number is NOT ABSENT at the moment of the request