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

# Partage

> Créez, listez et révoquez des liens de partage avec blob.shares, et choisissez entre un partage et un lien downloadUrl().

Un **partage** est un lien vers un objet qui peut **expirer**, être **révoqué**, limiter le **nombre de téléchargements** et, sur Pro et Enterprise, demander un **mot de passe**. Voir [Liens et partage](/fr/blob-reference/links-and-sharing) pour le comportement des liens.

## Partage ou `downloadUrl()` ?

|                           | [`downloadUrl()`](/fr/sdks/blob/objects#liens-de-téléchargement) | `shares.create()`                                                         |
| ------------------------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------- |
| Objet public              | URL CDN permanente (`expires_at: null`)                          | Redirige vers l'URL publique permanente (voir l'avertissement ci-dessous) |
| Objet privé               | Lien temporaire, jusqu'à 24 heures                               | Lien de partage, jusqu'à 30 jours                                         |
| Révocable                 | **Non**                                                          | Oui, avec `shares.revoke()`                                               |
| Limite de téléchargements | Non                                                              | Oui, `max_downloads`                                                      |
| Mot de passe              | Non                                                              | Oui, Pro et Enterprise                                                    |

Utilisez `downloadUrl()` pour des liens de courte durée que vous distribuez vous-même, et un partage lorsque vous devez pouvoir retirer le lien ou contrôler qui télécharge.

## Créer un partage

```typescript theme={"system"}
const share = await blob.shares.create(id, {
    expires_in: 86400,     // seconds, 60 to 2592000 (default 86400)
    max_downloads: 10,     // 1 to 10000
    password: "secret123", // 8 to 128 characters, Pro and Enterprise
});

console.log(share.url);
```

| Option          | Type     | Description                                                                               |
| --------------- | -------- | ----------------------------------------------------------------------------------------- |
| `expires_in`    | `number` | Durée de vie du lien en secondes, de 60 à 2592000 (30 jours). 86400 par défaut.           |
| `max_downloads` | `number` | De 1 à 10000.                                                                             |
| `password`      | `string` | De 8 à 128 caractères. Pro et Enterprise ; les autres plans reçoivent `UPGRADE_REQUIRED`. |

Le résultat contient `id`, `url`, `expires_at`, `max_downloads`, `password` (indique si un mot de passe est défini), `object` et `object_is_public`.

<Warning>
  Si `object_is_public` vaut `true`, le lien de partage redirige vers l'**URL publique permanente** de l'objet : le mot de passe, la limite de téléchargements et l'expiration **ne protègent rien**, car le fichier reste accessible à cette URL. Rendez d'abord l'objet privé, puis partagez-le :

  ```typescript theme={"system"}
  const [result] = await blob.update(id, { private: true });
  if (result.ok) {
      id = result.id; // the id changes
      const share = await blob.shares.create(id, { max_downloads: 1 });
  }
  ```
</Warning>

## Lister les partages

```typescript theme={"system"}
const shares = await blob.shares.list();
```

Renvoie un tableau de partages, chacun avec `id`, `url`, `object`, `expires_at`, `remaining_downloads`, `password` et `created_at`.

## Révoquer un partage

```typescript theme={"system"}
await blob.shares.revoke(share.id);
```

Le lien cesse de fonctionner. `revoke()` ne renvoie rien, et révoquer un partage qui n'existe pas échoue avec `SHARE_NOT_FOUND`.

<Tip>
  Supprimer, déplacer ou renommer l'objet, ou modifier sa visibilité, casse aussi ses liens de partage : ils pointent vers l'ancien identifiant. Créez de nouveaux partages pour le nouvel identifiant.
</Tip>

<Note>
  `shares.create()` et `shares.revoke()` ont droit à **une seule tentative**. Seule `shares.list()`, une lecture, fait l'objet de [nouvelles tentatives](/fr/sdks/blob/errors#politique-de-nouvelles-tentatives).
</Note>

Référence de l'API : [Créer un partage](/fr/blob-reference/endpoint/shares-create), [Lister les partages](/fr/blob-reference/endpoint/shares-list), [Supprimer un partage](/fr/blob-reference/endpoint/shares-delete).
