> ## Documentation Index
> Fetch the complete documentation index at: https://www.octoparse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Accorder l’accès

> Partager une app point à point avec un utilisateur précis. Idempotent.

**`PUT`** `https://api-datahub.octoparse.com/v1/data-apps/{app_id}/grants/{username}`

Authentification : clé API requise (`Authorization: Bearer <API Key>`). Auteur de l’app uniquement ; les autres reçoivent `404`.

Ouvre l’app à un utilisateur précis (idempotent). N’a d’effet que quand `scope=shared`. Les utilisateurs autorisés peuvent lire le détail et démarrer des exécutions ; la recherche market ne les liste pas (utilisez `shared_with=me`).

## Requête

### Paramètres de chemin

<ParamField path="app_id" type="string" required>
  Référence d’app.
</ParamField>

<ParamField path="username" type="string" required>
  Nom d’utilisateur à qui accorder.
</ParamField>

### Exemple de requête

```bash theme={null}
curl -X PUT \
  -H "Authorization: Bearer $OCTOPARSE_API_KEY" \
  "https://api-datahub.octoparse.com/v1/data-apps/carol/reviews-query/grants/dave"
```

## Réponse

### 200 succès

```json theme={null}
{
  "data": {
    "ok": true
  }
}
```

La charge utile est encapsulée dans `data`. Champs :

<ResponseField name="ok" type="boolean">
  Toujours `true`.
</ResponseField>

### Erreurs

| HTTP | `code`         | `category`  | Description                    |
| ---- | -------------- | ----------- | ------------------------------ |
| 401  | `unauthorized` | `forbidden` | Clé API manquante ou invalide. |

Les réponses d’erreur utilisent `{"error": {code, category, message, retryable}}`. Voir <a href="/docs/fr/datahub/api/reference/introduction#errors">Erreurs</a>.

## Bibliothèques clientes

Les SDK Python et JavaScript n’encapsulent pas encore cet endpoint. Appelez REST directement.
