## Objet WhatsApp
| NOM DU PARAMÈTRE | VALEUR                                                                                          									                                  | OBLIGATOIRE  	 | VALEUR PAR DÉFAUT |
|:---------------|:-------------------------------------------------------------------------------------------------------------------------------------------|:------------:|:-------------:|
| sender         | Expéditeur texte. Il doit d'abord être enregistré. Pour l'enregistrement, contactez l'assistance [ici](https://www.bulkgate.com/fr/nous-contacter/). 	                                      |   **Oui**	   |       -       |
| expiration     | Délai en secondes après lequel le canal alternatif est utilisé. Les valeurs inférieures à `60` sont ignorées et remplacées par la valeur par défaut                                       							  		                                  |      Non      |    `180`      |
| template 	     | Objet template. Ne peut pas être combiné avec les paramètres suivants (Message, File, Otp, Location), voir [Objet Template](#objet-template) |  Non       	  |    `null`     |
| message 	      | Objet message. Ne peut pas être combiné avec les paramètres suivants (Template, File, Otp, Location), voir [Objet Message](#objet-message)	  |  Non       	  |    `null`     |
| file   	       | Objet file. Ne peut pas être combiné avec les paramètres suivants (Template, Message, Otp, Location), voir [Objet File](#objet-file)         |  Non      	   |    `null`     |
| otp   	        | Objet otp. Ne peut pas être combiné avec les paramètres suivants (Template, Message, File, Location), voir [Objet Otp](#objet-otp)           |      Non      |    `null`     |
| location   	   | Objet location. Ne peut pas être combiné avec les paramètres suivants (Template, Message, File, Otp), voir [Objet Location](#objet-location) |      Non      |    `null`     |


## Objet Template
| NOM DU PARAMÈTRE | VALEUR                                                                               		 | OBLIGATOIRE  	 | VALEUR PAR DÉFAUT |
|:---------------|:----------------------------------------------------------------------------------------|:------------:|:-------------:|
| template       | Nom du modèle											                                                                 |   **Oui**	   |       -       |
| language     	 | Langue au format ISO                                      					                       |   **Oui**    |       -       |
| header 	       | Objet d'en-tête du modèle, voir [Objet d'en-tête](#objet-d-en-tete-du-template)	                   |  Non       	  |    `null`     |
| body 		        | Objet de corps du modèle, voir [Objet de corps](#objet-de-corps-du-template)	 	                       |  Non       	  |    `null`     |
| buttons   	    | Tableau d'objets boutons du modèle, voir [Objet des boutons](#objet-des-boutons-du-template)        |  Non      	   |    `null`     |


### Objet d'en-tête du template
| NOM DU PARAMÈTRE | VALEUR                                                                               				      |                          OBLIGATOIRE  								                          | VALEUR PAR DÉFAUT |
|:---------------|:-----------------------------------------------------------------------------------------------|:---------------------------------------------------------------------:|:-------------:|
| type           | Type d'en-tête (`image`, `video`, `text`, `location`)						  		                                |                            **Oui**								                            |       -       |
| url     	      | Chemin vers la vidéo ou l'image (utilisé avec le type `image`, `video`)                                 				 |    **Oui**, non combinable avec les suivants (`text`, `location`)  		     |       -       |
| caption 	      | Légende de l'image ou de la vidéo (utilisé avec le type `image`, `video`)   	 			 			                       |    **Oui**, non combinable avec les suivants (`text`, `location`)  		     |       -       |
| text 		        | Texte (utilisé avec le type `text`)	 										                                                       | **Oui**, non combinable avec les suivants (`url`, `caption`, `location`)	 |       -       |
| location   	   | Objet location (utilisé avec le type `location`), voir [Objet Location](#objet-location)   	       |  **Oui**, non combinable avec les suivants (`url`, `text`, `caption`)  	  |       -       |

### Objet de corps du template
| NOM DU PARAMÈTRE | VALEUR                                       |                      OBLIGATOIRE  							                       | VALEUR PAR DÉFAUT |
|:---------------|:---------------------------------------------|:-------------------------------------------------------------:|:-------------:|
| type           | Type de corps (`text`, `price`, `currency`) 	 |                          Non								                           |    `text`     |
| text 		        | Texte (utilisé avec le type `text`)	 		             | **Oui**, non combinable avec les suivants (`amount`, `currency`)	 |       -       |
| amount   	     | Montant dans la devise définie			  	                 |      **Oui**, non combinable avec le suivant (`text`)  		       |       -       |
| currency   	   | Devise					   	                            |      **Oui**, non combinable avec le suivant (`text`)  		       |       -       |

### Objet des boutons du template
| NOM DU PARAMÈTRE | VALEUR                                        |           OBLIGATOIRE  				            | VALEUR PAR DÉFAUT |
|:---------------|:----------------------------------------------|:------------------------------------:|:-------------:|
| type           | Type de bouton (`payload`, `url`) 			         |             **Oui**				               |       -       |
| index 	        | Index du bouton défini	 			                  |             **Oui**				              |       -       |
| payload   	    | Métadonnées envoyées après un clic sur le bouton  		 | **Oui**, uniquement avec le type `payload`  	 |       -       |
| text   	       | URL vers laquelle le destinataire sera redirigé	 |   **Oui**, uniquement avec le type `url`  	   |       -       |


**Exemple de requête avec un objet template :**
```http-json
POST /api/2.0/advanced/transactional HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json

{
	"application_id": 451,
	"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
	"number": [
		"420777777777"
	],
	"channel": {
		"whatsapp": {
			"sender": "420777777777",
			"template": {
				"template": "order_shipped",
				"language": "en",
				"header": {
					"type": "image",
					"url": "https://example.com/order-header.jpg",
					"caption": "Order 4517"
				},
				"body": [
					{
						"type": "text",
						"text": "John"
					},
					{
						"type": "currency",
						"amount": 20.5,
						"currency": "EUR"
					}
				],
				"buttons": [
					{
						"type": "url",
						"index": 1,
						"text": "4517"
					}
				]
			}
		}
	}
}
```

### Exemple d'objet Template
![Exemple d'objet Template](docs:advanced-whatsapp/whatsapp_template_example)



## Objet Message
| NOM DU PARAMÈTRE | VALEUR                              | OBLIGATOIRE | VALEUR PAR DÉFAUT |
|:---------------|:------------------------------------|:---------:|:-------------:|
| text           | Texte du message 					             | **Oui**	  |      - 	      |
| preview_url 	  | Aperçu de l'URL envoyée sous forme de miniature	 		 |   Non		    |    `true`     |


**Exemple d'objet message :**
```http-json
POST /api/2.0/advanced/transactional HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json

{
	"application_id": 451,
	"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
	"number": [
		"420777777777"
	],
	"channel": {
		"whatsapp": {
			"sender": "420777777777",
			"message": {
				"text": "Your order 4517 has been shipped. Track it at https://example.com/track/4517",
				"preview_url": true
			}
		}
	}
}
```


## Objet File
| NOM DU PARAMÈTRE | VALEUR                                              		           | OBLIGATOIRE | VALEUR PAR DÉFAUT |
|:---------------|:-----------------------------------------------------------------|:---------:|:-------------:|
| type           | Type de fichier (`image`, `video`, `audio`, `document`, `sticker`)	 |   Non		    |  `image`  	   |
| url 	  	       | Chemin vers le fichier		 					                                         | **Oui**	  |     -  	      |
| caption 	      | Légende du fichier envoyé	 					                                      |   Non		    |      ""       |


**Exemple d'objet file :**
```http-json
POST /api/2.0/advanced/transactional HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json

{
	"application_id": 451,
	"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
	"number": [
		"420777777777"
	],
	"channel": {
		"whatsapp": {
			"sender": "420777777777",
			"file": {
				"type": "document",
				"url": "https://example.com/invoice-4517.pdf",
				"caption": "Invoice for order 4517"
			}
		}
	}
}
```


### Exemple d'objet File
![Exemple d'objet File](docs:advanced-whatsapp/whatsapp_file_example)


## Objet Otp 
| NOM DU PARAMÈTRE | VALEUR                                              								                                                        | OBLIGATOIRE | VALEUR PAR DÉFAUT |
|:---------------|:--------------------------------------------------------------------------------------------------------------------|:---------:|:-------------:|
| template       | Modèle du message texte envoyé avec le code									                                                          | **Oui**	  |      	-	      |
| code 	  	      | Code à usage unique		 											                                                                                         | **Oui**	  |     -  	      |
| language 	     | Langue du message contenant le code (si `null` est utilisé, la langue est déterminée d'après le numéro de téléphone) 	 | **Oui**	  |       -       |


**Exemple d'objet otp :**
```http-json
POST /api/2.0/advanced/transactional HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json

{
	"application_id": 451,
	"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
	"number": [
		"420777777777"
	],
	"channel": {
		"whatsapp": {
			"sender": "420777777777",
			"otp": {
				"template": "verification_code",
				"language": "en",
				"code": "0451"
			}
		}
	}
}
```


## Objet Location
| NOM DU PARAMÈTRE	 | VALEUR                              | OBLIGATOIRE | VALEUR PAR DÉFAUT |
|:----------------|:------------------------------------|:---------:|:-------------:|
| latitude      	 | Latitude sous forme de nombre à virgule flottante	  |    Non	    |      	-	      |
| longitude		     | Longitude sous forme de nombre à virgule flottante	 |    Non	    |     -  	      |
| name			         | Nom du lieu envoyé			            |    Non	    |       -       |
| address 		      | Adresse du lieu envoyé		          |    Non	    |       -       |


**Exemple de requête avec un objet location :**
```http-json
POST /api/2.0/advanced/transactional HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json

{
	"application_id": 451,
	"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
	"number": [
		"420777777777"
	],
	"channel": {
		"whatsapp": {
			"sender": "420777777777",
			"location": {
				"latitude": 50.086584,
				"longitude": 14.410763,
				"name": "Pick-up point",
				"address": "Karluv most, Praha"
			}
		}
	}
}
```

### Exemple d'objet Location
![Exemple d'objet Location](docs:advanced-whatsapp/whatsapp_location_example)

## Exemple de requête complète

Un modèle approuvé avec un en-tête, des paramètres de corps et un bouton URL, avec le SMS comme canal de repli. Le volet WhatsApp ignore le `text` de premier niveau, qui sert au volet SMS.

```http-json
POST /api/2.0/advanced/transactional HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json

{
	"application_id": 451,
	"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
	"number": ["420777777777"],
	"text": "Your order 4517 has been shipped.",
	"channel": {
		"whatsapp": {
			"sender": "420777777777",
			"expiration": 300,
			"template": {
				"template": "order_shipped",
				"language": "en",
				"header": {
					"type": "image",
					"url": "https://example.com/order-header.jpg",
					"caption": "Order 4517"
				},
				"body": [
					{"type": "text", "text": "John"},
					{"type": "currency", "amount": 20.5, "currency": "EUR"}
				],
				"buttons": [
					{"type": "url", "index": 1, "text": "4517"}
				]
			}
		},
		"sms": {
			"sender_id": "gText",
			"sender_id_value": "BulkGate"
		}
	}
}
```

Le même message en texte libre. Il ne peut être utilisé que dans la fenêtre de service de 24 heures ; en dehors de celle-ci, un modèle est obligatoire.

```http-json
POST /api/2.0/advanced/transactional HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json

{
	"application_id": 451,
	"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
	"number": ["420777777777"],
	"text": "Your order 4517 has been shipped.",
	"channel": {
		"whatsapp": {
			"sender": "420777777777",
			"message": {
				"text": "Your order 4517 has been shipped. Track it at https://example.com/track/4517",
				"preview_url": true
			}
		},
		"sms": {
			"sender_id": "gText",
			"sender_id_value": "BulkGate"
		}
	}
}
```

La réponse est la même pour tous les canaux - voir [Advanced transactional](https://www.bulkgate.com/fr/documentation/advanced-api/advanced-transactional/2.0/).
