> For the complete documentation index, see [llms.txt](https://help.citrusad.com/retail-media-interface/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.citrusad.com/retail-media-interface/integration/fr/data-api/api-overview/oauth-20-authentication.md).

# Authentification OAuth 2.0

{% hint style="info" %}
OAuth 2.0 est uniquement disponible sur le point de terminaison /ads

Lors de l'intégration du rapport d'activités via l'API, vous devrez intégrer le point de terminaison /orders avec l'authentification Basic et votre clé d'API secrète.
{% endhint %}

## Client ID et Client Secret

Le `client_id` et le `client_secret` vous seront fournis par votre Technical Account Manager. Le Client Secret est privé et ne doit pas être partagé.

## Demande de jetons d'accès

Pour obtenir un jeton d'accès (Access Token), vous devez envoyer une requête contenant le `client_id` et le `client_secret`. Pour ce faire, le détaillant doit effectuer une requête POST vers le Epsilon Retail Media point de terminaison du serveur d'autorisation :

```http
https://$BASE_URL/v1/oauth2/token
```

{% hint style="info" %}
`/oauth2/token` fournit uniquement le jeton pertinent. Vous utiliserez ces jetons pour interagir avec les différents points de terminaison d'intégration.
{% endhint %}

Votre requête nécessitera une autorisation Basic envoyée via l'en-tête de requête Authorization contenant le `client_id` et le `client_secret` du détaillant encodé en base64 :

`Authorization: "Basic" + base64encode(client_id + ":" + client_secret)`

Vous devrez ajouter le paramètre suivant en utilisant le `application/x-www-form-urlencoded` format dans le corps de la requête HTTP :

`grant_type=client_credentials`

La requête ressemblera à ceci :

```http
POST https://$BASE_URL/v1/oauth2/token
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <base64 encoded id+key>
grant_type=client_credentials
```

## Réception de votre jeton d'accès

La réponse contiendra les informations suivantes

* `access_token`: Le jeton d'accès à utiliser lors de l'appel des Epsilon Retail Media API
* `expires_in`: La durée, en secondes, avant l'expiration du jeton d'accès
* `token_type`: Le type de jeton retourné. Ce sera toujours Bearer dans ce cas

Un exemple de réponse est fourni ci-dessous

```json
{
  "access_token": "xxxxx.yyyyy.zzzzz",
  "expires_in": 3600,
  "token_type": "Bearer"
}
```

## Utilisation du jeton

Les appels vers les Epsilon Retail Media points de terminaison de l'API peuvent être effectués en ajoutant simplement le jeton d'accès généré à l'en-tête Authorization de la requête `Authorization: “Bearer “ <access_token>`

```http
POST $BASE_URL/v1/ads/generate HTTP/1.1
accept: application/json
content-type: application/json
Authorization: Bearer <access_token>
{
    "customerId": "wertg5432a",
    "sessionId": "ec9-4e07-881d-3e9",
    "placement": "category",
    "catalogId": "628dbe95-2ec9-4e07-881d-3e9f92ab2e0b",
    "productFilters": [
         ["category:Cupboard/Snacks"]
    ],
    "options": {
                             "filterMode": "AndOr"
                             },
    "maxNumberOfAds": 3
}
```

## Erreurs de requête

### Client non valide

Si le `client_id` or `client_secret` envoyé dans la requête est incorrect, vous recevrez une réponse comme celle-ci :

```json
{
  "error": "invalid_client"
}
```

Vérifiez que vous utilisez les bons identifiants. Vérifiez à nouveau votre `client_id` et le `client_secret` et assurez-vous d'utiliser correctement l'autorisation Basic lors de l'appel du point de terminaison /token. ##Requête non valide Une erreur de requête non valide sera retournée par le serveur d'autorisation si la requête manque d'un paramètre requis, inclut une valeur de paramètre non valide, inclut un paramètre plus d'une fois, ou est mal formée d'une autre manière.

```json
{
  "error": "invalid_request"
}
```

Veillez à :

* Inclure uniquement `grant_type=client_credentials` dans le corps de la requête
* Définir le bon `Content-Type` dans l'en-tête de la requête


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://help.citrusad.com/retail-media-interface/integration/fr/data-api/api-overview/oauth-20-authentication.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
