# Mise à jour

`POST` `https://api.pushwoosh.com/messaging/v2/update`

Remplace un message créé précédemment, identifié par son `message_code`, par une nouvelle définition. Le remplacement est un **remplacement complet, pas un correctif** : la nouvelle définition est appliquée exactement telle qu'elle est envoyée, et le `message_code` ne change pas.

La mise à jour n'est disponible que lorsque le message est encore **en attente** (pending) — programmé pour un envoi futur et pas encore pris en charge pour traitement ou livraison.

<Aside type="caution" title="Important">

- Le champ `request` est une définition [`Notify`](/fr/developer/api-reference/messaging-api-v2/notify/) complète. Les champs que vous omettez ne sont **pas** reportés du message original — ils sont réinitialisés. Envoyez le message complet que vous souhaitez, pas seulement les parties modifiées.

- Si le message est déjà en cours de traitement, a été livré, a été annulé ou a été supprimé, l'API renvoie `400`. Cet appel n'est pas idempotent. Vérifiez l'état du message avant de le mettre à jour.
</Aside>

Pour vérifier si un message est toujours dans un état qui permet sa mise à jour, consultez la section [Vérifier l'état du message](#checking-message-status).


## Requête

Authentifiez-vous avec votre [jeton d'API Serveur (Server API token)](/fr/developer/api-reference/api-access-token/#server-api-token) dans l'en-tête `Authorization: Token <API_TOKEN>`.

| Champ | Type | Requis | Description |
|---|---|---|---|
| `message_code` | chaîne | Oui | [Code de message (Message code)](/fr/developer/api-reference/api-identifiers/#message-code) du message à mettre à jour, tel que retourné par [`Notify`](/fr/developer/api-reference/messaging-api-v2/notify/) dans `result.message_code`. |
| `request` | objet | Oui | La nouvelle définition complète du message. De la même forme que le corps de la requête [`Notify`](/fr/developer/api-reference/messaging-api-v2/notify/) — un objet `segment` ou `transactional`. Validé exactement comme `Notify`. |

### Exemple de requête

Reprogrammer un message de segment et modifier son contenu :

```bash
curl -X POST https://api.pushwoosh.com/messaging/v2/update \
  -H "Authorization: Token YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "message_code": "XXXX-XXXXXXXX-XXXXXXXX",
    "request": {
      "segment": {
        "application": "XXXXX-XXXXX",
        "platforms": ["IOS", "ANDROID"],
        "code": "active_users",
        "payload": {
          "content": {
            "localized_content": {
              "en": {
                "ios":     { "body": "Updated message" },
                "android": { "body": "Updated message" }
              }
            }
          }
        },
        "schedule": { "at": "2026-05-02T12:00:00Z" },
        "message_type": "MESSAGE_TYPE_MARKETING"
      }
    }
  }'
```

## Réponse

En cas de succès, renvoie un HTTP 200 avec le résultat du message mis à jour. Le `message_code` reste inchangé.

```json
{
  "result": {
    "message_code": "XXXX-XXXXXXXX-XXXXXXXX",
    "unknown_identifiers": []
  }
}
```

- `message_code` (chaîne) : le même code que celui qui a été passé dans la requête.
- `unknown_identifiers` (tableau de chaînes) : les identifiants dans la nouvelle définition qui n'ont pas été trouvés, le cas échéant (voir [`Notify`](/fr/developer/api-reference/messaging-api-v2/notify/)).

## Erreurs

Les erreurs utilisent l'enveloppe d'erreur standard de gRPC-Gateway : `{ "code": ..., "message": ..., "details": [...] }`.

| Statut HTTP | Condition |
|---|---|
| `400` | Le `message_code` est manquant. |
| `400` | La nouvelle définition de la `request` est manquante ou invalide (elle est validée exactement comme [`Notify`](/fr/developer/api-reference/messaging-api-v2/notify/)). |
| `400` | Le message n'est pas dans un état qui permet sa mise à jour (il n'est plus en attente (`pending`)). |
| `403` | Le message appartient à un autre compte. |
| `404` | Aucun message n'existe pour le `message_code` donné. |
| `500` | Une erreur interne s'est produite lors du chargement du message ou de l'application de la mise à jour. Réessayez la requête. |


**Exemple**

La mise à jour d'un message qui n'existe plus renvoie un HTTP `404` :

```json
{
  "code": 5,
  "message": "message not found",
  "details": []
}
```

## Vérifier l'état du message

Avant la mise à jour, vous pouvez vérifier si un message est toujours dans un état qui permet sa mise à jour. En plus de lire la colonne **Statut** dans le tableau des messages du Panneau de Contrôle ([**Campagnes → Messages uniques**](/fr/product/statistics-and-analytics/message-history/)), vous pouvez interroger l'état par programmation avec [`messages:list`](/fr/developer/api-reference/statistics-api/message-statistics-api/#messageslist) :

- Passez le `message_code` dans le tableau `filters.messages_codes` (en même temps que le `filters.application` requis).
- Lisez le champ `status` de l'entrée correspondante dans `items[]`.

<Aside type="note">
`messages:list` fait partie de l'API de statistiques et utilise un en-tête d'authentification différent de ce point de terminaison : `Authorization: Api <Server Key>`.
</Aside>

## Sujets connexes

<CardGrid>
  <LinkCard title="Notify" href="/developer/api-reference/messaging-api-v2/notify/" />
  <LinkCard title="Cancel" href="/developer/api-reference/messaging-api-v2/cancel/" />
  <LinkCard title="Statistiques des messages" href="/developer/api-reference/statistics-api/message-statistics-api/#messageslist" />
  <LinkCard title="Aperçu de l'API de messagerie v2" href="/developer/api-reference/messaging-api-v2/" />
  <LinkCard title="Migration depuis la v1" href="/developer/api-reference/messaging-api-v2/migration-from-v1/" />
</CardGrid>