# Campañas API

Este documento proporciona la información necesaria para integrarse con la plataforma de ChatClub para realizar la gestión de campañas. La API tiene integración REST, mediante el protocolo HTTP con TLS, que admite los métodos POST con los parámetros enviados en formato JSON.

### Autenticación <a href="#autenticaci-n" id="autenticaci-n"></a>

Para utilizar con éxito nuestra API, debe proporcionar un nombre de usuario válido (correo electrónico) asociado con un token de autenticación. Debe agregar los siguientes encabezados a la solicitud:

| Campo                   | Detalles                                                                                                                                                                   | Tipo de datos |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
| **userName**            | Correo electrónico válido suscrito en la plataforma ChatClub                                                                                                               | String        |
| **authenticationToken** | Token de autenticación generado por nuestra plataforma. Encuéntrelo aquí o consulte nuestro soporte. [here](https://messaging.movile.com/messaging/user/api_configuration) | String        |

### Detalles de conexión <a href="#detalles-de-conexi-n" id="detalles-de-conexi-n"></a>

| Nombre            | Host                   |
| ----------------- | ---------------------- |
| **Hostname**      | apigw\.wavy.global     |
| **Port**          | 443 (https)            |
| **Protocol**      | HTTPS (TLS encryption) |
| **Authorization** | username + token       |
| **Encoding**      | UTF-8                  |

### Listado de campañas <a href="#listado-de-campa-as" id="listado-de-campa-as"></a>

> Ejemplo de listado de campañas

```
curl -X GET \
 'https://apigw.wavy.global/api/v1/campaigns?name=MyCampaign&page=1&page_size=10' \
 -H 'Content-Type: application/json' \
 -H 'authenticationToken: <authentication_token>' \
 -H 'userName: <e-mail>'

```

> Respuesta

```
HEADERS:
page-number: 1
per-page: 10
total: 2
total-pages: 1
```

```
{
    "status": {
        "error": false
    },
    "campaigns": [
        {
            "name": "My first campaign",
            "id": 1,
            "alias": "first"
        },
        {
            "name": "My second campaign",
            "id": 2,
            "alias": "second"
        }
    ]
}
```

Listado de campañas ya registradas en la plataforma. Puedes seleccionar la página de resultados o filtrar por nombre de campaña. `GET https://apigw.wavy.global/api/v1/campaigns`

### Parámetros QueryString <a href="#par-metros-querystring" id="par-metros-querystring"></a>

<table><thead><tr><th width="194.33333333333331">Campo</th><th>Detalles</th><th>Tipo de Dato</th></tr></thead><tbody><tr><td>name</td><td>Nombre de la campaña para ser utilizado como filtro.</td><td>String</td></tr><tr><td>page</td><td>Página que se solicita</td><td>Integer</td></tr><tr><td>page_size</td><td>Cantidad de registros por página</td><td>Integer</td></tr></tbody></table>

### Solicitando una campaña específica <a href="#solicitando-una-campa-a-espec-fica" id="solicitando-una-campa-a-espec-fica"></a>

> Ejemplo de solicitación de una campaña específica

```
curl -X GET \
  https://apigw.wavy.global/api/v1/campaigns/1234 \
  -H 'Content-Type: application/json' \
  -H 'authenticationToken: <authentication_token>' \
  -H 'userName: <e-mail>'

```

> Respuesta

```
{
    "status": {
        "error": false
    },
    "campaign": {
        "name": "My Campaign",
        "id": 1234,
        "alias": "mycampaign"
    }
}
```

Solicitando una campaña específica por el ID

`GET https://apigw.wavy.global/api/v1/campaign/{id}`

### Creando campañas <a href="#creando-campa-as" id="creando-campa-as"></a>

> Ejemplo de creación de campaña:

```
curl -X POST \
  https://apigw.wavy.global/api/v1/campaigns \
  -H 'Content-Type: application/json' \
  -H 'authenticationToken: <authentication_token>' \
  -H 'userName: <e-mail>' \
  -d '{
        "campaign" : {
          "name": "My Campaign",
          "alias": "mycampaign"
        }
      }'
```

> Respuesta

```
{
    "status": {
        "error": false
    },
    "campaign": {
        "name": "My Campaign",
        "id": 1234,
        "alias": "mycampaign"
    }
}
```

Creando una nueva campaña con nombre y alias . El alias de la campaña debe ser un nombre simple para que sea más fácil de usar con la API. Se recomienda ser corto y no usar caracteres especiales.

`POST https://apigw.wavy.global/api/v1/campaigns`

#### JSON Object <a href="#json-object" id="json-object"></a>

\* Campos requeridos

| Campo      | Detalles                     | Tipo de dato |
| ---------- | ---------------------------- | ------------ |
| **name\*** | Nombre de la campaña         | String       |
| **alias**  | Identificador de la campaña. | String       |

### Cambiando campañas <a href="#cambiando-campa-as" id="cambiando-campa-as"></a>

> Ejemplo de cambio en campaña:

```
curl -X PUT \
  https://apigw.wavy.global/api/v1/campaigns/1234 \
  -H 'Content-Type: application/json' \
  -H 'authenticationToken: <authentication_token>' \
  -H 'userName: <e-mail>' \
  -d '{
        "campaign" : {
          "name": "My Campaign",
          "alias": "mycampaign"
        }
      }'
```

> Respuesta

```
{
    "status": {
        "error": false
    },
    "campaign": {
        "name": "My Campaign",
        "id": 1234,
        "alias": "mycampaign"
    }
}
```

Cambiando una campaña por su nombre o alias.

`PUT https://apigw.wavy.global/api/v1/campaigns/{id}`

#### JSON Object <a href="#json-object" id="json-object"></a>

\* Campos requeridos

| Campo  | Detalles                    | Tipo de dato |
| ------ | --------------------------- | ------------ |
| name\* | Nombre de la campaña        | String       |
| alias  | Identificador de la campaña | String       |

### Borrando campañas <a href="#borrando-campa-as" id="borrando-campa-as"></a>

> Ejemplo borrando campañas:

```
curl -X DELETE \
  https://apigw.wavy.global/api/v1/campaigns/1234 \
  -H 'Content-Type: application/json' \
  -H 'authenticationToken: <authentication_token>' \
  -H 'userName: <e-mail>'
```

> Respuesta

```
{
    "status": {
        "error": false
    },
    "campaign": {
        "name": "My Campaign",
        "id": 1234,
        "alias": "mycampaign"
    }
}
```

Borrando una campaña por su ID

`DELETE https://apigw.wavy.global/api/v1/campaigns/{id}`
