> For the complete documentation index, see [llms.txt](https://push.gitbook.io/push/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://push.gitbook.io/push/master.md).

# Contrato de api para envío de mensajes push

### Contrato base

POST [**https://push.masivapp.com/v1/**](https://api.push.masiv.com/notification/v1/sendToList)[**notification/**](https://api.push.masiv.com/notification/v1/sendToList)[**sendToList**](https://api.push.masiv.com/notification/v1/sendToList)

```
{
 "tokens": [string, ...],
 "tokensByAssociation": 
  TokensByAssociation
,
 "notification": 
  Notification
,
 "data": {
  key: value,
  ...
 }
}
```

| **Campo**                                                                                                                                                                                                              | **Descripción**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p><strong>tokens</strong></p><p>(Obligatorio si no hay tokensByAssociation)</p><p>Se debe especificar, ya sea el atributo “<strong>tokens</strong>” o el atributo “<strong>tokensByAssociation</strong>”</p>          | <p><strong>Tipo: \[</strong>string, string, <strong>…]</strong></p><p>Arreglo de “strings”, con la lista de tokens a la cual se enviará la notificación.</p><p><em><strong>Ejemplo:</strong></em></p><p>\[</p><p> “e5b7244fe8e07a38eea633aaaec5c”,</p><p> “969423461e6a6adf967920efbd764”,</p><p> “12bh8c2ioq308kkd19csbokctqlcq21”</p><p>]</p>                                                                                                                                                                                                                                                                                                                                                                                        |
| <p><strong>tokensByAssociation</strong></p><p>(Obligatorio si no hay lista de tokens)</p><p>Se debe especificar, ya sea el atributo “<strong>tokens</strong>” o el atributo “<strong>tokensByAssociation</strong>”</p> | <p><strong>Tipo:</strong> (ver sección <a href="/pages/-MCMjCryQYr07KjXPirR#tokensbyassociation">TokensByAssociation</a>)</p><p>Información que será utilizada para obtener el “token” del dispositivo a partir del número celular o email, el cual es registrado a través del endpoint de asociación.</p>                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **notification** (Obligatorio)                                                                                                                                                                                         | <p><strong>Tipo:</strong> (ver sección <a href="/pages/-MCMjCryQYr07KjXPirR#notification">Notification</a>)</p><p>Plantilla con los datos básicos de la notificación</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| **data** (Opcional)                                                                                                                                                                                                    | <p><strong>Tipo: {</strong>key<strong>:</strong>value<strong>,</strong> key<strong>:</strong>value<strong>,</strong> <strong>...}</strong></p><p>(Tanto key como value son de tipo string)</p><p>Lista arbitraria de llaves y sus respectivos valores.</p><p>Puede ser usada para incluir información adicional (metadata) de utilidad para fines estadísticos, de reportería, etc.</p><p>La llave no puede ser ninguna de las siguientes palabras reservadas: “from”, “message\_type”, ni palabras que empiecen por “google” o “gcm”.</p><p><em><strong>Ejemplo:</strong></em></p><p><br>{</p><p> "Campaña": "Créditos nuevos",</p><p> "Destinatarios": "Todos los clientes",</p><p> "Notificar máximo": "3 dispositivos"</p><p>}</p> |

### Notification

Estructura de un objeto “**notification**” para enviar los mensajes a través de diferentes plataformas

```
{
 "title": string,
 "message": string,
 "imageUrl": string
}
```

| **Campo**                 | **Descripción**                                                                                                                                                                                                                                                                                                                          |
| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **title** (Obligatorio)   | <p><strong>Tipo:</strong> string</p><p>Título de la notificación</p>                                                                                                                                                                                                                                                                     |
| **message** (Obligatorio) | <p><strong>Tipo:</strong> string</p><p>Mensaje de la notificación</p>                                                                                                                                                                                                                                                                    |
| **imageUrl** (Opcional)   | <p><strong>Tipo:</strong> string</p><p>Debe contener la URL de una imagen que va a ser descargada en el dispositivo y mostrada en una notificación.<br></p><p><strong>Formatos válidos:</strong> JPEG, PNG, BMP (soportados para todas las plataformas). GIF animados y videos sólo para iOS. Android tiene un tamaño límite de 1MB.</p> |

###

### TokensByAssociation

```
{
 "appId": string,
 "deviceTypesToSend": [string, ...],
 "cellphones": [string, ...],
 "emails": [string, ...]
}
```

| **Campo**                                                                        | Descripción                                                                                                                                                                                                                                                                                                                                                                                                          |
| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **appId** (Opcional)                                                             | Si se tienen múltiples aplicaciones asociadas a una cuenta con el mismo número de celular o correo se debe especificar.                                                                                                                                                                                                                                                                                              |
| **deviceTypesToSend** (Opcional)                                                 | <p><strong>Tipo: \[</strong>string, string, <strong>…]</strong></p><p><br>Arreglo de “strings”, con la lista de tipos de dispositivos válidos para hacer envíos.</p><p>Si no se especifica al menos un tipo de dispositivo, la notificación se envía a todos los celulares y/o emails encontrados.</p><p><br><strong>Valores válidos:</strong></p><p>"Android", "iOS", "Web"</p>                                     |
| <p><strong>cellphones</strong></p><p>(Obligatorio si no hay lista de emails)</p> | <p><strong>Tipo: \[</strong>string, string, <strong>…]</strong></p><p>Arreglo de “strings”, con la lista números celulares, que será utilizada para obtener los “tokens” de los dispositivos que fueron asociados a través del endpoint de asociación.</p><p>El número celular debe tener el siguiente formato:</p><p> Código País + Número Celular</p><p><em><strong>Ejemplo:</strong></em></p><p> 573141234567</p> |
| <p><strong>emails</strong></p><p>(Obligatorio si no hay lista de cellphones)</p> | <p><strong>Tipo: \[</strong>string, string, <strong>…]</strong></p><p>Arreglo de “strings”, con la lista correos electrónicos, que será utilizada para obtener los “tokens” de los dispositivos que fueron asociados a través del endpoint de asociación.</p>                                                                                                                                                        |

**Observaciones adicionales:**

Los filtros “**appId**” y “**deviceTypesToSend**” se aplican únicamente a la lista de celulares y correos electrónicos que en envien en los atributos “cellphones” e “emails”.

***Ejemplo JSON válido:***

```
{
  "tokens": [
    "e5b7244fe8e07a38eea633aaaec5c",
    "969423461e6a6adf967920efbd764",
    "12bh8c2ioq308kkd19csbokctqlcq21"
  ],
  "tokensByAssociation": {
    "appId": "com.empresa.miapp",
    "deviceTypesToSend": [
      "ANDROID",
      "IOS"
    ],
    "cellphones ": [
      "5713140000000",
      "5713140000001"
    ],
    "emails": [
      "usuario1@dominio.com",
      "usuario2@dominio.com"
    ]
  },
 "notification": {
   "title": "Mensaje para lista",
   "message": "Este es un mensaje para una lista de dispositivos",
   "imageUrl": "https://dominio.com/ruta/imagen.png"
  },
  "data": {
    "Campaña": "Créditos nuevos",
    "Destinatarios": "Todos los clientes",
    "Notificar máximo": "3 dispositivos"
  }
}
```

***Respuestas del servidor:***

> Code OK 200

```
{
  "status": "OK",
  "data": "Notification has been sent",
  "error": null
}
```

> Code 400 Error

```
{
  "timestamp": "2020-07-16T00:00:56.522+00:00",
  "status": 400,
  "error": "Bad Request",
  "message": "",
  "path": "/notification/v1/sendToList"
}
```

###

## Contrato de api para la asociación de tokens con celulares o correos

### Contrato base

**¿Por qué usarlo?**

Este endpoint permite asociar un token de dispositivo (android, ios o web) a un celular y/o email.

El objetivo es poder enviar mensajes push a uno o varios dispositivos de un cliente usando un sólo email o celular, sin necesidad de especificar el token del dispositivo.

Es una funcionalidad permite integración sencilla con otros productos de Masiv cómo automation o hub express en donde fácilmente se podrían configurar flujos, los cuales que automaticamente si no logran contactar a un cliente mediante sms o llamada de voz, lo intenten hacer por push, o viceversa.

POST [**https://push.masivapp.com/v1/**](https://api.push.masiv.com/association/v1/create)[**association/**](https://api.push.masiv.com/association/v1/create)[**create**](https://api.push.masiv.com/association/v1/create)

```
{
 "appId": string
 "token": string
 "association": 
    Association
}
```

| **Campo**                                                                 | **Descripción**                                                                                                                                                                                                                                                           |
| ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **appId** (Opcional)                                                      | <p><strong>Tipo:</strong> string</p><p>Nombre de la aplicación a la cual está asociado el token específico</p>                                                                                                                                                            |
| **token** (Obligatorio)                                                   | <p><strong>Tipo:</strong> string</p><p>Contiene el token, del dispositivo específico, para el cual se asocia un número celular (cellphone) y/o un correo electrónico (email).</p>                                                                                         |
| <p><strong>association</strong></p><p>(Obligatorio al menos un valor)</p> | <p><strong>Tipo:</strong> (ver sección <a href="/pages/-MCMjCryQYr07KjXPirR#association">Association</a>)</p><p>Contiene los números de celular y emails asociadas al dispositivo</p><p>Se quiere cell phone or email, o ambos, pero obligatoriamente uno de los dos.</p> |

### Association

Objeto utilizado para recibir los emails y/o celulares asociados a un token específico.

```
{
 "cellphone": string
 "email": string
}
```

| **Campo**                                                                   | **Descripción**                                                                                                                                                                                                               |
| --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p><strong>cellphone</strong></p><p>(Obligatorio si no se indica email)</p> | <p><strong>Tipo:</strong> string</p><p>Número de celular válido</p><p>El número celular debe tener el siguiente formato:</p><p> Código País + Número Celular</p><p><em><strong>Ejemplo:</strong></em></p><p> 573141234567</p> |
| <p><strong>email</strong></p><p>(Obligatorio si no se indica cellphone)</p> | <p><strong>Tipo:</strong> string</p><p>Dirección de correo electrónico válida</p>                                                                                                                                             |

***Ejemplo JSON válido:***

```
{
 "appId": "com.empresa.miapp",
 "token": "asdfdgwregjirgjirjh435ggyfggghhtg9i45rj9tu4j943ujto94jhtiorgtty",
 "association": {
 "cellphone": "573141234567",
 "email": "usuario@empresa.com"
 }
}
```

***Respuesta del servidor:***

> Code OK 200

```
{
  "status": "OK",
  "data": "Successful association",
  "error": null
}
```

> Code 400 Error

```
{
  "timestamp": "2020-07-16T00:00:56.522+00:00",
  "status": 400,
  "error": "Bad Request",
  "message": "",
  "path": "/association/v1/create"
}
```
