# Requisições

Contamos atualmente com 4 endpoints em nossa API de Parceiros, aprenda à seguir como utilizá-los da maneira correta e a função de cada um.

{% hint style="success" %}
**A URL de base de todos os endpoints é**: <https://web.smsfunnel.com.br/api/parceiros/v1>
{% endhint %}

### Padrão de corpo e regras das requisições

1. Todas requisições de consulta devem ter pelo menos as chaves user\_id ou email preenchidas, `user_id` sendo o ID do usuário e o `email` sendo o email do usuário que deseja consultar as métricas. Não permitido o uso simultâneo das duas chaves.
2. Você só terá acesso às informações sobre os seus usuários afiliados.
3. As requisições não poderão constar headers como set-cookie e afins.

### Código de Erros Comuns

* `400 Bad Request`: A requisição não pôde ser processada devido a um erro genérico.
* `401 Unauthorized`: Sua Chave de API é inválida.
* `403 Forbidden`: Seu usuário não tem a API de Parceiros habilitada.
* `404 Not Found`: O usuário solicitado não foi encontrado ou não pertence aos seus afiliados.
* `422 Unprocessable Entity`: Seu postback está com algum problema.
* `500 Internal Server Error`: Ocorreu um erro interno ao processar a requisição.

### Corpo de Resposta de Erros Comuns

```json
{
    "error": "The error message here" 
}
```

***

## Endpoints

<mark style="color:green;">**GET**</mark>**&#x20;/recharges**

**Função:** Obter dados de recargas do usuário.

**Corpo de envio:**

```json5
{ 
    "email": "meu_usuario@example.com",
    // Campos de data (Opcionais), devem ter no máximo 90 dias de diferença entre si.
    "from_date": "2024-01-01", // Data inicial
    "to_date": "2024-02-01" // Data final
}
```

**Corpo de resposta:**

```json
{
    "recharges": [
        {
            "created_at": "2024-11-21 00:00:00", // Data da recarga
            "description": "Recarga Direta", // Descrição
            "service": "SMS", // Serviço
            "credits": 0, // Quantidade de créditos recarregados
            "price": 0, // Preço
            "total": 0, // Valor
            "situation": "APPROVED" // Situação
        }, ...
    ]
}
```

#### <mark style="color:green;">GET</mark> /sent-messages

**Função:** Obter mensagens enviadas do usuário.

**Corpo de envio:**

```json5
{ 
    "email": "meu_usuario@example.com",
    // Campos de data (Opcionais), devem ter no máximo 90 dias de diferença entre si.
    "from_date": "2024-01-01", // Data inicial
    "to_date": "2024-02-01" // Data final
}
```

**Corpo de resposta:**

```json
{
    "sms": 123, // Quantidade de SMS enviados no período
    "whatsapp": 321, // Quantidade de mensagens WhatsApp enviados no período
    "clicks": 10 // Quantidade de Clicks nos links no período
}
```

####

#### <mark style="color:green;">GET</mark> /credits

**Função:** Obter dados de créditos gerais do usuário.

**Corpo de envio:**

```json5
{
    "email": "meu_usuario@example.com" 
}
```

**Corpo de resposta:**

```json
{
    "sms": {
        "contracted": 0, // SMS Contratados
        "sent": 0, // SMS Enviados
        "available": 0 // SMS Disponíveis
    },
    "whatsapp": {
        "contracted": 0, // WhatsApp Contratados
        "sent": 0, // WhatsApp Enviados
        "available": 0 // WhatsApp Disponíveis
    }
}

```

#### <mark style="color:green;">GET</mark> /clicks

**Função:** Obter o número de clicks nos envios do usuário

**Corpo de envio:**

{% code fullWidth="false" %}

```json
{
    "email": "meu_usuario@example.com", //campo obrigatório
    "Id": "id da automação ou id do broadcast", //campo opcional, caso preenchido, retornará dados apenas do id informado.
    //Campos de data (Opcionais), devem ter no máximo 90 dias de diferença entre si.
    "from_date": "2024-01-01", //Data inicial 
    "to_date": "2024-02-01" // Data final
}

```

{% endcode %}

**Corpo de resposta:**

```json
{
    "sms": 123, // quantidade total de clicks
    "whatsapp": 321, // quantidade total de envios de mensagem whatsapp
    "clicks": 10, // quantidade total de envios de SMS
    "campaigns": [
        {
            "id": "9fe358e0-5ffa-4aee-90f4-c010eef2aede", // ID da campanha
            "name": "pix gerado", // nome da campanha de automação 
            "sms": 23, // quantidade de SMS disparados na automação 
            "clicks": 2, // quantidade de clicks da campanha em específico da automação 
            "messages": [
                {
                    "text": "Ola {first_name}, seu pix foi gerado. Clique no link para 
                        efetuar o pagamento: {url_pix}",
                    "interval": 0,
                    "interval_type": "Minuto(s)",
                    "url": "https://meupix.com/019c7116-3c27-797d-91b3-aa49a5bea42a"
                },
                {
                    "text": "Ola {first_name}, ainda nao identificamos o seu pagamento. 
                        Clique no link para o pagamento: {url_pix}",
                    "interval": 5,
                    "interval_type": "Minuto(s)",
                    "url": "https://meupix.com/019c7116-3c27-797d-91b3-aa49a5bea42a"
                }
            ]
        }, 
        { 
            "id": "019c7114-3b02-7d1d-83b9-a8a23052aa37",
            "name": "cartao pago", 
            "sms": 10,
            "clicks": 2, 
            "messages": [
                {
                    "text": "Ola {first_name}, seu pagamento foi confirmado. Em breve
                        voce recebera o codigo de rastreio",
                    "interval": 0,
                    "interval_type": "Minuto(s)",
                    "url": "https://minhaloja.com/ck=019c7116-3c27-797d-91b3-aa49a5bea42a"
                }
            ] 
        }
    ], 
    "broadcasts": [
        { 
            "id": "019c7114-7c4b-77b6-8deb-12cb5c885ea5", // ID do broadcast
            "name": "promoção Carnaval", // nome da campanha do broadcast 
            "total_leads": 100, // quantidade de leads
            "sent": 92, // quantidade de envios (subtraindo inválidos - cancelados)
            "cancelled": 8, // quantidade de envios cancelados (números inválidos)
            "sent_date": "2026-01-30 15:06:54", // Data/hora do envio
            "clicks": 54, // quantidade de clicks da campanha em específico do broadcast 
            "message": "Ola {first_name}, aproveite nossa promocao de carnaval. Faca
                uma compra no link {meu_link} e ganhe 10% OFF", // mensagem enviada,
            "url": "https://minhaloja.com/ck=019c7116-3c27&c=10OFF",
            "short_url": "https://gosite.cc/3c2710of"
        }, 
        {
            "id": "019c7114-abab-7da9-9a46-4da50bd49147",
            "name": "aposta tbt", 
            "total_leads": 5800,
            "sent": 5671,
            "cancelled": 129,
            "clicks": 4684, 
            "message": "MINHASORTE: aproveite nossa promocao aposta TBT e faca
                uma aposta no link {meu_link} e ganhe 10% de cashback", // mensagem enviada,
            "url": "https://minhaloja.com/?source=sms&p=cash10",
            "short_url": "https://gosite.cc/3c4810of"
        }
    ]
}
```

#### <mark style="color:green;">GET</mark> /phones-blacklist

Recupera todos os números da blacklist na conta de e-mail informada, com paginação de 1.000 registros por vez.&#x20;

**Corpo de envio:**

```json
{
    "email": "johndoe@email.com",
    // Campos opcionais de paginação
    "page": 1,
    "per_page": 1000
}
```

**Corpo de resposta:**

```json
{
    "phones": [
        "51989261101",
        "51989261102",
        "51989261103"
    ],
    "total": 6000,
    "page": 1,
    "per_page": 3,
    "total_pages": 2000
}
```

#### <mark style="color:green;">POST</mark> /phones-blacklist

Inclusão de telefones na blacklist na conta de e-mail informada. Caso o número seja inválido, ele será descartado, não sendo incluído na blacklist.

**Corpo de envio:**

```json
{
    "email": "johndoe@email.com",
    "phones": [
        51989261101,
        "51989261103"
    ]
}
```

**Corpo de resposta:**

```json
{
    "message": "Blacklist atualizada com sucesso",
    "phones_count": 2
}
```

#### <mark style="color:red;">DELETE</mark> /phones-blacklist

Exclusão de telefones na blacklist.&#x20;

**Corpo de envio:**

```json
{
    "email": "johndoe@email.com",
    "phones": [
        51989261101,
        "51989261103"
    ]
}
```

**Corpo de resposta:**

```json
{
    "message": "Números removidos da blacklist com sucesso",
    "phones_removed": 2
}
```

### Dúvidas?

Em caso de dúvidas, entre em contato com nosso suporte.
