# Vérification de format

## URL

<mark style="color:green;">`POST`</mark> `https://api.smspartner.fr/v1/lookup`

{% hint style="warning" %}
Limite de 360 requêtes par minute. Si vous dépassez ces limites vous recevrez une réponse HTTP 429.
{% endhint %}

#### **Paramètres obligatoires**

<table data-full-width="false"><thead><tr><th width="180">Nom</th><th>Valeur</th></tr></thead><tbody><tr><td><code>apiKey</code></td><td><a href="https://my.smspartner.fr/dashboard/api">Votre clé API</a></td></tr><tr><td><code>phoneNumbers</code></td><td>Numéros de mobile à vérifier. Ils doivent être au format international (+336xxxxxxxx). Pour l’envoi de plusieurs vérifications les numéros doivent être séparés par des virgules. 500 numéros peuvent être vérifiés par requête.</td></tr></tbody></table>

#### **Paramètres optionnels**

<table><thead><tr><th width="262">Nom</th><th>Valeur</th></tr></thead><tbody><tr><td><code>_format</code></td><td><code>json</code> ou <code>xml</code></td></tr></tbody></table>

#### Requêtes

{% tabs %}
{% tab title="PHP" %}

```php
<?php
        // Prepare data for POST request
        $fields = array(
            'apiKey'=> 'YOUR API KEY',
            'phoneNumbers'=> '+336xxxxxxxx'
        );
 
 
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL,'https://api.smspartner.fr/v1/lookup');
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_TIMEOUT, 10);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS,json_encode($fields));
 
        $result = curl_exec($curl);
        curl_close($curl);
 
        // Process your response here
        echo $result;
?>
```

{% endtab %}

{% tab title="VB.net" %}

```vbnet
Imports System.IO
Imports System.Net
 
Module Module1
 
  Sub Main()
 
    Dim base_url As String = "http://api.smspartner.fr/v1/"
    Dim apiKey As String = "VOTRE_APIKEY"
 
    #send sms
    url = base_url & "lookup"
    #note : utiliser une librairie JSON en production, par exemple :
    #https//www.nuget.org/packages/Newtonsoft.Json/
    Dim parameters As String = String.Format(
        "{{""apiKey"":""{0}"",""phoneNumbers"":""{1}""}}",
        apiKey,
        "+33XXXXXXXXX")
    Console.Write(parameters)
    apiRequest("POST", url, parameters)
 
  End Sub
 
  Function apiRequest(method As String, url As String, parameters As String) As String
 
    Dim request As HttpWebRequest
    request = WebRequest.Create(url)
    request.Method = method
    request.Timeout = 10000   # timeout in ms
    request.ContentType = "application/json; charset=utf-8"
    request.ContentLength = 0
 
    #set POST data
    If Not String.IsNullOrEmpty(parameters) Then
      request.ContentLength = parameters.Length
      Using reqStream As StreamWriter = New StreamWriter(request.GetRequestStream())
        reqStream.Write(parameters)
      End Using
    End If
 
    #get response
    Dim returnValue As String = Nothing
    Using response As HttpWebResponse = request.GetResponse()
      If response.StatusCode = HttpStatusCode.OK Then
        Using resStream = response.GetResponseStream()
          If resStream IsNot Nothing Then
            Using reader As New StreamReader(resStream)
              returnValue = reader.ReadToEnd()
            End Using
          End If
        End Using
      End If
    End Using
    apiRequest = returnValue
 
  End Function
 
End Module
```

{% endtab %}

{% tab title="Python" %}

```python
# std
import logging
import json
from collections import OrderedDict
 
# 3p
import requests
 
API_KEY = "MY API KEY"
URL = "https://api.smspartner.fr/v1"
 
class SMSPartner():
    def add_stop(self,phone_numbers):
 
		data = OrderedDict([
			("apiKey", API_KEY),
			("phoneNumbers", phone_numbers)
		])
 
		url = URL + "/lookup"
		r = requests.post(url, data=json.dumps(data), verify=False)
 
		r_json = r.json()
		if r_json.get("success") == True:
			print(r_json)
			status = True
		else:
			print(r_json)
			status = False
		return status
```

{% endtab %}

{% tab title="cURL" %}

```
curl -H  "Content-Type: application/json" -X POST -d '{"apiKey":"xxxxx","phoneNumbers":"xxxx"}' https://api.smspartner.fr/v1/lookup
```

{% endtab %}
{% endtabs %}

#### **Réponse**

{% tabs %}
{% tab title="json" %}

```json
{
    "success": true,
    "code": 200,
    "lookup": [
        {
            "request": "336XXXXXXXX",
            "success": true,
            "countryCode": "France",
            "prefixCode": 33,
            "phoneNumber": "+336XXXXXXXX",
            "type": "Mobile",
            "network": "",
            "format": {
                "e164": "+336XXXXXXXX",
                "international": "+33 6 XX XX XX XX",
                "national": "06 XX XX XX XX",
                "rfc3966": "tel:+33-6-XX-XX-XX-XX"
            }
        }
    ]
}
```

{% endtab %}

{% tab title="xml" %}

```xml
<?xml version="1.0" encoding="UTF-8"?>
<result>
    <entry>true</entry>
    <entry>200</entry>
    <entry>
        <entry>
            <entry>
                <![CDATA[336XXXXXXXX]]>
            </entry>
            <entry>true</entry>
            <entry>
                <![CDATA[France]]>
            </entry>
            <entry>33</entry>
            <entry>
                <![CDATA[+336XXXXXXXX]]>
            </entry>
            <entry>
                <![CDATA[Mobile]]>
            </entry>
            <entry>
                <![CDATA[]]>
            </entry>
            <entry>
                <entry>
                    <![CDATA[+336XXXXXXXX]]>
                </entry>
                <entry>
                    <![CDATA[+33 6 XX XX XX XX]]>
                </entry>
                <entry>
                    <![CDATA[06 XX XX XX XX]]>
                </entry>
                <entry>
                    <![CDATA[tel:+33-6-XX-XX-XX-XX]]>
                </entry>
            </entry>
        </entry>
    </entry>
</result>
```

{% endtab %}
{% endtabs %}

#### Erreurs

{% tabs %}
{% tab title="json" %}

```json
{
    "success": false,
    "code": 10,
    "message": "Clé API incorrecte"
}
```

{% endtab %}

{% tab title="xml" %}

```xml
<?xml version="1.0" encoding="UTF-8"?>
<result>
    <entry>false</entry>
    <entry>10</entry>
    <entry>
        <![CDATA[Clé API incorrecte]]>
    </entry>
</result>
```

{% endtab %}
{% endtabs %}

#### **Code erreurs**

<table><thead><tr><th width="234">Code de réponse</th><th>Réponse</th></tr></thead><tbody><tr><td>1</td><td>La Clé API est requise</td></tr><tr><td>2</td><td>Le numéro de téléphone est requis</td></tr><tr><td>3</td><td>Les numéros doivent être séparés par une virgule</td></tr><tr><td>10</td><td>Clé API incorrecte</td></tr><tr><td>200</td><td>Tout s'est bien passé !</td></tr></tbody></table>

#### Exemple de notification d'une requête HLR

```php
Array(
    'phone' => '+3300000000',
    'messageId'=>'1234-12344-1234-1234',
    'mccMnc' => '20815',
    'ported'=> 1,
    'errorGrpId'=> 0,
    'errorName'=> 'NO_ERROR ',
    'errorDesc'=>'No Error' ,
    'date'=>'2018-03-05T10:34:52.355+0000'
)
```

#### Code erreurs HLR

| Erreur | Nom de l'erreur                                                                                                                                                                                                                                                            |
| ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0      | `NO_ERROR`Aucune erreur.                                                                                                                                                                                                                                                   |
| 1      | `EC_UNKNOWN_SUBSCRIBER`Le numéro n’existe pas ou n’a été attribué à aucun abonné actif dans la base de données utilisateur de l’opérateur.                                                                                                                                 |
| 5      | `EC_UNIDENTIFIED_SUBSCRIBER`Abonné non identifié.                                                                                                                                                                                                                          |
| 6      | `EC_ABSENT_SUBSCRIBER_SM`Comme il n’y avait pas de réponse, l’abonné a été détecté comme indisponible. Cela est souvent dû au fait que le combiné est éteint ou dans une zone de faible signal.                                                                            |
| 7      | `EC_UNKNOWN_EQUIPMENT`Le périphérique mobile n’a pas été reconnu par EIR (Equipment Identity Register) lors de la vérification du périphérique au niveau du protocole MAP sur l’infrastructure de l’opérateur.                                                             |
| 8      | `EC_ROAMING_NOT_ALLOWED`L’abonné est actuellement en itinérance dans un autre pays ou utilise l’infrastructure d’un autre opérateur – la livraison en itinérance n’est pas garantie en raison de l’absence d’accords d’itinérance entre de nombreux opérateurs différents. |
| 9      | `EC_ILLEGAL_SUBSCRIBER`Abonné illégal.                                                                                                                                                                                                                                     |
| 12     | `EC_ILLEGAL_EQUIPMENT`Équipement illégal.                                                                                                                                                                                                                                  |
| 13     | `EC_CALL_BARRED`L’abonné est configuré sur le service NPD (Ne pas déranger), et ne reçoit aucun trafic de service vers son numéro.                                                                                                                                         |
| 27     | `EC_ABSENT_SUBSCRIBER`L’abonné est hors ligne. Cela est souvent dû au fait que le combiné est éteint.                                                                                                                                                                      |
| 255    | `EC_UNKNOWN_ERROR`Erreur inconnue.                                                                                                                                                                                                                                         |
