# API de Mensagens

import { Badge } from '@astrojs/starlight/components';

<Aside type="caution" title="/createMessage e /createTargetedMessage estão obsoletos">
Novas integrações devem usar a [**API de Mensagens v2**](/pt/developer/api-reference/messaging-api-v2/) unificada — um único endpoint substitui toda a família `/create*Message`. Consulte o [guia de migração](/pt/developer/api-reference/messaging-api-v2/migration-from-v1/) para um mapeamento campo a campo.

Os métodos legados abaixo permanecem totalmente operacionais. `/deleteMessage`, `/cancelMessage` e `/getMessageDetails` não estão obsoletos — use-os como de costume para mensagens criadas via v1 ou v2.
</Aside>

<Aside type="note">
Para começar, por favor, verifique as descrições dos [parâmetros de solicitação /createMessage](/pt/developer/api-reference/messages-api/api-prerequisites).
</Aside>

## createMessage <Badge text="Obsoleto" variant="caution" size="small" />

`POST` `https://api.pushwoosh.com/json/1.3/createMessage`

Cria uma nova notificação push.

#### Corpo da Solicitação

| Nome                                            | Tipo   | Descrição                                                                |
| ----------------------------------------------- | ------ | -------------------------------------------------------------------------- |
| auth*          | string | [Token de acesso à API](/pt/developer/api-reference/api-identifiers/#api-access-token) do Painel de Controle da Pushwoosh.                             |
| application*   | string | [Código do aplicativo Pushwoosh](/pt/developer/api-reference/api-identifiers/#application-code)                                               |
| notifications* | array  | Array JSON de parâmetros da mensagem. Veja os detalhes no exemplo de solicitação abaixo.  |

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "Messages": [
      "C3F8-C3863ED4-334AD4F1"
    ]
  }
}
```
</TabItem>
</Tabs>

<Aside type="note">
O método /createMessage suporta modelos de conteúdo. Para saber mais, por favor, consulte o [guia de Liquid Templates](/pt/developer/guides/personalization/liquid-templates/).
</Aside>

### Exemplo de solicitação

```json title="Exemplo"
{
  "request": {
    "application": "XXXXX-XXXXX",       // obrigatório. Código do aplicativo Pushwoosh.
    "auth": "yxoPUlwqm…………pIyEX4H",     // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh.
    "notifications": [{
      "send_date": "now",               // opcional. YYYY-MM-DD HH:mm OU 'now'
      "content": {                      // opcional. objeto OU string.
        "en": "English",                //           Use "wns_content" em vez disso para Windows.
        "fr": "French"
      },
      "title": {                        // opcional. objeto OU string. 
        "en": "Title",                  //           Ignorado se títulos específicos da plataforma forem especificados
        "fr": "Titre"                   //           'ios_title', 'android_header', etc.
      },                                //           veja os exemplos de parâmetros específicos da plataforma abaixo.
      "subtitle":{                      // opcional. objeto OU string. 
        "en": "Subtitle",               //           Ignorado se títulos específicos da plataforma forem especificados
        "fr": "Sous-titre"              //           'ios_subtitle', etc.
      },                                //           veja os exemplos de parâmetros específicos da plataforma abaixo.
      "ignore_user_timezone": true,     // opcional.
      "timezone": "America/New_York",   // opcional. Se ignorado, UTC-0 é o padrão para "send_date".
                                        //           Veja https://php.net/manual/timezones.php para
                                        //           fusos horários suportados.
      "campaign": "CAMPAIGN_CODE",      // opcional. Código da campanha à qual você deseja
                                        //           atribuir esta mensagem push.
      "geozone": {                      // opcional. Enviar para Geozone
        "lat": 22.22,
        "lng": 33.33,
        "range": 110
      },
      "rich_media": "XXXXX-XXXXX",      // opcional. Copie o código de Rich Media da barra de URL
                                        //           da página do editor de Rich Media no Painel de Controle da Pushwoosh.
      "link": "https://google.com",     // opcional. Para deeplinks, adicione "minimize_link": 0
      "minimize_link": 0,               // opcional. 0 — não minimizar, 2 — bitly. Padrão = 2.
                                        //           Por favor, note que os encurtadores têm restrições
                                        //           no número de chamadas.
      "data": {                         // opcional. string JSON ou objeto JSON, será passado como
        "key": "value"                  //           parâmetro "u" no payload (convertido para string JSON).
      },
      "transactionId": "unique UUID",   // opcional. Identificador de mensagem único para evitar duplicação
                                        //           em caso de problemas de rede. Armazenado no lado
                                        //           da Pushwoosh por 5 minutos. 
      "platforms": [                    // opcional. 1 — iOS; 3 — Android; 7 — Mac OS X; 8 — Windows;
        1, 3, 7, 8, 9, 10,              //           9 — Amazon; 10 — Safari; 11 — Chrome;
        11, 12, 17                      //           12 — Firefox; 17 — Huawei
      ],
      "preset": "XXXXX-XXXXX",          // opcional. Código do Preset de Push do seu Painel de Controle.
                                        //           Se parâmetros específicos forem enviados na solicitação,
                                        //           eles substituem os parâmetros do preset.
      "send_rate": 100,                 // opcional. Limitação. Valores válidos são de 100 a 1000 pushes/segundo.
      "send_rate_avoid": true,          // opcional. Se definido como true, o limite de limitação não será aplicado a
                                        //           esta notificação push específica.
      // Relacionado a templates, por favor, consulte o guia do Mecanismo de Templates para saber mais
      "template_bindings": {            // opcional.
        "TemplatePlaceholder": "Value"
      },
      "dynamic_content_placeholders": { // opcional. Placeholders para conteúdo dinâmico em vez de tags de dispositivo.
        "firstname": "John",
        "lastname": "Doe"
      },
      "message_type": "marketing",       // opcional. "marketing" ou "transactional".
                                         // Se omitido, usuários com PW_ControlGroup: true não receberão a mensagem.

      // Parâmetros de limite de frequência. Certifique-se de que o limite de frequência Global esteja configurado no Painel de Controle.
      // O limite de frequência não se aplica a mensagens transacionais.
      // Em todos os outros casos, incluindo "message_type" omitido, o limite de frequência se aplica.
      "capping_days": 30,               // opcional. Quantidade de dias para o limite de frequência (máx. 30 dias)
      "capping_count": 10,              // opcional. O número máximo de pushes que podem ser enviados de um
                                        //           aplicativo específico para um dispositivo específico dentro de um período de 'capping_days'.
                                        //           Caso a mensagem criada exceda o limite de 'capping_count'
                                        //           para um dispositivo, ela não será enviada para esse dispositivo.
      "capping_exclude": true,          // opcional. Se definido como true, esta notificação push não
                                        //           será contada para o limite de frequência de pushes futuros.
      "capping_avoid": true,            // opcional. Se definido como true, o limite de frequência não será aplicado a
                                        //           esta notificação push específica.
        
      // Para salvar a mensagem na Caixa de Entrada via API, use "inbox_date" ou "inbox_image".
      // A mensagem é salva quando pelo menos um desses parâmetros é usado.
      "inbox_date": "2017-02-02",       // opcional. Especifique quando remover uma mensagem da Caixa de Entrada.
                                        //           A mensagem será removida da Caixa de Entrada às 00:00:01 UTC
                                        //           da data especificada, então o dia anterior é o
                                        //           último dia em que um usuário pode ver a mensagem em sua Caixa de Entrada.
                                        //           Se não especificado, a data de remoção padrão é o
                                        //           dia seguinte à data de envio.
      "inbox_image": "Inbox image URL", // opcional. A imagem a ser mostrada perto da mensagem. 
	  "inbox_days": 5,                  // opcional. Especifique quando remover uma mensagem da
                                        //           Caixa de Entrada (tempo de vida de uma mensagem na caixa de entrada em dias). 
                                        //           Pode ser usado em vez do parâmetro "inbox_date".
                                        //           Até 30 dias.
      
      "devices": [                      // opcional. Especifique tokens ou hwids para enviar pushes direcionados.
          "hwid_XXXX"                   //           Não mais que 1000 tokens/hwids em
      ],                                //           um array. Se definido, a mensagem só será enviada para
                                        //           os dispositivos na lista. Grupo de Aplicativos para lista de dispositivos
                                        //           não é permitido. Tokens de push do iOS só podem estar em minúsculas.
      "to": [                           // opcional. Para e-mail, SMS e canais similares. Lista de destinatários
          "email_1", "email_2"          //           (ex: endereços de e-mail, números de telefone). Máx. 1000 itens.
      ],                                //           Para push, use "devices" em vez disso.
      // Notificações push centradas no usuário
      "users": [                        // opcional. Se definido, a mensagem só será entregue aos
          "user_XXXX"                   //           IDs de usuário especificados (definidos via chamada /registerUser). 
      ],                                //           Se especificado junto com devices ou to,
                                        //           os últimos serão ignorados. Não mais que 1000 IDs de usuário
                                        //           em um array. Grupo de Aplicativos para lista de usuários
                                        //           não é permitido.

      // Filtros e condições
      "filter": "FILTER_NAME",          // opcional.
      "conditions": [                   // opcional. Veja a observação abaixo.
        ["Country", "EQ", "fr"],
        ["Language", "EQ", "en"]
      ],    
      "conditions_operator": "AND"      // opcional. Operador lógico para arrays de condições.
                                        //           Valores possíveis: AND | OR. AND é o padrão.
    }]
  }
}
```

### Exemplo de solicitação de notificação VoIP

A Pushwoosh suporta notificações de chamada no estilo VoIP para iOS e Android. \
Abaixo você pode encontrar exemplos de solicitações API `createMessage` para cada plataforma.

#### iOS

```json title="Exemplo"
{
  "request": {
    "application": "XXXXX-XXXXX",     // obrigatório. Código do aplicativo Pushwoosh.
    "auth": "yxoPUlwqm…………pIyEX4H",   // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh.
    "notifications": [
      {
        "voip_push": true,            // obrigatório. O parâmetro é necessário para enviar uma notificação push VoIP.
        "ios_root_params": {
          "aps": {
            "mutable-content": 1      // obrigatório para anexos de mídia do iOS10+.
          },
          "callerName": "CallerName", // opcional. Nome do chamador. Se não especificado, "chamador desconhecido" é mostrado.
          "video": true,              // opcional. Indica se as chamadas de vídeo são suportadas.
          "supportsHolding": true,    // opcional. Indica se a funcionalidade de chamada em espera é suportada.
          "supportsDTMF": false,      // opcional. Controla o suporte ao sinal de Multifrequência de Tom Duplo.
          "callId": "42",             // opcional. O identificador único da chamada a ser cancelada.
          "cancelCall": true          // opcional. Defina como "true" para cancelar a chamada com o "callId" especificado.
        }
      }
    ]
  }
}
```

#### Android

```json title="Exemplo"
{
  "request": {
    "application": "XXXXX-XXXXX",   // obrigatório. Código do aplicativo Pushwoosh.
    "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh.
    "notifications": [
      {
      "voip_push": true,            // obrigatório. O parâmetro é necessário para enviar uma notificação push VoIP.
      "android_root_params": {
        "callerName": "callerName", // opcional. Nome do chamador. Se não especificado, "chamador desconhecido" é mostrado.
        "video": true,              // opcional. Indica se as chamadas de vídeo são suportadas.
        "callId": 42,               // opcional. O identificador único da chamada a ser cancelada.
        "cancelCall": true          // opcional. Defina como "true" para cancelar a chamada com o "callId" especificado.
        }
      }
    ]
  }
}

```


### Parâmetros específicos da plataforma

#### Parâmetros do iOS

```json title="Exemplo"
{
  "request": {
    "application": "12345-67891",         // obrigatório. Código do aplicativo Pushwoosh
    "auth": "yxoPUlwqm…………pIyEX4H",       // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh
    "notifications": [{
      "ios_title": {                      // opcional. Objeto OU string. Adiciona título específico do iOS para a notificação push.
        "en": "title"
      },
      "ios_subtitle": {                   // opcional. Objeto OU string. Adiciona subtítulo específico do iOS para a notificação push.
        "en": "subtitle"
      },
      "ios_content": {                    // opcional. Objeto OU string. Adiciona conteúdo específico do iOS para a notificação push.
        "en": "content"
      },
      "ios_badges": 5,                    // opcional. Número do emblema do aplicativo iOS.
                                          //           Use "+n" ou "-n" para incrementar/decrementar o valor do emblema em n.
      "ios_sound": "sound file.wav",      // opcional. Nome do arquivo de som no pacote principal do aplicativo.
                                          //           Se deixado em branco, o dispositivo produzirá um som padrão do sistema.
      "ios_sound_off": true,              // opcional. Habilitar/desabilitar o som definido pelo campo "ios_sound".
      "ios_ttl": 3600,                    // opcional. Parâmetro de tempo de vida - tempo de vida máximo da mensagem em segundos.
      "ios_silent": 1,                    // opcional. Habilita notificações silenciosas (ignora "sound" e "content").
      "ios_category_id": "1",             // opcional. ID da categoria do iOS8 da Pushwoosh.
      "ios_root_params": {                // opcional. Parâmetros de nível raiz para o dicionário aps.
        "aps": {
          "content-available": "0",       // opcional. Defina "1" para enviar um push silencioso e "0" para um push regular.
          "mutable-content": 1            // obrigatório para anexos de mídia do iOS10+.
        },
        "callerName": "CallerName",       // opcional parâmetro VoIP. Nome do chamador. Se não especificado, "chamador desconhecido" é mostrado.
        "video": true,                    // opcional parâmetro VoIP. Indica se as chamadas de vídeo são suportadas.
        "supportsHolding": true,          // opcional parâmetro VoIP. Indica se a funcionalidade de chamada em espera é suportada.
        "supportsDTMF": false,            // opcional parâmetro VoIP. Controla o suporte ao sinal de Multifrequência de Tom Duplo.
        "data": {}                        // opcional Dados fornecidos pelo usuário, máx. de 4KB
      },
      "ios_attachment": "URL",            // opcional. Inserir conteúdo de mídia na notificação.
      "ios_thread_id": "some thread id",  // opcional. Identificador para agrupar notificações relacionadas.
                                          //           Mensagens com o mesmo ID de thread serão agrupadas
                                          //           na tela de bloqueio e na Central de Notificações.
      "ios_critical": true,               // opcional. Marca a notificação do iOS como um alerta crítico
                                          //           reproduzindo som mesmo se o dispositivo estiver mudo ou
                                          //           o modo Não Perturbe estiver ativado.
      "ios_category_custom": "category",  // opcional. Categoria APNS personalizada.
      "ios_interruption_level": "active", // opcional. Um de "passive", "active", "time-sensitive",
                                          //           "critical". Indica a importância e
                                          //           o tempo de entrega de uma notificação. Consulte o
                                          //           guia de push único para detalhes.
      "apns_collapse_id": "promo",        // opcional. Identificador de colapso do APNs. Notificações com o mesmo
                                          //           apns_collapse_id substituem umas às outras no dispositivo.
      "apns_trim_content": 1              // opcional. (0|1) Corta as strings de conteúdo excedentes com reticências.
    }]
  }
}
```

#### Parâmetros do Android

```json title="Exemplo"
{
  "request": {
    "application": "12345-67891",            // obrigatório. Código do aplicativo Pushwoosh
    "auth": "yxoPUlwqm…………pIyEX4H",          // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh
    "notifications": [{
      "android_header": {                    // opcional. Cabeçalho da notificação do Android.
        "en": "header"
      },
      "android_content": {                   // opcional. Conteúdo da notificação do Android.
        "en": "content"
      },
      "android_root_params": {               // opcional. Objeto chave-valor personalizado.
        "key": "value",                      //           Parâmetros de nível raiz para os destinatários do payload do Android.
        "CancelID": 12345678,                // opcional. Cancela a notificação push com o
        "voip": true,                        // obrigatório parâmetro VoIP. O parâmetro é necessário para enviar notificações push VoIP.
        "callerName": "callerName",          // opcional parâmetro VoIP. Nome do chamador. Se não especificado, "chamador desconhecido" é mostrado.
        "video": true,                       // opcional parâmetro VoIP. Indica se as chamadas de vídeo são suportadas.
      },                                     //           ID de Mensagem especificado (obtenha o ID do Histórico de Mensagens)
      "android_sound": "soundfile",          // opcional. Sem extensão de arquivo. Se deixado em branco,
                                             //           o dispositivo produzirá um som padrão do sistema.
      "android_sound_off": true,             // opcional. Habilitar/desabilitar o som definido pelo campo "android_sound"
      "android_icon": "icon.png",            // opcional.
      "android_custom_icon": "URL.png",      // opcional. URL completa para o arquivo de imagem.
      "android_banner": "URL.png",           // opcional. URL completa para o arquivo de imagem.
      "android_badges": 5,                   // opcional. Número do emblema do ícone do aplicativo Android.
                                             //           Use "+n" ou "-n" para incrementar/decrementar o valor do emblema em n.
      "android_gcm_ttl": 3600,               // opcional. Parâmetro de tempo de vida — tempo de vida máximo da mensagem em segundos.
      "android_vibration": 0,                // opcional. Vibração forçada do Android para pushes de alta prioridade.
      "android_led": "#rrggbb",              // opcional. Cor hexadecimal do LED, o dispositivo fará sua melhor aproximação.
      "android_priority": -1,                // opcional. Define o parâmetro "importance" para dispositivos com
                                             //           Android 8.0 e superior, bem como o parâmetro "priority"
                                             //           para dispositivos com Android 7.1 e inferior. Estabelece o
                                             //           nível de interrupção de um canal de notificação ou de uma notificação
                                             //           específica. Valores válidos são -2, -1, 0, 1, 2.
      "android_delivery_priority": "normal", // opcional. "normal" ou "high".
                                             //           Habilita a entrega da notificação quando o
                                             //           dispositivo está no modo de economia de energia.
      "android_ibc": "#RRGGBB",              // opcional. cor de fundo do ícone no Lollipop, #RRGGBB,
                                             //           #AARRGGBB, "red", "black", "yellow", etc.
      "android_silent": 1,                   // opcional. 0 ou 1. Habilita notificação silenciosa.
                                             //           Ignora som e conteúdo
      "android_group_id": "123",             // opcional. Identificador para agrupar notificações relacionadas. Mensagens com
                                             //           o mesmo ID de thread serão agrupadas no
                                             //           Centro de Notificações.
      "android_collapse_key": "promo"        // opcional. Chave de colapso do FCM. Notificações com a mesma
                                             //           chave de colapso substituem umas às outras enquanto o dispositivo está offline.
    }]
  }
}
```

**Parâmetros da Huawei**

```json title="Huawei"
{
  "request": {
    "application": "12345-67891",                   // obrigatório. Código do aplicativo Pushwoosh
    "auth": "yxoPUlwqm…………pIyEX4H",                 // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh
    "notifications": [{
      "huawei_android_header": {                    // opcional. Objeto OU string. Título da notificação
        "en": "header"
      },
      "huawei_android_content": {                   // opcional. Objeto OU string. Conteúdo da notificação
        "en": "content"
      },
      "huawei_android_badges": true,                // opcional.
      "huawei_android_silent": 0,                   // opcional. 0 ou 1. Habilita notificação silenciosa.
                                                    //           Ignora som e conteúdo
      "huawei_android_icon": "URL.png",             // opcional.
      "huawei_android_led": "#FF0011",              // opcional. Cor hexadecimal do LED, o dispositivo fará sua melhor aproximação
      "huawei_android_vibration": 1,                // opcional. Vibração forçada da Huawei para pushes de alta prioridade
      "huawei_android_sound": "sound.wav",          // opcional. Se deixado em branco, o dispositivo produzirá
                                                    //           um som padrão do sistema
      "huawei_android_sound_off": true,             // opcional. Habilitar/desabilitar o som definido pelo
                                                    //           campo "huawei_android_sound"
      "huawei_android_custom_icon": "URL.png",      // opcional
      "huawei_android_gcm_ttl": 2400,               // opcional. Parâmetro de tempo de vida - máximo
                                                    //           tempo de vida da mensagem em segundos
      "huawei_android_banner": "URL.png",           // opcional. URL do caminho completo para o arquivo de imagem
      "huawei_android_root_params": {               // opcional. Objeto chave-valor personalizado.
        "key": "value"                              //           Parâmetros de nível raiz para os destinatários do payload da Huawei.
      },
      "huawei_android_priority": 0,                 // opcional. Valores válidos: -2, -1, 0, 1, 2
      "huawei_android_ibc": "#0011AA",              // opcional. Cor de fundo do ícone no Lollipop
      "huawei_android_lockscreen": 1,               // opcional
      "huawei_android_delivery_priority": "normal", // opcional. "normal" ou "high". Habilita a entrega da notificação
                                                    //           no modo de economia de energia
      "huawei_android_group_id": "group_id"         // opcional. Identificador para agrupar notificações relacionadas
    }]
  }
}
```

#### Parâmetros do Safari

```json title="Safari"
{
  "request": {
    "application": "12345-67891",    // obrigatório. Código do aplicativo Pushwoosh
    "auth": "yxoPUlwqm…………pIyEX4H",  // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh
    "notifications": [{
      "safari_url_args": [           // obrigatório, mas o valor pode estar vazio
        "firstArgument",
        "secondArgument"
      ],
      "safari_title": {              // opcional. Objeto OU string. Título da notificação.
        "en": "content"
      },
      "safari_content": {            // opcional. Objeto OU string. Conteúdo da notificação.
        "en": "content"
      },
      "safari_action": "Click here", // opcional.
      "safari_ttl": 3600             // opcional. Parâmetro de tempo de vida — o máximo
                                     //           tempo de vida de uma mensagem em segundos.
    }]
  }
}


```

#### Parâmetros do Chrome

```json title="Chrome"
{
  "request": {
    "application": "12345-67891",          // obrigatório. Código do aplicativo Pushwoosh
    "auth": "yxoPUlwqm…………pIyEX4H",        // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh
    "notifications": [{
      "chrome_title": {                    // opcional. Objeto OU string. Você pode especificar o cabeçalho 
        "en": "title"                      //           da mensagem neste parâmetro.
      },
      "chrome_content": {                  // opcional. Objeto OU string. Você pode especificar o conteúdo 
        "en": "content"                    //           da mensagem neste parâmetro.
      },
      "chrome_icon": "URL.png",            // opcional. URL completa para o ícone ou caminho do arquivo de recursos da extensão
      "chrome_gcm_ttl": 3600,              // opcional. Parâmetro de tempo de vida – tempo de vida máximo da mensagem em segundos.
      "chrome_duration": 20,               // opcional. máx. 50 segundos. Altera o tempo de exibição do push do Chrome.
                                           //           Defina como 0 para exibir o push até que o usuário interaja com ele.
      "chrome_image": "image_URL",         // opcional. URL para imagem grande. 
      "chrome_root_params": {              // opcional. Definir parâmetros específicos para mensagens enviadas ao Chrome.
        "key": "value"
      }, 
      "chrome_button_text1": "text1",      // opcional
      "chrome_button_url1": "button1_URL", // opcional. Ignorado se chrome_button_text1 não estiver definido.
      "chrome_button_text2": "text2",      // opcional
      "chrome_button_url2": "button2_url"  // opcional. Ignorado se chrome_button_text2 não estiver definido. 
    }]
  }
}
```

#### Parâmetros do Firefox

```json title="Firefox"
{
  "request": {
    "application": "12345-67891",   // obrigatório. Código do aplicativo Pushwoosh
    "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh
    "notifications": [{
      "firefox_title": {            // opcional. Objeto OU string. Você pode especificar o cabeçalho da mensagem aqui.
        "en": "title"
      },
      "firefox_content": {          // opcional. Objeto OU string. Você pode especificar o conteúdo da mensagem aqui.
        "en": "content"
      },
      "firefox_icon": "URL.png",    // opcional. URL do caminho completo para o ícone ou caminho para o
                                    //           arquivo nos recursos da extensão.
      "firefox_root_params": {      // opcional. Definir parâmetros específicos para mensagens enviadas ao Firefox.
        "key": "value"
      } 
    }]
  }
}
```

#### Parâmetros da Amazon

```json title="Amazon"
{
  "request": {
    "application": "12345-67891",   // obrigatório. Código do aplicativo Pushwoosh
    "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh
    "notifications": [{
      "adm_header": {               // opcional. Objeto OU string. Você pode especificar o cabeçalho da mensagem aqui.
        "en": "header"
      },
      "adm_content": {              // opcional. Objeto OU string. Você pode especificar o conteúdo da mensagem aqui.
        "en": "content"
      },
      "adm_root_params": {          // opcional. Objeto chave-valor personalizado
        "key": "value"
      },
      "adm_sound": "push.mp3",      // opcional.
      "adm_sound_off": true,        // opcional. Habilitar/desabilitar o som definido pelo campo "adm_sound"
      "adm_icon": "icon.png",       // opcional. URL completa para o ícone.
      "adm_custom_icon": "URL.png", // opcional.
      "adm_banner": "URL.png",      // opcional.
      "adm_ttl": 3600,              // opcional. Parâmetro de tempo de vida — o máximo de tempo de vida da mensagem
                                    //           em segundos.
      "adm_priority": -1            // opcional. Prioridade do push na gaveta de pushes da Amazon,
                                    //           valores válidos são -2, -1, 0, 1 e 2.
    }]
  }
}
```

#### Parâmetros do Mac OS X

```json title="Mac OS X"
{
  "request": {
    "application": "12345-67891",   // obrigatório. Código do aplicativo Pushwoosh
    "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh
    "notifications": [{
      "mac_title": {                // opcional. Objeto OU string. Adiciona Título para a notificação push.
        "en": "title"
      },
      "mac_subtitle": {             // opcional. Adiciona subtítulo para a notificação push.
        "en": "subtitle"
      },
      "mac_content": {              // opcional. Adiciona conteúdo para a notificação push.
        "en": "content"
      },
      "mac_badges": 3,              // opcional.
      "mac_sound": "sound.caf",     // opcional.
      "mac_sound_off": true,        // opcional. Habilitar/desabilitar o som definido pelo campo "mac_sound"
      "mac_root_params": {          // opcional.
        "content-available": 1
      },
      "mac_ttl": 3600               // opcional. Parâmetro de tempo de vida — tempo de vida máximo da mensagem em segundos.
    }]
  }
}
```

#### Parâmetros do Windows

```json title="Windows"
{
  "request": {
    "application": "12345-67891",   // obrigatório. Código do aplicativo Pushwoosh
    "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh
    "notifications": [{
      "wns_content": {              // obrigatório. Conteúdo (XML ou bruto) da notificação codificado em base64 do MIME
                                    //           na forma de Objeto OU String
        "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==",
        "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4="
      },
      "wns_type": "Badge",          // opcional. 'Tile' | 'Toast' | 'Badge' | 'Raw'
      "wns_tag": "myTag",           // opcional. Usado na política de substituição de Tile.
                                    //           Uma string alfanumérica de no máximo 16 caracteres.
      "wns_cache": 1,               // opcional. (1|0) Traduz para o valor X-WNS-Cache-Policy.
      "wns_ttl": 600                // opcional. Tempo de expiração para a notificação em segundos.
    }]
  }
}
```
<Aside>
Início rápido! Confira estas bibliotecas de terceiros!

Biblioteca Python **da Pushwoosh**:
[https://github.com/makcyd/pushwoosh_api](https://github.com/makcyd/pushwoosh_api)

Biblioteca Laravel:
[https://github.com/laravel-notification-channels/pushwoosh](https://github.com/laravel-notification-channels/pushwoosh)

Cliente Node JS
[https://github.com/vizeat/pushwoosh-node](https://github.com/vizeat/pushwoosh-node)

Cliente Meteor JS
[https://github.com/lpender/meteor-pushwoosh](https://github.com/lpender/meteor-pushwoosh)

Biblioteca Rails
[https://github.com/iarie/pwush](https://github.com/iarie/pwush)

Biblioteca Golang
[https://github.com/yyoshiki41/go-pushwoosh](https://github.com/yyoshiki41/go-pushwoosh)
</Aside>

<Aside type="caution">
#### Limitação de /createMessage

Tenha em mente que contas não empresariais não podem enviar mais de 600 solicitações `/createMessage` e/ou [`/createTargetedMessage`](/pt/developer/api-reference/messages-api/#createtargetedmessage) por minuto.

No entanto, se você enviar pushes através do parâmetro **devices** para **10 dispositivos ou menos**, não há restrições para nenhum tipo de conta, desde que o rastreamento de mensagens da API esteja desativado.

Note que **sempre salvamos pushes agendados** no Histórico de Mensagens, mesmo que você os esteja enviando para menos de 10 dispositivos através do parâmetro devices. Portanto, tais pushes também são limitados.
</Aside>

**Resposta**:

| Código de status HTTP | status_code | Descrição                                       |
| ---------------- | ------------ | ------------------------------------------------- |
| 200              | 200          | Mensagem criada com sucesso                      |
| 200              | 210          | Erro de argumento. Veja status_message para mais informações |
| 400              | N/A          | String de solicitação malformada                          |
| 500              | 500          | Erro interno                                    |

<Aside type="note">
Um erro em um array de notificações

Se a solicitação `createMessage` tiver várias mensagens no array `notifications`, elas serão processadas e enviadas uma a uma. Se uma das mensagens não puder ser analisada, nossa API retornará `"status_code":210` com os códigos das mensagens enviadas com sucesso, ou seja, aquelas que precedem a mensagem com falha na solicitação.
</Aside>

### Rastreamento de mensagens da API

Para fins de balanceamento de carga, _não armazenamos mensagens enviadas através da API com o parâmetro “devices” que contém menos de 10 dispositivos em um array_. Devido a isso, tais mensagens não serão exibidas em seu Histórico de Mensagens.

Para ver relatórios de push durante a fase de teste, use o **rastreamento de mensagens da API**. Ativar esta opção **ON** permite que você _substitua este limite por 1 hora e salve tais pushes no Histórico de Mensagens_. O rastreamento de mensagens da API desliga-se automaticamente após 1 hora.

O rastreamento de mensagens da API pode ser ativado na página [Histórico de Mensagens](/pt/product/statistics-and-analytics/message-history/) clicando em **Iniciar rastreamento de mensagens da API** no canto superior direito.

### Condições de Tag

Cada condição de tag é um array como `[tagName, operator, operand]` onde

* tagName: nome de uma tag
* operator: "EQ" | "IN" | "NOTEQ" | "NOTIN" | "LTE" | "GTE" | "BETWEEN" | "NOTSET" | "ANY"
* operand: string | integer | array | date

#### Descrição do operador

* EQ: o valor da tag é igual ao operando;
* IN: o valor da tag se cruza com o operando (o operando deve ser sempre um array);
* NOTEQ: o valor da tag não é igual a um operando;
* NOTIN: o valor da tag não se cruza com o operando (o operando deve ser sempre um array);
* GTE: o valor da tag é maior ou igual ao operando;
* LTE: o valor da tag é menor ou igual ao operando;
* BETWEEN: o valor da tag é maior ou igual ao valor mínimo do operando, mas menor ou igual ao valor máximo do operando (o operando deve ser sempre um array);
* NOTSET: tag não definida. O operando não é considerado;
* ANY: a tag tem qualquer valor. O operando não é considerado.

#### Tags de string

Operadores válidos: EQ, IN, NOTEQ, NOTIN, NOTSET, ANY\
Operandos válidos:

* EQ, NOTEQ: o operando deve ser uma string;
* IN, NOTIN: o operando deve ser um array de strings como `["valor 1", "valor 2", "valor N"]`;
* NOTSET: tag não definida. O operando não é considerado;
* ANY: a tag tem qualquer valor. O operando não é considerado.

#### Tags de inteiro

Operadores válidos: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY\
Operandos válidos:

* EQ, NOTEQ, GTE, LTE: o operando deve ser um inteiro;
* IN, NOTIN: o operando deve ser um array de inteiros como `[valor 1, valor 2, valor N]`;
* BETWEEN: o operando deve ser um array de inteiros como `[valor_min, valor_max]`;
* NOTSET: tag não definida. O operando não é considerado;
* ANY: a tag tem qualquer valor. O operando não é considerado.

#### Tags de data

Operadores válidos: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY\
Operandos válidos:

* `"YYYY-MM-DD 00:00"` (string)
* timestamp unix `1234567890` (inteiro)
* `"N days ago"` (string) para os operadores EQ, BETWEEN, GTE, LTE

#### Tags booleanas

Operadores válidos: EQ, NOTSET, ANY\
Operandos válidos: `0, 1, true, false`

#### Tags de lista

Operadores válidos: IN, NOTIN, NOTSET, ANY\
Operandos válidos: o operando deve ser um array de strings como `["valor 1", "valor 2", "valor N"]`.

<Aside type="danger">
Lembre-se que os parâmetros “filter” e “conditions” não devem ser usados juntos.\
Além disso, ambos **serão ignorados**, se o parâmetro "devices" for usado na mesma solicitação.
</Aside>

<Aside type="note">
#### Tags de País e Idioma

O valor da tag de idioma é um código de duas letras minúsculas de acordo com [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)\
O valor da tag de país é um código de duas letras MAIÚSCULAS de acordo com [ISO_3166-2](https://en.wikipedia.org/wiki/ISO_3166-2)\
Por exemplo, para enviar uma notificação push para assinantes de língua portuguesa no Brasil, você precisará especificar a seguinte condição: `"conditions": [["Country", "EQ", "BR"],["Language", "EQ", "pt"]]`
</Aside>

### Snippets de /createMessage

<Aside type="caution" title="Importante">
Por favor, tenha cuidado ao usar os snippets. Limite o número de destinatários especificando o parâmetro "users", "devices", "filter" ou "conditions". Se nenhum desses parâmetros for especificado, a mensagem será enviada **para todos os dispositivos** inscritos para notificações push do aplicativo.
</Aside>

Exemplos de solicitações `/createMessage`:

<Tabs>
<TabItem label="Bash">
```bash
#!/bin/bash
 
#Usage
if [ ! -n "$1" ] || [ ! -n "$2" ]
then
  echo "`basename $0` usage: api_token appid message";
  exit 1;
fi;
MESSAGE="$3";
if [ -z "$3" ]
then
MESSAGE='One push to rule them all!'
fi;
 
echo -e "Response:"
curl --data-binary "
{\"request\":
    {\"application\":\"$2\",
     \"auth\":\"$1\",
     \"notifications\":
        [{
                        \"send_date\": \"now\",
            \"content\": \"$MESSAGE\"
        }]
    }
}" \
-H "Content-type: application/json" \
"https://api.pushwoosh.com/json/1.3/createMessage"
echo "";
exit 0;
```
</TabItem>

<TabItem label="PHP">
```php
<?php 
define('PW_AUTH', 'API TOKEN');
define('PW_APPLICATION', 'APPLICATION CODE');
define('PW_DEBUG', true);
 
function pwCall($method, $data) {
    $url = 'https://api.pushwoosh.com/json/1.3/' . $method;
    $request = json_encode(['request' => $data]);
 
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
 
    $response = curl_exec($ch);
    $info = curl_getinfo($ch);
    curl_close($ch);
 
    if (defined('PW_DEBUG') && PW_DEBUG) {
        print "[PW] request: $request
";
        print "[PW] response: $response
";
        print '[PW] info: ' . print_r($info, true);
    }
}
 
pwCall('createMessage', array(
    'application' => PW_APPLICATION,
    'auth' => PW_AUTH,
    'notifications' => array(
            array(
                'send_date' => 'now',
                'content' => 'test',
                'data' => array('custom' => 'json data'),
                'link' => 'https://pushwoosh.com/'
            )
        )
    )
);
```
</TabItem>

<TabItem label="Erlang">
```erlang
-module(pushwoosh).
-export([run/0, stop/0, sendMessage/1]).
%% sendMessage argument: message text %%
 
%% Authentication & App_id %%
-define(PW_AUTH, "YOUR_AUTH_TOKEN").
-define(PW_APPLICATION, "YOUR_PUSHWOOSH_APP_CODE").
 
%% KickStart %%
run() ->
    application:start(unicode),
    application:start(crypto),
    application:start(public_key),
    application:start(ssl),
    application:start(inets),
    %% HTTP Client verbosity options flase, verbose, debug
    httpc:set_options([{verbose, false}]).  
stop() ->
    application:stop(ssl),
    application:stop(public_key),       
    application:stop(crypto),
    application:stop(inets).
%% JSON Wars !
encode(S) -> encode(S, [$"]).
encode([], Acc) -> lists:reverse([$" | Acc]);
encode([C | Cs], Acc) ->
        Hex = lists:flatten(io_lib:format("~4.16.0b", [C])),
        encode(Cs, lists:reverse(Hex) ++ "u\" ++ Acc).
 
sendMessage(Message_text) ->
    %% URL to JSON API 1.3
    Url = "https://api.pushwoosh.com/json/1.3/createMessage",
    EncodedMessage = encode(Message_text),
    {ok, Response} = httpc:request(
        %%Method 
        post, 
        %%Request
        {Url, [{"User-Agent", "Erlang exemple"}], "application/json; charset=UTF-8", 
        "{\"request\":{
        \"application\": \""?PW_APPLICATION"\",
        \"auth\": \""?PW_AUTH"\",
        \"notifications\": [{
        \"send_date\": \"now\",
        \"content\": "++EncodedMessage++"
        }]}}"},
        %%HTTP options
        [{ssl,[{verify, verify_none}]}, {version, "HTTP/1.0"}],
        %%Options
        []),
    io:format("And received ~p", [Response]).
```
</TabItem>

<TabItem label="Ruby">
```ruby
class PushNotification
 
  #- PushWoosh API Documentation https://www.pushwoosh.com/programming-push-notification/pushwoosh-push-notification-remote-api/ 
  #- Two methods here:
  #     - PushNotification.new.notify_all(message) Notifies all with the same option
  #     - PushNotification.new.notify_devices(notification_options = {}) Notifies specific devices with custom options
 
  include HTTParty #Make sure to have the HTTParty gem declared in your gemfile https://github.com/jnunemaker/httparty
  default_params :output => 'json'
  format :json
 
  def initialize
    #- Change to your settings
    @auth = {:application  => "00000-00000",:auth => "auth_token"}
  end
 
  # PushNotification.new.notify_all("This is a test notification to all devices")
  def notify_all(message)
    notify_devices({:content  => message})
  end
 
  # PushNotification.new.notify_device({
  #  :content  => "TEST",
  #  :data  => {:custom_data  => value},
  #  :devices  => array_of_tokens
  #})
  def notify_devices(notification_options = {})
    #- Default options, uncomment :data or :devices if needed
    default_notification_options = {
                        # YYYY-MM-DD HH:mm  OR 'now'
                        :send_date  => "now",
                        # Object( language1: 'content1', language2: 'content2' ) OR string
                        :content  => {
                            :fr  => "Test",
                            :en  => "Test"
                        },
                        # JSON string or JSON object "custom": "json data"
                        #:data  => {
                        #    :custom_data  => value
                        #},
                        # omit this field (push notification will be delivered to all the devices for the application), or provide the list of devices IDs
                        #:devices  => {}
                      }
 
    #- Merging with specific options
    final_notification_options = default_notification_options.merge(notification_options)
 
    #- Constructing the final call
    options = @auth.merge({:notifications  => [final_notification_options]})
    options = {:request  => options}                                                                                                                             
    #- Executing the POST API Call with HTTPARTY - :body => options.to_json allows us to send the json as an object instead of a string
    response = self.class.post("https://api.pushwoosh.com/json/1.3/createMessage", :body  => options.to_json,:headers => { 'Content-Type' => 'application/json' })
  end
end
```
</TabItem>

<TabItem label="Java">
```java
// Uses JSON classes from https://json.org/java/

package com.arellomobile;
 
import org.json.*;
import java.io.*;
import java.net.*;
 
public class SendPushNotificationSample
{
    public static final String PUSHWOOSH_SERVICE_BASE_URL = "https://api.pushwoosh.com/json/1.3/";
    private static final String AUTH_TOKEN = "YOUR_AUTH_TOKEN";
    private static final String APPLICATION_CODE = "PW_APPLICATION_CODE";
 
    public static void main(String[] args) throws JSONException, MalformedURLException
    {
        String method = "createMessage";
        URL url = new URL(PUSHWOOSH_SERVICE_BASE_URL + method);
 
        JSONArray notificationsArray = new JSONArray()
                .put(new JSONObject().put("send_date", "now")
                                     .put("content", "test")
                                     .put("link", "https://pushwoosh.com/"));
 
        JSONObject requestObject = new JSONObject()
                .put("application", APPLICATION_CODE)
                .put("auth", AUTH_TOKEN)
                .put("notifications", notificationsArray);
 
        JSONObject mainRequest = new JSONObject().put("request", requestObject);
        JSONObject response = SendServerRequest.sendJSONRequest(url, mainRequest.toString());
 
        System.out.println("Response is: " + response);
    }
}
 
class SendServerRequest
{
    static JSONObject sendJSONRequest(URL url, String request)
    {
        HttpURLConnection connection = null;
        try
        {
            connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Content-Type", "application/json");
            connection.setDoInput(true);
            connection.setDoOutput(true);
 
            DataOutputStream writer = new DataOutputStream(connection.getOutputStream());
            writer.write(request.getBytes("UTF-8"));
            writer.flush();
            writer.close();
 
            return parseResponse(connection);
        }
        catch (Exception e)
        {
            System.out.println("An error occurred: " + e.getMessage());
            return null;
        }
        finally
        {
            if (connection != null)
            {
                connection.disconnect();
            }
        }
    }
 
    static JSONObject parseResponse(HttpURLConnection connection) throws IOException, JSONException
    {
        String line;
        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        StringBuilder response = new StringBuilder();
 
        while ((line = reader.readLine()) != null)
        {
            response.append(line).append('
');
        }
        reader.close();
 
        return new JSONObject(response.toString());
    }
}
```
</TabItem>

<TabItem label="Python">
```python
import json
 
PW_AUTH = 'API TOKEN'
PW_APPLICATION_CODE = 'APPLICATION CODE'
 
try:
    # For Python 3.0 and later
    from urllib.request import urlopen
    from urllib.request import Request
except ImportError:
    # Fall back to Python 2's urllib2
    from urllib2 import urlopen
    from urllib2 import Request
 
def pw_call(method, data):
    url = 'https://api.pushwoosh.com/json/1.3/' + method
    data = json.dumps({'request': data})
    req = Request(url, data.encode('UTF-8'), {'Content-Type': 'application/json'})
    try:
        f = urlopen(req)
        response = f.read()
        f.close()
        print('Pushwoosh response: ' + str(response))
    except Exception as e:
        print ('Request error: ' + str(e))
 
if __name__ == '__main__':
    pw_call('createMessage', {
        'auth': PW_AUTH,
        'application': PW_APPLICATION_CODE,
        'notifications': [
            {
                'send_date': 'now',
                'content': 'test',
                'data': {"custom": "json data"},
                'link': 'https://pushwoosh.com'
            }
        ]
    }
    )
```
</TabItem>

<TabItem label=".NET">
```
using System;
using System.IO;
using System.Net;
using Newtonsoft.Json.Linq;

namespace WebApplication1
{
   public partial class Default : System.Web.UI.Page
   {
       protected void Page_Load(object sender, EventArgs e)
       {
           string pwAuth = "YOUR_AUTH_TOKEN";
           string pwApplication = "PW_APPLICATION_CODE";
           JObject json = new JObject(
               new JProperty("application", pwApplication),
               new JProperty("auth", pwAuth),
               new JProperty("notifications",
                   new JArray(
                       new JObject(
                           new JProperty("send_date", "now"),
                           new JProperty("content", "test"),
                           new JProperty("wp_type", "Toast"),
                           new JProperty("wp_count", 3),
                           new JProperty("data",
                               new JObject(
                                   new JProperty("custom", "json data"))),
                           new JProperty("link", "https://pushwoosh.com/"),
                           new JProperty("conditions",
                               new JArray(
                                   (object)new JArray("Color", "EQ", "black")))))));
           PWCall("createMessage", json);
       }
       private void PWCall(string action, JObject data)
       {
           Uri url = new Uri("https://api.pushwoosh.com/json/1.3/" + action);
           JObject json = new JObject(new JProperty("request", data));
           DoPostRequest(url, json);
       }
       private void DoPostRequest(Uri url, JObject data)
       {
           HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
           req.ContentType = "text/json";
           req.Method = "POST";
           using (var streamWriter = new StreamWriter(req.GetRequestStream()))
           {
               streamWriter.Write(data.ToString());
           }
           HttpWebResponse httpResponse;
           try
           {
               httpResponse = (HttpWebResponse)req.GetResponse();
           }
           catch (Exception exc)
           {
               throw new Exception(string.Format("Problem with {0}, {1}", url, exc.Message));
           }
           using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
           {
               var responseText = streamReader.ReadToEnd();
               Page.Response.Write(responseText);
           }
       }
   }
}
```
</TabItem>

<TabItem label="Go">
```go
package main

import
(
	"fmt"
	"encoding/json"
	"net/http"
	"bytes"
	"io/ioutil"
)

const (
	PW_APPLICATION = "APPLICATION CODE"
	PW_AUTH = "API TOKEN"
	PW_ENDPOINT = "https://api.pushwoosh.com/json/1.3/"
)

func pwCall(method string, data []byte) (bool) {
	url := PW_ENDPOINT + method
	request, err := http.NewRequest("POST", url, bytes.NewBuffer(data))
	request.Header.Set("Content-Type", "application/json")

	client := http.Client{}
	response, err := client.Do(request)
	if err != nil {
		fmt.Println("Error occur: " + err.Error())
		return false
	}
	defer response.Body.Close()

	fmt.Println("Response Status: ", response.Status)
	if (response.StatusCode == 200) {
		body, _ := ioutil.ReadAll(response.Body)
		fmt.Println("Response Body: ", string(body))
		return true
	}
	return false
}

func main() {
	requestData := map[string]interface{}{
		"request": map[string]interface{} {
			"auth": PW_AUTH,
			"application": PW_APPLICATION,
			"notifications": []interface{}{
				map[string]interface{} {
					"send_date": "now",
					"content": "test",
					"link": "https://pushwoosh.com",
				},
			},
		},
	}
	jsonRequest, _ := json.Marshal(requestData)
	requestString := string(jsonRequest)
	fmt.Println("Request body: " + requestString)

	pwCall("createMessage", jsonRequest)
}
```
</TabItem>

<TabItem label="JavaScript">
```javascript
$.ajax({
    type: "POST",
    url: "https://api.pushwoosh.com/json/1.3/createMessage",
    data: JSON.stringify({
        "request": {
            "application": "APPLICATION CODE",
            "auth": "API TOKEN",
            "notifications": [{
                "send_date": "now",
                "ignore_user_timezone": true,
                "content": "Hello world!"
            }]
        }
    }),
    dataType: "json"
}).done(function(data) {
    console.log(data);
});
```
</TabItem>
</Tabs>

## deleteMessage

`POST` `https://api.pushwoosh.com/json/1.3/deleteMessage`

Exclui uma mensagem agendada.

#### Corpo da Solicitação

| Nome                                      | Tipo   | Descrição                                      |
| ----------------------------------------- | ------ | ------------------------------------------------ |
| auth*    | string | [Token de acesso à API](/pt/developer/api-reference/api-identifiers/#api-access-token) do Painel de Controle da Pushwoosh.   |
| message* | string | [Código da mensagem](/pt/developer/api-reference/api-identifiers/#message-code) obtido na solicitação `/createMessage`. |

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200,
  "status_message": "OK"
}
```
</TabItem>
</Tabs>

```json title="Exemplo"
{
  "request":{
    "auth": "yxoPUlwqm…………pIyEX4H",  // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh
    "message": "xxxx-xxxxxxx-xxxxxx" // obrigatório. Código da mensagem obtido em /createMessage
  }
}
```

<Aside type="danger">
Você não pode excluir mensagens que já foram enviadas.
</Aside>

**Códigos de status:**

| Código de status HTTP | status_code | Descrição                                         |
| ---------------- | ------------ | --------------------------------------------------- |
| 200              | 200          | Mensagem excluída com sucesso                        |
| 200              | 210          | Erro de argumento. Veja status_message para mais informações |
| 400              | N/A          | String de solicitação malformada                            |
| 500              | 500          | Erro interno                                      |

```php
<?php
// see https://gomoob.github.io/php-pushwoosh/delete-message.html
use Gomoob\Pushwoosh\Model\Request\DeleteMessageRequest;

// creates request instance
$request = DeleteMessageRequest::create()->setMessage('MESSAGE_CODE');

// call '/deleteMessage' Web Service
$response = $pushwoosh->deleteMessage($request);

if($response->isOk()) {
    print 'Great, my message has been deleted !';
} else {
    print 'Oups, the deletion failed :-('; 
    print 'Status code : ' . $response->getStatusCode();
    print 'Status message : ' . $response->getStatusMessage();
}
```

## getMessageDetails

`POST` `https://api.pushwoosh.com/json/1.3/getMessageDetails`

Recupera os detalhes da mensagem.

#### Corpo da Solicitação

| Nome                                      | Tipo   | Descrição                                    |
| ----------------------------------------- | ------ | ---------------------------------------------- |
| auth*    | string | [Token de acesso à API](/pt/developer/api-reference/api-identifiers/#api-access-token) do Painel de Controle da Pushwoosh. |
| message* | string | [Código da mensagem](/pt/developer/api-reference/api-identifiers/#message-code) ou ID da mensagem.                    |

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "message": {
      "id": 2068991743,
      "created": "2016-09-14 17:19:42",
      "send_date": "2016-09-14 17:19:41",
      "status": "done",
      "content": {
        "en": "Hello {Name|CapitalizeFirst|friend}! 🚀"
      },
      "platforms": "[1]",
      "ignore_user_timezone": "1",
      "code": "XXXX-92B4C3C5-A7F5EF70",
      "data": {
        "key": "value"
      }
    }
  }
}
```
</TabItem>
</Tabs>

```json title="Exemplo"
{
  "request":{
    "auth": "yxoPUlwqm…………pIyEX4H",  // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh
    "message": "xxxx-xxxxxxx-xxxxxx" // obrigatório. código da mensagem ou ID da mensagem
  }
}
```

## createTargetedMessage <Badge text="Obsoleto" variant="caution" size="small" />

`POST` `https://api.pushwoosh.com/json/1.3/createTargetedMessage`

Cria uma nova notificação push direcionada.

#### Corpo da Solicitação

| Nome                                              | Tipo    | Descrição                                                                                                                            |
| ------------------------------------------------- | ------- |----------------------------------------------------------------------------------------------------------------------------------------|
| auth*            | string  | [Token de acesso à API](/pt/developer/api-reference/api-identifiers/#api-access-token) do Painel de Controle da Pushwoosh.                                                                                         |
| devices_filter* | string  | Veja a observação abaixo.                                                                                                                      |
| send_date*      | string  | YYYY-MM-DD HH:mm ou 'now'.                                                                                                             |
| ignore_user_timezone                            | boolean | Se ignorado, UTC-0 é o padrão para "send_date".                                                                                         |
| timezone                                          | string  | Se ignorado, UTC-0 é o padrão para "send_date".                                                                                         |
| campaign                                          | string  | [Código de uma campanha](/pt/developer/api-reference/api-identifiers/#campaign-code) à qual você deseja atribuir esta mensagem push.                                                                      |
| content*         | string  | Conteúdo da notificação. Veja o exemplo de solicitação para detalhes.                                                                             |
| transactionId                                     | string  | Identificador de mensagem único para evitar a duplicação de mensagens em caso de problemas de rede. Armazenado no lado da Pushwoosh por 5 minutos. |
| link                                              | string  | Link a ser aberto quando um usuário abre uma mensagem push.                                                                                    |
| minimize_link                                    | integer | 0 - não minimizar, 2 - bit.ly. Padrão = 2.                                                                                          |
| data                                              | object  | String JSON ou objeto JSON. Será passado como parâmetro "u" no payload (convertido para string JSON).                                 |
| preset                                            | string  | [Código do preset](/pt/developer/api-reference/api-identifiers/#preset-code).                                                                                                                           |
| send_rate                                        | integer | Limitação. Valores válidos são de 100 a 1000 pushes por segundo.                                                                       |
| inbox_date                                       | string  | Especifique quando remover uma mensagem da Caixa de Entrada.                                                                                       |
| inbox_image                                      | string  | URL da imagem a ser mostrada perto da mensagem na Caixa de Entrada.                                                                            |

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "messageCode": "97B0-C7473871-2FBDFDC6"
  }
}
```
</TabItem>

<TabItem label="400 Erros de sintaxe JSON">
```
The request cannot be fulfilled due to bad syntax.
```
</TabItem>
</Tabs>

Mais exemplos de resposta:

<Tabs>
<TabItem label="210 - sintaxe">
```json
{
  "status_code": 210,
  "status_message": "Errors occurred while compiling filter",
  "response": {
    "errors": [{
      "message": "Invalid tag set specification. \")\" expected.",
      "type": "syntax"
    }]
  }
}
```
</TabItem>

<TabItem label="210 - semântico">
```json
{
  "status_code": 210,
  "status_message": "Errors occurred while compiling filter",
  "response": {
    "errors": [{
      "message": "Application \"11111-11111\" not found",
      "type": "semantic",
      "near": "\"11111-11111\""
    }]
  }
}

```
</TabItem>

<TabItem label="210 - lexical">
```json
{
  "status_code": 210,
  "status_message": "Errors occurred while compiling filter",
  "response": {
    "errors": [{
      "message": "Invalid character \"/\" at 1:19",
      "type": "lexical"
    }]
  }
}
```
</TabItem>
</Tabs>

<Aside type="danger" title="Modo difícil">
Você deveria usar [`/createMessage`](#createmessage) em vez disso?
</Aside>


<Tabs>
<TabItem label="Exemplo">
```json title="Exemplo"
{
  "request": {
    "auth": "yxoPUlwqm…………pIyEX4H",    // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh
    "devices_filter": "A(\"XXXXX-XXXXX\") * T(\"City\", EQ, \"Name\")", // obrigatório. Sintaxe explicada abaixo
    "send_date": "now",                // opcional. YYYY-MM-DD HH:mm OU 'now'
    "ignore_user_timezone": true,      // opcional.
    "timezone": "America/New_York",    // opcional. Se ignorado, UTC-0 é o padrão para "send_date".
                                       //           Mais informações em https://php.net/manual/timezones.php.
    "campaign": "CAMPAIGN_CODE",       // opcional. Código da campanha à qual você deseja atribuir esta mensagem push.
    "content": {                       // opcional. Objeto OU string. Use "wns_content" em vez disso para Windows.
      "en": "English",
      "de": "Deutsch"
    },
    "transactionId": "unique UUID",    // opcional. Identificador de mensagem único para evitar a duplicação de mensagens
                                       //           em caso de problemas de rede. Armazenado no lado da
                                       //           Pushwoosh por 5 minutos.
    "rich_media": "XXXXX-XXXXX",       // opcional. Copie o código de Rich Media da barra de URL da
                                       //           página do editor de Rich Media no Painel de Controle da Pushwoosh. 
    "link": "https://google.com",      // opcional. Para deeplinks, adicione "minimize_link": 0
    "minimize_link": 0,                // opcional. 0 — não minimizar, 2 — bitly. Padrão = 2.
                                       //           O encurtador de URL do Google está desativado desde 30 de março de 2019.
                                       //           Por favor, note que os encurtadores têm restrições
                                       //           no número de chamadas.
    "data": {                          // opcional. String JSON ou objeto JSON.
      "key": "value"                   //           Será passado como parâmetro "u" no payload
    },                                 //           (convertido para string JSON).
    "preset": "XXXXX-XXXXX",           // opcional. Código do Preset de Push do seu Painel de Controle.
    "send_rate": 100,                  // opcional. Limitação. Valores válidos são de 100 a 1000 pushes/segundo.
    "dynamic_content_placeholders": {  // opcional. Placeholders para conteúdo dinâmico em vez de tags de dispositivo.
      "firstname": "John",
      "lastname": "Doe"
    },

    // Para salvar a mensagem na Caixa de Entrada via API, use "inbox_date" ou "inbox_image".
    // A mensagem é salva quando pelo menos um desses parâmetros é usado. 
    "inbox_image": "Inbox image URL",  // opcional. A imagem a ser mostrada perto da mensagem.
    "inbox_date": "2017-02-02"         // opcional. Especifique quando remover uma mensagem da Caixa de Entrada.
                                       //           A mensagem será removida da Caixa de Entrada às 00:00:01 UTC da
                                       //           data especificada, então o dia anterior é o último
                                       //           dia em que um usuário pode ver a mensagem em sua Caixa de Entrada.
                                       //           Se não especificado, a data de remoção padrão é o dia seguinte
                                       //           após a data de envio.
  }
}
```
</TabItem>

<TabItem label="Parâmetros específicos da plataforma">
```json title="Parâmetros específicos da plataforma"
{
  "request": {
    "auth": "yxoPUlwqm…………pIyEX4H",        // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh
    "devices_filter": "FILTER CONDITION",
    "send_date": "now",                    // opcional. YYYY-MM-DD HH:mm OU 'now'
    "content": {                           // opcional. Objeto OU string.
      "en": "English",                     //           Use "wns_content" em vez disso para Windows.
      "de": "Deutsch"
    },
    "ignore_user_timezone": true,          // opcional.
    "timezone": "America/New_York",        // opcional. Se ignorado, UTC-0 é o padrão para "send_date".
                                           //           Mais informações em https://php.net/manual/timezones.php.
    "campaign": "CAMPAIGN_CODE",           // opcional. Código da campanha à qual você deseja atribuir esta mensagem push.
    
    // Parâmetros relacionados ao iOS
    "ios_badges": 5,                       // opcional. Número do emblema do aplicativo iOS.
                                           //           Use "+n" ou "-n" para incrementar/decrementar o valor do emblema em n.
    "ios_sound": "sound file.wav",         // opcional. Nome do arquivo de som no pacote principal do aplicativo.
                                           //           Se deixado em branco, o dispositivo não produzirá som
                                           //           ao receber um push.
    "ios_sound_off": true,                 // opcional. Habilitar/desabilitar o som definido pelo campo "ios_sound".
    "ios_ttl": 3600,                       // opcional. Parâmetro de tempo de vida — tempo de vida máximo da mensagem em segundos.
    "ios_silent": 1,                       // opcional. Habilita notificações silenciosas (ignora "sound" e "content").
    "ios_category_id": "1",                // opcional. ID da categoria do iOS8 da Pushwoosh.
    "ios_category_custom": "category",     // opcional. Categoria APNS personalizada.
    "ios_root_params": {                   // opcional. Parâmetros de nível raiz para o dicionário aps.
      "aps": {
        "content-available": "0",          // opcional. Defina "1" para enviar um push silencioso e "0" para um push regular.
        "mutable-content": 1               // obrigatório para anexos de mídia do iOS10+.
      },
      "attachment": "YOUR_ATTACHMENT_URL", // URL do anexo de mídia do iOS10+.
      "data": {}                           // opcional. Dados fornecidos pelo usuário, máx. de 4KB
    },
    "apns_trim_content": 1,                // opcional. (0|1) Corta as strings de conteúdo excedentes com reticências.
    "ios_title": {                         // opcional. Adiciona título para a notificação push do iOS.
      "en": "title"
    },
    "ios_subtitle": {                      // opcional. Adiciona subtítulo para a notificação push do iOS.
      "en": "subTitle"
    },
    "ios_content": {                       // opcional. Adiciona conteúdo para a notificação push do iOS.
      "en": "content"
    },
    
    // Parâmetros relacionados ao Android
    "android_root_params": {               // opcional. Objeto chave-valor personalizado.
      "key": "value"                       //           Parâmetros de nível raiz para os destinatários do payload do Android.
    },
    "android_sound": "soundfile",          // opcional. Sem extensão de arquivo. Se deixado em branco, o dispositivo
                                           //           não produzirá som ao receber um push.
    "android_sound_off": true,             // opcional. Habilitar/desabilitar o som definido pelo campo "android_sound"
    "android_header": {                    // opcional. Objeto OU string. Cabeçalho da notificação do Android.
      "en": "header" 
    },
    "android_content": {                   // opcional. Objeto OU string. Conteúdo da notificação do Android.
      "en": "content"
    },
    "android_icon": "icon.png",  
    "android_custom_icon": "URL.png",      // opcional. URL do caminho completo para o arquivo de imagem.
    "android_banner": "URL.png",           // opcional. URL do caminho completo para o arquivo de imagem.
    "android_badges": 5,                   // opcional. inteiro. Número do emblema do ícone do aplicativo Android.
                                           //           Use "+n" ou "-n" para incrementar/decrementar o valor do emblema em n.
    "android_gcm_ttl": 3600,               // opcional. Parâmetro de tempo de vida — tempo de vida máximo da mensagem em segundos.
    "android_vibration": 0,                // opcional. Vibração forçada do Android para pushes de alta prioridade.
    "android_led": "#rrggbb",              // opcional. Cor hexadecimal do LED, o dispositivo fará sua melhor aproximação.
    "android_priority": -1,                // opcional. Define o parâmetro "importance" para dispositivos com Android 8.0
                                           //           e superior, bem como o parâmetro "priority" para dispositivos
                                           //           com Android 7.1 e inferior. Estabelece o nível de interrupção
                                           //           de um canal de notificação ou de uma notificação específica.
                                           //           Valores válidos são -2, -1, 0, 1, 2.
    "android_delivery_priority": "normal", // opcional. "normal" ou "high". Habilita a entrega da notificação
                                           //           quando o dispositivo está no modo de economia de energia. 
    "android_ibc": "#RRGGBB",              // opcional. cor de fundo do ícone no Lollipop, #RRGGBB,
                                           //           #AARRGGBB, "red", "black", "yellow", etc.
    "android_silent": 1,                   // opcional. 0 ou 1. Habilita notificação silenciosa.
                                           //           Ignora som e conteúdo
    
    // Parâmetros relacionados à Amazon
    "adm_root_params": {                   // opcional. Objeto chave-valor personalizado
      "key": "value"
    },
    "adm_sound": "push.mp3",
    "adm_sound_off": true,                 // opcional. Habilitar/desabilitar o som definido pelo campo "adm_sound"
    "adm_header": {
      "en": "Header"
    },
    "adm_content": {
      "en": "content"
    },
    "adm_icon": "icon.png",
    "adm_custom_icon": "URL.png",
    "adm_banner": "URL.png",
    "adm_ttl": 3600,                       // opcional. Parâmetro de tempo de vida — o tempo de vida máximo da mensagem
                                           //           em segundos.
    "adm_priority": -1,                    // opcional. Prioridade do push na gaveta de pushes da Amazon,
                                           //           valores válidos são -2, -1, 0, 1 e 2.
    
    // Parâmetros relacionados ao Mac OS X
    "mac_badges": 3,
    "mac_sound": "sound.caf",
    "mac_sound_off": true,
    "mac_root_params": {
      "content-available": 1
    },
    "mac_ttl": 3600,                       // opcional. Parâmetro de tempo de vida — tempo de vida máximo da mensagem em segundos.
    "mac_title": {                         // opcional. Adiciona Título para a notificação push.
      "en": "title"
    },
    "mac_subtitle": {                      // opcional. Adiciona subtítulo para a notificação push do MacOS.
      "en": "subtitle"
    },
    "mac_content": {                       // opcional. Adiciona conteúdo para a notificação push do MacOS.
      "en": "content"
    },
    
    // Parâmetros relacionados ao Windows
    "wns_content": {                       // obrigatório. Conteúdo (XML ou bruto) da notificação codificado
                                           //           em base64 do MIME na forma de Objeto OU String
      "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==",
      "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4="
    },
    "wns_type": "Badge",                   // 'Tile' | 'Toast' | 'Badge' | 'Raw'
    "wns_tag": "myTag",                    // opcional. Usado na política de substituição de Tile.
                                           //           Uma string alfanumérica de no máximo 16 caracteres.
    "wns_cache": 1,                        // opcional. (1|0) Traduz para o valor X-WNS-Cache-Policy.
    "wns_ttl": 600,                        // opcional. Tempo de expiração para a notificação em segundos.
    
    // Parâmetros relacionados ao Safari
    "safari_title": {                      // opcional. Objeto OU string. Título da notificação.
      "en": "title"
    },
    "safari_content": {                    // opcional. Objeto OU string. Conteúdo da notificação.
      "en": "content"
    },
    "safari_action": "Click here",         // opcional.
    "safari_url_args": [                   // obrigatório. mas o valor pode estar vazio
      "firstArgument",
      "secondArgument"
    ],
    "safari_ttl": 3600,                    // opcional. Parâmetro de tempo de vida — o tempo de vida máximo
                                           //           de uma mensagem em segundos.
    
    // Parâmetros relacionados ao Chrome
    "chrome_title": {                      // opcional. Você pode especificar o cabeçalho da mensagem neste parâmetro.
      "en": "title"
    },
    "chrome_content": {                    // opcional. Você pode especificar o conteúdo da mensagem neste parâmetro.
      "en": "content"
    },
    "chrome_icon": "icon_URL",             // opcional. URL do caminho completo para o ícone ou caminho do arquivo de recursos da extensão
    "chrome_gcm_ttl": 3600,                // opcional. Parâmetro de tempo de vida – tempo de vida máximo da mensagem em segundos.
    "chrome_duration": 20,                 // opcional. Altera o tempo de exibição do push do Chrome. Defina como 0 para exibir o push
                                           //           até que o usuário interaja com ele.
    "chrome_image": "image_URL",           // opcional. URL para imagem grande
    "chrome_root_params": {                // opcional. Definir parâmetros específicos para mensagens enviadas ao Chrome.
      "key": "value"
    },
    "chrome_button_text1": "text1",        // opcional.
    "chrome_button_url1": "button1_URL",   // opcional. Ignorado se chrome_button_text1 não estiver definido.
    "chrome_button_text2": "text2",        // opcional.
    "chrome_button_url2": "button2_url",   // opcional. Ignorado se chrome_button_text2 não estiver definido.
    
    // Parâmetros relacionados ao Firefox
    "firefox_title": {                     // opcional. Objeto OU string. Você pode especificar o cabeçalho da mensagem aqui.
      "en": "title"
    },
    "firefox_content": {                   // opcional. Objeto OU string. Você pode especificar o conteúdo da mensagem aqui.
      "en": "content"
    },
    "firefox_icon": "icon_URL",            // opcional. URL do caminho completo para o ícone ou caminho
                                           //           para o arquivo nos recursos da extensão.
    "firefox_root_params": {               // opcional. Definir parâmetros específicos para mensagens enviadas ao Firefox.
      "key": "value"
    }
  }
}
```
</TabItem>
</Tabs>

O básico é muito simples – todos os filtros são realizados nos **conjuntos** de entidades.

### Conjuntos

Os conjuntos são definidos como:

**1.** Dispositivos inscritos no aplicativo específico (A);\
**2.** Dispositivos que correspondem aos valores de tag especificados (T) ou ao valor de tag específico do aplicativo (AT);\


### Sintaxe

Vamos tentar com alguns exemplos de acordo com a lista acima.

#### Direcionando assinantes de aplicativos

O filtro "A" define um conjunto de dispositivos inscritos em um aplicativo específico:

`A("XXXXX-XXXXX", ["iOS", "Android", "OsX", "Windows", "Amazon", "Safari", "Chrome", "Firefox"])`

onde

* "XXXXX-XXXXX" – Código do Aplicativo Pushwoosh
* \["iOS", "Android", ...] – array de plataformas alvo. Se omitido, a mensagem será enviada para todas as plataformas disponíveis para este aplicativo.

#### Filtrando por valores de tag

O filtro "T" define um conjunto de dispositivos que têm valores de tag especificados atribuídos.

`T(\"Age\", IN, [17,20])`

Define o conjunto de dispositivos que têm a tag “age” definida para um dos valores: 17, 18, 19, 20.

<Aside type="caution">
Para **tags específicas de aplicativos**, o filtro "AT" é aplicado. Certifique-se de especificar um Código de Aplicativo correspondente como o primeiro valor em um conjunto AT:

`AT(“XXXXX-XXXXX”, “TagName”, EQ, “VALUE”)`
</Aside>


### Tipos de tags e operadores

O mais importante a entender é que as tags são compartilhadas entre os aplicativos, e isso representa um instrumento muito poderoso para segmentar e filtrar seus usuários-alvo sem se prender a um aplicativo específico.

A tag pode ser de um dos três tipos diferentes: **String, Integer, List**. O tipo de tag define quais operadores você pode usar para uma tag específica.

#### Tags de string

**Operadores aplicáveis:**

* **EQ** – direciona dispositivos com um valor de tag especificado
* **IN** – direciona dispositivos com qualquer um dos valores de tag especificados
* **NOTIN** – direciona dispositivos sem valores de tag especificados
* **NOTEQ** – direciona dispositivos com um valor de tag não igual a um especificado
* **NOTSET** – direciona dispositivos sem valor para uma tag especificada
* **ANY** – direciona dispositivos com qualquer valor definido para uma tag especificada

Exemplos:

`T (\"Age\", EQ, 30)` – filtra usuários com 30 anos

`T (\"favorite_color\", IN, [\"red\",\"green\",\"blue\"])` – filtra usuários que escolheram vermelho, verde ou azul como sua cor favorita.

`T (\"Name", NOTSET, \"\")` – direciona dispositivos sem valor para a tag Name.

Você pode usar valores numéricos com as tags de string, mas tais valores serão convertidos para uma string.

#### Tags de inteiro

**Operadores aplicáveis:**

* **GTE** – maior ou igual a um valor especificado
* **LTE**– menor ou igual a um valor especificado
* **EQ** – igual a um valor especificado
* **BETWEEN** – entre os valores mínimo e máximo especificados
* **IN** – qualquer um dos valores especificados
* **NOTIN** – nenhum valor especificado atribuído a um dispositivo
* **NOTEQ** – dispositivos com um valor de tag não igual a um especificado
* **NOTSET** – dispositivos sem valor para uma tag especificada
* **ANY** – dispositivos com qualquer valor definido para uma tag especificada

Exemplos:

`T (\"Level\", EQ, 14)` – filtra usuários apenas no nível 14.

`T (\"Level\", BETWEEN, [1,5)` – filtra usuários nos níveis 1, 2, 3, 4 e 5.

`T (\"Level", GTE, 29)` – direciona usuários que alcançaram pelo menos o nível 29. 

#### Tags de lista

**Operadores aplicáveis:**

* **IN** – dispositivos com qualquer um dos valores de tag especificados

Exemplo: `T("Category", IN, ["breaking_news","business","politics"])`

#### Tags de data

**Operadores aplicáveis:**

* **GTE** – maior ou igual a um valor especificado
* **LTE**– menor ou igual a um valor especificado
* **EQ** – igual a um valor especificado
* **BETWEEN** – entre os valores mínimo e máximo especificados
* **NOTEQ** – dispositivos com um valor de tag não igual a um especificado
* **NOTSET** – dispositivos sem valor para uma tag especificada
* **ANY** – dispositivos com qualquer valor definido para uma tag especificada

Exemplos:

`AT("7777D-322A7","Last Application Open", BETWEEN, ["2022-02-28", "2022-03-02"])`

`AT("7777D-322A7","Last Application Open", GTE, "90 days ago")`

### Operações

* “+” – une dois conjuntos (equivale a OU)
* “\*” – cruza dois conjuntos (equivale a E)
* “\” – subtrai um conjunto de outro (equivale a NÃO)

Todas as operações são associativas à esquerda. "+" e "*" têm a mesma prioridade. "\" tem prioridade maior. Você pode usar parênteses para definir as prioridades dos cálculos.

Note que a operação “\” não é comutativa. `A("12345-12345") \ A("67890-67890")` não é o mesmo que `A("67890-67890") \ A("12345-12345")`.


<Aside type="note">
Você não pode usar nenhum dos seguintes parâmetros relacionados à segmentação na solicitação /createTargetedMessage:

* "application"
* "platforms"
* "devices"
* "filter"
* "conditions"

Todos os outros parâmetros listados em [`/createMessage`](#createmessage) são suportados.
</Aside>

<Aside type="caution" title="Importante">
Há um problema conhecido com o método `/createTargetedMessage`: se você não especificar nenhum aplicativo na seção "devices_filter", o Pushwoosh não exibe nenhum aplicativo nos detalhes do push.
</Aside>

## getPushHistory <Badge text="Obsoleto" variant="caution" size="small" />

<Aside type="note">
Use [**/messages:list**](/pt/developer/api-reference/statistics-api/message-statistics-api/#messageslist) para recuperar o histórico de mensagens e dados mais detalhados.
</Aside>

`POST` `https://api.pushwoosh.com/json/1.3/getPushHistory`

Obtém o histórico de mensagens com detalhes do push.

#### Corpo da Solicitação

| Nome                                   | Tipo    | Descrição                                                                                                          |
| -------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------- |
| auth* | string  | [Token de acesso à API](/pt/developer/api-reference/api-identifiers/#api-access-token) do Painel de Controle da Pushwoosh.                                                                       |
| limitMessages                          | integer | Limita o número de mensagens em uma resposta. Valores possíveis de 10 a 1000.                                        |
| source                                 | string  | Fonte do histórico de push. Pode ser nulo ou: "CP", "API", "GeoZone", "RSS", "AutoPush", "A/B Test".       |
| searchBy                               | string  | Valores possíveis para pesquisar. Pode ser nulo ou: "notificationID", "notificationCode", "applicationCode", "campaignCode". |
| value                                  | string  | Valor de pesquisa definido de acordo com o campo "searchBy".                                                                  |
| lastNotificationID                     | string  | Usado para paginação. Último messageId da chamada /getPushHistory anterior. Veja detalhes abaixo.                       |

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "rows": [{
      "id": 10191611434,
      "code": "8071-07AD1171-77238AD1",
      "createDate": "2020-09-14 12:26:21",
      "sendDate": "2020-09-14 12:26:21",
      "content": {
        "en": "Hello!"
      },
      "url": null,
      "ios_title": null,
      "ios_subtitle": null,
      "ios_root_params": null,
      "android_header": null,
      "android_root_params": null,
      "conditions": null,
      "conditions_operator": "AND",
      "filter_code": "E3A64-A5F3C",
      "filter_conditions": "#In-app Purchase(≠0)",
      "filter_name": "Purchased something",
      "geozone": null,
      "campaignId": "",
      "campaignName": "",
      "subscription_segments": null,
      "open": {
        "C90C0-0E786": {
          "IOS": 0
        }
      },
      "sent": {
        "C90C0-0E786": {
          "IOS": 1
        }
      },
      "ctr": {
        "C90C0-0E786": 0
      }
    }, {
      "id": 10191609202,
      "code": "41CA-83F8E0D7-7A63822B",
      "createDate": "2020-09-14 12:25:55",
      "sendDate": "2020-09-14 12:25:55",
      "content": {
        "en": "Hi!"
      },
      "url": null,
      "ios_title": null,
      "ios_subtitle": null,
      "ios_root_params": null,
      "android_header": null,
      "android_root_params": null,
      "conditions": null,
      "conditions_operator": "AND",
      "filter_code": null,
      "filter_conditions": null,
      "filter_name": null,
      "geozone": null,
      "campaignId": "",
      "campaignName": "",
      "subscription_segments": {
        "2D732-BB981": "News"
      },
      "open": {
        "C90C0-0E786": {
          "CHROME": 0,
          "IOS": 0
        }
      },
      "sent": {
        "C90C0-0E786": {
          "CHROME": 1,
          "IOS": 2
        }
      },
      "ctr": {
        "C90C0-0E786": 0
      }
    }]
  }
}
```
</TabItem>
</Tabs>



```json title="Exemplo"
{
  "request":{
    "auth": "yxoPUlwqm…………pIyEX4H",  // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh
    "source": null,                  // opcional. Valores possíveis são nulo, "CP", "API", "GeoZone",
                                     //           "RSS", "AutoPush", "A/B Test"
    "searchBy": "applicationCode",   // opcional. Valores possíveis são "", "notificationID",
                                     //           "notificationCode", "applicationCode", "campaignCode"
    "value": "C8717-703F2",          // opcional. Valor de pesquisa definido de acordo com o campo "searchBy".
    "lastNotificationID": 0,         // opcional. Usado para paginação. Último messageId da
                                     //           chamada /getPushHistory anterior. Veja detalhes abaixo.
    "limitMessages": 1000            // opcional. Valor possível de 10 a 1000.
  }
}
```

Este método retornará 1000 mensagens da conta, ordenadas por ID de mensagem. Para obter a segunda página, especifique o último ID de mensagem da resposta anterior no parâmetro **lastNotificationId**.

### Tipos de dados da resposta

```
id -- int | 0 
code -- string
createDate -- string  (date: %Y-%m-%d %H:%M:%S)
sendDate -- string  (date: %Y-%m-%d %H:%M:%S)
content -- array ( dict {lang: value} | list [])
title -- array ( dict {lang: value} | list [])
subtitle -- array ( dict {lang: value} | list [])
url -- string
ios_title -- string | array ( dict {lang: value} ) | null
ios_subtitle -- string | array ( dict {lang: value} ) | null
ios_root_params -- dict (JSON) | null
android_header -- string | array ( dict {lang: value} ) | null
android_root_params -- dict (JSON) | null
conditions -- list (JSON) | null
conditions_operator -- string | null
filter_code -- string | null
filter_name -- string | null
filter_conditions -- string | null
geozone -- string | null
campaignId -- string | ""
campaignName -- string | ""
subscription_segments (obsolete) -- list (JSON) | null
data -- dict (JSON) | null
open -- dict [dict [string: int]]  | ""   Example: 'open': {'AAAAA-BBBBB': {'IOS': 1, 'ANDROID': 1}}
sent -- dict [dict [string: int]]  | ""   Example: 'sent': {'AAAAA-BBBBB': {'IOS': 10, 'ANDROID': 10}}
ctr -- dict [string: int] | ""  Example: {'AAAAA-BBBBB': 1}
errors -- dict [string: int] | ""  Example: {'ANDROID': 1, 'IOS': 1}
```



## cancelMessage

`POST` `https://api.pushwoosh.com/json/1.3/cancelMessage`

Cancela uma mensagem agendada.

#### Corpo da Solicitação

| Nome                                      | Tipo   | Descrição                                           |
| ----------------------------------------- | ------ | ----------------------------------------------------- |
| auth*    | string | [Token de acesso à API](/pt/developer/api-reference/api-identifiers/#api-access-token) do Painel de Controle da Pushwoosh.        |
| message* | string | O [Código da mensagem](/pt/developer/api-reference/api-identifiers/#message-code) obtido na resposta de `/createMessage`. |

<Tabs>
<TabItem label="200">
```json
{
   "status_code":200,
   "status_message":"OK"
}
```
</TabItem>
</Tabs>

<Aside type="note">
O método só é permitido para mensagens que estão no status de pendente, aguardando ou processando.
</Aside>

```json title="Exemplo"
{
  "request":{
    "auth": "yxoPUlwqm…………pIyEX4H",  // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh
    "message": "xxxx-xxxxxxx-xxxxxx" // obrigatório. O código da mensagem obtido na resposta de /createMessage
  }
}
```

**Códigos de status:**

| Código de status HTTP | status_code | Descrição                                         |
| ---------------- | ------------ | --------------------------------------------------- |
| 200              | 200          | Mensagem cancelada com sucesso                       |
| 200              | 210          | Erro de argumento. Veja status_message para mais informações.  |
| 400              | N/A          | String de solicitação malformada                            |
| 500              | 500          | Erro interno                                      |