# Jeton d'authentification

## Comment accéder aux jetons ?

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

<figure><img src="https://463284772-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L7_aKvpAJdAIEfxHudA%2Fuploads%2FfN7JCA0F6U33JXpqJ6nD%2FScreenshot%202023-12-01%20at%2011.03.59%20AM.png?alt=media&#x26;token=d29e4722-7b82-4672-b291-e855ef1c8231" 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="https://463284772-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L7_aKvpAJdAIEfxHudA%2Fuploads%2FChD1qbQDM8QHZeiTmKXC%2FScreenshot%202023-12-01%20at%2011.04.14%20AM.png?alt=media&#x26;token=58ae8599-761f-4de3-bd3e-e9339db044cd" 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="https://463284772-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L7_aKvpAJdAIEfxHudA%2Fuploads%2FGcTl36JwDPU9dV9oFOvK%2FScreenshot%202023-12-01%20at%2011.04.51%20AM.png?alt=media&#x26;token=bc01b35b-f9ca-4a05-a9ec-c69d72990047" 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="https://463284772-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L7_aKvpAJdAIEfxHudA%2Fuploads%2FUIx1TcBy8D6dvhXxKwia%2FScreenshot%202023-12-01%20at%2011.05.24%20AM.png?alt=media&#x26;token=dc46828a-f272-47da-a96f-f1a16d0c4ff7" 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](https://doc.demarches-simplifiees.fr/api-graphql/jeton-dauthentification/problemes-frequents) et [la gestion d'erreur](https://doc.demarches-simplifiees.fr/api-graphql/gestion-des-erreurs)
  {% endhint %}
