# Consultar Status de SMS

{% hint style="warning" %}

## Importante:

**As consultas possuem limite de 1 requisição a cada 30 segundos por endereço IP. Requisições além deste limite são respondidas com o código de status HTTP 429.**
{% endhint %}

## SMS Status Check

<mark style="color:blue;">`GET`</mark> `https://message.uniqmobile.com.br/api/sms/sms-status-check/{SmsId}`

Este endpoint permite que seja buscado o status de um determinado sms

#### Query Parameters

| Name  | Type   | Description             |
| ----- | ------ | ----------------------- |
| SmsId | number | Id do SMS a ser buscado |

#### Headers

| Name           | Type   | Description                   |
| -------------- | ------ | ----------------------------- |
| Authentication | string | **api-key** para autenticação |

{% tabs %}
{% tab title="200 Relatório obtido com sucesso" %}

```
{
    "Success": true, 
    "Object": {
        "SMSId" : 568563,
        "SMSExternalId": null,
        "MessageId": 156,
        "MessageText" : "Bom dia Joao!",
        "ScheduledDate": "null",
        "SendDate": "2021-04-01T21:18:00",
        "ReturnDate": "2021-04-01T21:18:00",
        "Status": 5,
        "StatusDescription": "Enviado",
        "SMSStatusDetails": "SMS enviado com sucesso, entregue na operadora",
        "Number": 5598999999999
        "Operator": "TIM"
    },
    "Message": Relatório obtido com sucesso
}
```

{% endtab %}

{% tab title="400 Algum erro durante a requisição" %}

```
{
    "Success": false, 
    "Object": null, 
    "Message": "Mensagem referente ao erro"
}
```

{% endtab %}

{% tab title="500 Algum erro no nosso servidor durante a requisição" %}

```
{
    "Success": false, 
    "Object": null, 
    "Message": "Mensagem referente ao erro"
}
```

{% endtab %}
{% endtabs %}

## Exemplos

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

```bash
curl --request GET \
    --url https://message.uniqmobile.com.br/api/sms/sms-status-check/?SmsId=XXX\
    --header 'api-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' \
```

{% endtab %}

{% tab title="Python" %}

```python
import requests

 url = "https://message.uniqmobile.com.br/api/sms/sms-status-check/"

 querystring = {"SmsId":XXXX}
 
 headers = {
     'content-type': "application/json",
     'api-key': "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
     }

 resp= requests.request("GET", url, headers=headers, params=querystring)

 print(resp.status_code)
 print(resp.text)
```

{% endtab %}

{% tab title="C#" %}

```csharp
using System;
using System.IO;
using System.Net;

class MainClass {
  public static void Main (string[] args) {
    var SmsId = XXX;

    var url = $"https://message.uniqmobile.com.br/api/sms/sms-status-check/?SmsId={SmsId}";

    var httpRequest = (HttpWebRequest)WebRequest.Create(url);
    httpRequest.Method = "GET";

    httpRequest.Headers["api-key"] = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
    httpRequest.ContentType = "application/json";


    var httpResponse = (HttpWebResponse)httpRequest.GetResponse();
    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
    {
      var result = streamReader.ReadToEnd();
      Console.WriteLine(httpResponse.StatusCode);
      Console.WriteLine(result);
    }
  }
}
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
var smsId = XXX

var url = `https://message.uniqmobile.com.br/api/sms/sms-status-check/?SmsId=${smsId}`;

var xhr = new XMLHttpRequest();
xhr.open("GET", url);

xhr.setRequestHeader("api-key", "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");
xhr.setRequestHeader("Content-Type", "application/json");

xhr.onreadystatechange = function () {
    if (xhr.readyState === 4) {
        console.log(xhr.status);
        console.log(xhr.responseText);
    }
};

xhr.send();
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$smsId = XXX;
$url = "https://message.uniqmobile.com.br/api/sms/sms-status-check/?SmsId={$smsId}";

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$headers = array(
   "api-key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
   "Content-Type: application/json",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

$resp = curl_exec($curl);
$statuscode = curl_getinfo($curl)["http_code"];
curl_close($curl);

var_dump($statuscode);
var_dump($resp);

?>
```

{% endtab %}

{% tab title="NodeJS" %}

```typescript
const https = require('https')

const smsId = XXX

const options = {
  hostname: 'message.uniqmobile.com.br',
  path: `/api/sms/sms-status-check/${smsId}`,
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'api-key' : 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
  }
}

const req = https.request(options, res => {
  console.log(`statusCode: ${res.statusCode}`)

  res.on('data', d => {
    process.stdout.write(d)
  })
})

req.on('error', error => {
  console.error(error)
})

req.end()
```

{% endtab %}
{% endtabs %}

## Campos de Retorno <a href="#campos-de-retorno" id="campos-de-retorno"></a>

| Campos            | Descrição                                                                                                                               |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| Success           | Retorna TRUE se a requisição foi finalizada com sucesso ou FALSE se houve falhas                                                        |
| Object            | Campo com os resultados da requisição                                                                                                   |
| SMSId             | ID do SMS gerado no momento do envio                                                                                                    |
| SMSExternalId     | ID Externo do SMS. Este parâmetro é opcional, e você pode utilizar o ID gerado pela UNIQ MOBILE para pegar o STATUS do SMS              |
| MensageId         | ID da mensagem ao qual o SMS está relacionado                                                                                           |
| MessageText       | Texto do SMS enviado                                                                                                                    |
| ScheduledDate     | Parâmetro relacionado à agendamento de envio. Caso o SMS tenha sido enviado de forma instantânea, será retornado null                   |
| SendDate          | Data do envio do SMS. Nos casos em que o cliente realize agendamento, a data de envio será a mesma retornada no parâmetro ScheduledDate |
| ReturnDate        | Data do retorno do envio                                                                                                                |
| Status            | Status de envio do SMS                                                                                                                  |
| StatusDescription | Descrição do status de envio do SMS junto a Operadora.                                                                                  |
| SMSStatusDetail   | Este parâmetro fornece mais detalhes sobre o Status do SMS                                                                              |
| Number            | Número para o qual o SMS foi enviado                                                                                                    |
| Operator          | Nome da Operadora                                                                                                                       |
| Message           | Mensagem com mais detalhes sobre a requisição                                                                                           |

‌

## Possíveis Retornos <a href="#possiveis-retornos" id="possiveis-retornos"></a>

| HTTP Status | Mensagem                                                             |
| ----------- | -------------------------------------------------------------------- |
| 200         | SMS obtido com sucesso                                               |
| 401         | Erro de Autenticação com a Api-key                                   |
| 401         | Usuário Inativo                                                      |
| 401         | Usuário Não Encontrado                                               |
| 400         | Insira um Id de SMS válido                                           |
| 400         | Erro na busca pelas informações do SMS                               |
| 429         | Muitas Requisições Realizadas                                        |
| 500         | Erro no servidor                                                     |
| 503         | Sistema indisponível no momento                                      |
| 504         | Houve um time out na requisição ao efetuar a conexão com o endpoint. |
