> ## 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.

# Condivisione

> Crea, elenca e revoca link di condivisione con blob.shares, e scegli tra una condivisione e un link di downloadUrl().

Una **condivisione** è un link a un oggetto che può **scadere**, essere **revocato**, limitare il **numero di download** e, nei piani Pro ed Enterprise, richiedere una **password**. Vedi [Link e condivisione](/it/blob-reference/links-and-sharing) per il funzionamento dei link.

## Condivisione o `downloadUrl()`?

|                    | [`downloadUrl()`](/it/sdks/blob/objects#link-di-download) | `shares.create()`                                                 |
| ------------------ | --------------------------------------------------------- | ----------------------------------------------------------------- |
| Oggetto pubblico   | URL CDN permanente (`expires_at: null`)                   | Reindirizza all'URL pubblico permanente (vedi l'avviso più sotto) |
| Oggetto privato    | Link temporaneo, fino a 24 ore                            | Link di condivisione, fino a 30 giorni                            |
| Revocabile         | **No**                                                    | Sì, con `shares.revoke()`                                         |
| Limite di download | No                                                        | Sì, `max_downloads`                                               |
| Password           | No                                                        | Sì, Pro ed Enterprise                                             |

Usa `downloadUrl()` per link a breve durata che distribuisci tu stesso, e una condivisione quando devi poter ritirare il link o controllare chi lo scarica.

## Creare una condivisione

```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);
```

| Opzione         | Tipo     | Descrizione                                                                           |
| --------------- | -------- | ------------------------------------------------------------------------------------- |
| `expires_in`    | `number` | Durata del link in secondi, da 60 a 2592000 (30 giorni). Predefinito 86400.           |
| `max_downloads` | `number` | Da 1 a 10000.                                                                         |
| `password`      | `string` | Da 8 a 128 caratteri. Pro ed Enterprise; gli altri piani ricevono `UPGRADE_REQUIRED`. |

Il risultato ha `id`, `url`, `expires_at`, `max_downloads`, `password` (se ne è impostata una), `object` e `object_is_public`.

<Warning>
  Se `object_is_public` è `true`, il link di condivisione reindirizza all'**URL pubblico permanente** dell'oggetto: password, limite di download e scadenza **non proteggono nulla**, perché il file resta raggiungibile a quell'URL. Rendi prima privato l'oggetto, poi condividilo:

  ```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>

## Elencare le condivisioni

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

Restituisce un array di condivisioni, ciascuna con `id`, `url`, `object`, `expires_at`, `remaining_downloads`, `password` e `created_at`.

## Revocare una condivisione

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

Il link smette di funzionare. `revoke()` non restituisce nulla, e revocare una condivisione che non esiste fallisce con `SHARE_NOT_FOUND`.

<Tip>
  Eliminare, spostare o rinominare l'oggetto, oppure cambiarne la visibilità, interrompe anche i suoi link di condivisione: puntano al vecchio id. Crea nuove condivisioni per il nuovo id.
</Tip>

<Note>
  `shares.create()` e `shares.revoke()` hanno un **solo tentativo**. Solo `shares.list()`, una lettura, viene [ritentato](/it/sdks/blob/errors#politica-di-retry).
</Note>

Riferimento API: [Create Share](/it/blob-reference/endpoint/shares-create), [List Shares](/it/blob-reference/endpoint/shares-list), [Delete Share](/it/blob-reference/endpoint/shares-delete).
