> For the complete documentation index, see [llms.txt](https://gouv-nc.gitbook.io/doc.demarches-simplifiees.gouv.nc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gouv-nc.gitbook.io/doc.demarches-simplifiees.gouv.nc/api-graphql/jeton-dauthentification.md).

# Jeton d'authentification

## Comment accéder aux jetons ?

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

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

##

## Comment créer un jeton ?

Cliquez sur le bouton *Créer et afficher un nouveau jeton*.

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

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

## Comment fonctionnent les jetons ?

Les jetons peuvent être configurés pour :

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

<figure><img src="/files/2kSmW6gH34bC6yGSdDRT" 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

<figure><img src="/files/rWMGnFz1ZWzUJlgNirzJ" 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.
{% endhint %}

## Comment utiliser le jeton ?

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

`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`:
{% 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 :

* chaque paramètre `header` est correct
* il n'y a pas d'espace ou de guillemet en trop ou en moins
* 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](/doc.demarches-simplifiees.gouv.nc/api-graphql/jeton-dauthentification/problemes-frequents.md) et [la gestion d'erreur](/doc.demarches-simplifiees.gouv.nc/api-graphql/gestion-des-erreurs.md)
  {% endhint %}
