# API onsite

## Premiers pas

L’API onsite est utilisée pour interagir avec les fonctionnalités de Commanders Act en JavaScript.

## Comment l’utiliser

L’API onsite se compose d’une seule fonction, `cact()`, avec la signature stricte suivante :

```javascript
cact(command, [options,] [callback])
```

| Argument   | Descriptions                                                                                                     | Requis    |
| ---------- | ---------------------------------------------------------------------------------------------------------------- | --------- |
| `command`  | Une chaîne d’identifiant utilisée pour sélectionner la méthode souhaitée.                                        | Requis    |
| `options`  | Un objet JavaScript qui inclut les données transmises à la méthode.                                              | Optionnel |
| `callback` | Une fonction de rappel JavaScript utilisée pour recevoir des informations ou des événements depuis l’API onsite. | Optionnel |

L’API onsite est incluse dans chaque container et chaque banner de privacy.

## Envoyer un event

Pour envoyer les données d’un event vers la plateforme Commanders Act server-side, utilisez cette commande :

```javascript
cact('<event_name>', {<event_params>});
```

Exemple : pour envoyer un event d’achat :

```javascript
cact('purchase', { 
  id:'1234',
  currency: 'EUR',
  //...
});
```

## Obtenir des informations

Pour obtenir différentes valeurs depuis Commanders Act, utilisez cette commande :

```javascript
cact(get command, [callback])
```

Exemple : pour obtenir le consentement depuis TrustCommander, vous pouvez appeler l’ `consent.get` API comme ceci :

```javascript
cact('consent.get', function(result) {
    if (result.consent.status === "all-on") {
        
        // Consentement disponible pour toutes les catégories.
        
    }
});
```

{% hint style="warning" %}
Les méthodes de l’API onsite sont appelées de façon asynchrone. Si, par exemple, vous avez besoin d’informations de manière synchrone dans le `<head>` du document, il est recommandé de mettre en cache et de récupérer le résultat de l’API dans `localStorage`.
{% endhint %}

## Gestion des erreurs

Vous pouvez gérer les erreurs via la propriété error dans l'objet de callback.\
Exemple :

```javascript
cact('consent.get', function(result) {

    if (result.error) {
    
        // Gérer l'erreur
    
    }
    else if (result.consent.status === "all-on") {
        
        // Consentement disponible pour toutes les catégories.
        
    }
});
```

## API Stub (optionnel)

Pour une utilisation avancée, nous fournissons également un stub API qui peut être ajouté lorsque vous devez interagir avec l'API avant que les containers ou les banners n'aient chargé.\
Ce stub est déjà inclus dans les containers et les privacy banners, vous n'avez donc pas besoin de l'ajouter dans la plupart des cas d'utilisation.\
Le stub est utilisé pour mettre en buffer toutes les méthodes dans un tableau JavaScript jusqu'à ce que le JavaScript Commanders Act soit chargé et prêt à traiter les méthodes. Cela permet par exemple d'utiliser l'onsite API avant que le JavaScript TrustCommander ne soit chargé.

```javascript
window.caReady = window.caReady || []; 
window.cact = function() { window.caReady.push(arguments); };
```

`window.caReady` est un tableau JavaScript qui met en tampon les interactions avec l’API. `window.cact` est une fonction JavaScript utilisée pour interagir avec l’API onsite.

{% hint style="success" %}
Si vous travaillez dans une grande équipe et n’êtes pas certain que le stub ait déjà été installé, il est possible d’installer le stub JavaScript plusieurs fois.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.commandersact.com/fr/fonctionnalites/sources/sources-catalog/web/containers/best-practices/apis/onsite-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
