> ## Documentation Index
> Fetch the complete documentation index at: https://dev.wachap.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Modifier une campagne

> Mettez à jour les paramètres d’une campagne existante

## Modifier une campagne

Mettez à jour les paramètres d'une campagne existante.

### Endpoint

<ParamField method="PUT" path="/v1/campaigns/:id" />

### Headers

<ParamField header="Authorization" type="string" required>
  Bearer token avec votre Secret Key (format: `Bearer sk_...`)
</ParamField>

### URL Parameters

<ParamField path="id" type="string" required>
  L'identifiant de la campagne
</ParamField>

### Body Parameters

Tous les paramètres sont optionnels. Seuls les champs fournis seront mis à jour.

<ParamField body="name" type="string">
  Nouveau nom de la campagne
</ParamField>

<ParamField body="messageContent" type="object">
  Nouveau contenu du message
</ParamField>

<ParamField body="variations" type="array">
  Nouvelles variations de message. Chaque variation `text`, `image`, `video` ou `document` peut inclure `buttons` et `footerText`.
</ParamField>

<ParamField body="delayBetweenMessages" type="integer">
  Nouveau délai entre messages (ms)
</ParamField>

<ParamField body="scheduled" type="boolean">
  Activer/désactiver la programmation
</ParamField>

<ParamField body="scheduledDate" type="string">
  Nouvelle date de programmation
</ParamField>

### Restrictions

* ❌ Vous **ne pouvez pas** modifier une campagne avec le statut `running`.
* ❌ Vous **ne pouvez pas** modifier une campagne avec le statut `completed`.
* ✅ Vous **pouvez** modifier une campagne `draft` ou `paused`.

Si vous devez modifier une campagne en cours :

1. Mettez-la en pause.
2. Modifiez les paramètres.
3. Reprenez-la.

### Exemples de requêtes

<CodeGroup>
  ```bash BASH theme={null}
  curl -X PUT https://api.wachap.com/v1/campaigns/campaign_abc123 \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer token" \
    -d '{
      "name": "Campagne Modifiée",
      "variations": [
        {
          "id": "var_1",
          "type": "text",
          "content": "Souhaitez-vous confirmer ?",
          "buttons": [
            {"id": "yes", "text": "Oui", "type": "reply"},
            {"id": "no", "text": "Non", "type": "reply"}
          ],
          "footerText": "WaChap"
        }
      ],
      "delayBetweenMessages": 3000
    }'
  ```
</CodeGroup>

Pour désactiver les boutons d’une variation, envoyez `buttons: []` et omettez `footerText`.

### Exemple de réponse

```json theme={null}
{
  "success": true,
  "message": "Campagne mise à jour avec succès",
  "campaign": {
    "id": "campaign_abc123",
    "name": "Campagne Modifiée",
    "delayBetweenMessages": 3000,
    "updatedAt": "2024-01-16T10:00:00.000Z"
  }
}
```

### Codes d'erreur

| Code  | Description                                                        |
| :---- | :----------------------------------------------------------------- |
| `401` | INVALID\_SECRET\_KEY - Clé secrète invalide                        |
| `404` | CAMPAIGN\_NOT\_FOUND - Campagne non trouvée                        |
| `409` | CAMPAIGN\_RUNNING - Impossible de modifier une campagne en cours   |
| `409` | CAMPAIGN\_COMPLETED - Impossible de modifier une campagne terminée |


## OpenAPI

````yaml PUT /campaigns/{id}
openapi: 3.0.3
info:
  title: WaChap API
  version: 2.0.0
servers:
  - url: https://api.wachap.com/v1
    description: WaChap API server
security:
  - BearerAuth: []
tags:
  - name: Instances
    description: Créer et gérer des instances WhatsApp
  - name: Webhook
    description: Configuration des webhooks de réception
  - name: Messages
    description: Envoyer des messages WhatsApp
  - name: Comptes
    description: Gérer vos comptes WhatsApp connectés
  - name: SMS
    description: Service SMS de WaChap (V4) via FCM
  - name: Étiquettes WhatsApp
    description: Créer et associer des étiquettes aux conversations WhatsApp
paths:
  /campaigns/{id}:
    put:
      tags:
        - Campagnes
      summary: Modifier une campagne
      description: Mettez à jour les paramètres d'une campagne existante.
      operationId: updateCampaign
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                messageType:
                  type: string
                messageContent:
                  type: object
                variations:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                      type:
                        type: string
                        enum:
                          - text
                          - image
                          - video
                          - document
                          - audio
                      content:
                        type: string
                      mediaUrl:
                        type: string
                      buttons:
                        type: array
                        minItems: 1
                        maxItems: 3
                        items:
                          $ref: '#/components/schemas/InteractiveButton'
                      footerText:
                        type: string
                        maxLength: 60
                delayBetweenMessages:
                  type: integer
                scheduled:
                  type: boolean
                scheduledDate:
                  type: string
      responses:
        '200':
          description: OK
        '400':
          description: Paramètres de campagne ou boutons invalides
        '404':
          description: CAMPAIGN_NOT_FOUND
        '409':
          description: La campagne ne peut pas être modifiée dans son état actuel
components:
  schemas:
    InteractiveButton:
      type: object
      required:
        - text
      properties:
        id:
          type: string
          description: >-
            Identifiant unique du bouton dans le message. Généré automatiquement
            s’il est omis.
        text:
          type: string
          minLength: 1
          maxLength: 20
          description: Libellé affiché dans WhatsApp.
        type:
          type: string
          enum:
            - reply
            - url
            - call
          default: reply
        url:
          type: string
          format: uri
          pattern: ^https?://
          description: URL HTTP(S) requise pour un bouton de type url.
        phoneNumber:
          type: string
          pattern: ^\+?[1-9][0-9]{5,14}$
          description: Numéro international requis pour un bouton de type call.
      example:
        id: confirm
        text: Confirmer
        type: reply
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````