# Jeton d'authentification

## Comment accéder aux jetons ?

Connectez-vous avec votre compte administrateur et cliquez sur *Voir mon profil*

<figure><img src="/files/Dy9gX1nxNb4HHBK8nJkq" alt="" width="344"><figcaption></figcaption></figure>

##

## Comment créer un jeton ?&#x20;

Cliquez sur le bouton *Créer et afficher un nouveau jeton*.&#x20;

<figure><img src="/files/TTv8GxzUPlW12gK2mEbI" alt=""><figcaption><p>comment crééer un jeton</p></figcaption></figure>

{% hint style="warning" %}
Attention, le jeton n'est affiché qu'à la création !&#x20;
{% endhint %}

## Comment fonctionnent les jetons ?

Les jetons peuvent être configurés pour :&#x20;

### Accéder en lecture et/ou écriture à **toutes les démarches** de l'administrateur ayant généré le jeton

<figure><img src="/files/dEJwMFyqDZkYe0EeRjan" alt=""><figcaption><p>exemple d'un jeton qui donne accès à toutes les démarches de l'administrateur</p></figcaption></figure>

### Accéder en lecture et/ou écriture uniquement à une liste fermée des démarches de l'administrateur ayant généré le jeton&#x20;

<figure><img src="/files/raG6qCtzlNBU6oBZekrB" alt=""><figcaption><p>exemple d'un jeton qui donne accès à certaines démarches de l'administrateur</p></figcaption></figure>

{% hint style="info" %}
Pour des raisons de sécurité, nous recommandons l'usage de ce type de jeton qui restreint l'accès aux démarches nécessaires.&#x20;
{% endhint %}

## Comment utiliser le jeton ?

Ce jeton doit être fourni dans l’en-tête HTTP `Authorization` de la requête.

&#x20;`Authorization: Bearer token=valeur_du_jeton`.

## GraphQL

<mark style="color:green;">`POST`</mark> `https://demarche.numerique.gouv.fr/api/v2/graphql`

Le point d’entrée de l’API GraphQL.

#### Headers

| Name                                            | Type   | Description                  |
| ----------------------------------------------- | ------ | ---------------------------- |
| Content-Type<mark style="color:red;">\*</mark>  | string | application/json             |
| Authorization<mark style="color:red;">\*</mark> | string | Le jeton de l’administrateur |

#### Request Body

| Name                                        | Type   | Description                 |
| ------------------------------------------- | ------ | --------------------------- |
| query<mark style="color:red;">\*</mark>     | string | La requête GraphQL          |
| variables<mark style="color:red;">\*</mark> | object | Les variables de la requête |

{% tabs %}
{% tab title="200 Réponse GraphQL" %}

```json
{
    "data": {
    	"demarche": {
    	    "id": "UHJvY2VkdXJlLTYyNTE1",
	    "dossiers": {
	    	"nodes": [
		    {
		        "id": "RG9zc2llci05Mzk5MTkw",
		        "demandeur": {
			    "civilite": "M",
			    "nom": "Franklin",
			    "prenom": "Benjamin"
			}
		    },
	            {
			"id": "RG9zc2llci05NjQzMDIz",
			"demandeur": {
			    "civilite": "Mme",
		            "nom": "Curie",
			    "prenom": "Marie"
			}
		    },
		    {
			"id": "RG9zc2llci0xMzI2Njg1NQ==",
                        "demandeur": {
                            "civilite": "M",
			    "nom": "Pasteur",
			    "prenom": "Louis"
			}
		    }
		]
	    }
        }
    }
}
```

{% endtab %}
{% endtabs %}

### Exemple de requête

#### Pour tester que tout fonctionne bien

Pour tester l’API, le plus simple est d’effectuer une requête [curl](https://fr.wikipedia.org/wiki/CURL) telle que ci dessous. Le principe est le même avec un autre client HTTP : remplacez **votre\_token** et **votre\_numero\_de\_demarche** par les valeurs souhaitez, et n’oubliez pas de préciser le **content-type** qui est toujours `application/json` **:**

```shell
curl 'https://demarche.numerique.gouv.fr/api/v2/graphql' \
    --header 'Authorization: Bearer <votre_token>' \
    --header 'Content-Type: application/json' \
    --data '{ "query": "query getDemarche($demarcheNumber: Int!) { demarche(number: $demarcheNumber) { id dossiers { nodes { id demandeur { ... on PersonnePhysique { civilite nom prenom } ... on PersonneMorale { siret } } } } } }", "variables": { "demarcheNumber": <votre_numero_de_demarche> } }'
```

Vous devriez alors obtenir des informations en sortie. S’il y a des dossiers dans votre démarche, cette requête vous donne les noms des demandeurs. Si la démarche s’adresse à des entreprises, vous aurez le numéro SIRET des demandeurs.

{% hint style="info" %}
Exemple si mon jeton est `A9Knc34tP==` avec le numéro de démarche `12345`:&#x20;
{% endhint %}

```sh
curl 'https://demarche.numerique.gouv.fr/api/v2/graphql' \
    --header 'Authorization: Bearer A9Knc34tP==' \
    --header 'Content-Type: application/json' \
    --data '{ "query": "query getDemarche($demarcheNumber: Int!) { demarche(number: $demarcheNumber) { id dossiers { nodes { id demandeur { ... on PersonnePhysique { civilite nom prenom } ... on PersonneMorale { siret } } } } } }", "variables": { "demarcheNumber": 12345 } }'
```

Voici la réponse de l'API pour cette requête :

```json
{
    "data": {
    	"demarche": {
    	    "id": "UHJvY2VkdXJlLTYyNTE1",
	    "dossiers": {
	    	"nodes": [
		    {
		        "id": "RG9zc2llci05Mzk5MTkw",
		        "demandeur": {
			    "civilite": "M",
			    "nom": "Franklin",
			    "prenom": "Benjamin"
			}
		    },
	            {
			"id": "RG9zc2llci05NjQzMDIz",
			"demandeur": {
			    "civilite": "Mme",
		            "nom": "Curie",
			    "prenom": "Marie"
			}
		    },
		    {
			"id": "RG9zc2llci0xMzI2Njg1NQ==",
                        "demandeur": {
                            "civilite": "M",
			    "nom": "Pasteur",
			    "prenom": "Louis"
			}
		    }
		]
	    }
        }
    }
}
```

{% hint style="warning" %}
Si vous obtenez une erreur, vérifiez que :&#x20;

* chaque paramètre `header` est correct
* il n'y a pas d'espace ou de guillemet en trop ou en moins&#x20;
* les majuscules et miniscules sont respectées
* l'url, le jeton et le numéro de démarche sont corrects
* lisez le message d'erreur et consultez nos pages [Problèmes fréquents d'authentification](/api-graphql/jeton-dauthentification/problemes-frequents.md) et [la gestion d'erreur](/api-graphql/gestion-des-erreurs.md)
  {% 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.demarches-simplifiees.fr/api-graphql/jeton-dauthentification.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.
