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

# Rinomina Data App

> Cambia il nome app (alias di routing) senza rilasciare una versione e senza toccare run in volo.

**`POST`** `https://api-datahub.octoparse.com/v1/data-apps/{app_id}/rename`

Autenticazione: API key obbligatoria (`Authorization: Bearer <API Key>`). Solo autore dell’app; gli altri ricevono `404`.

Il rename è pienamente aperto — non limitato ad app zero-release. Il nome app è un alias di routing: rename non pubblica una versione, non invalida versioni vecchie e non tocca run in volo (tutti i riferimenti durable pinnano `app_id`).

I riferimenti caller rotti sono responsabilità dello sviluppatore: i vecchi riferimenti `owner/old-name` (pin MCP, SDK, REST, URL di dettaglio) dopo il rename restituiscono un `404` pulito senza redirect. Run storiche e fatturazione mostrano il nuovo nome. Il vecchio nome non è claimable da altri nel tuo namespace, ma puoi riusarlo dopo per una nuova app — i riferimenti esterni residuali punterebbero allora alla nuova app. I consumer dovrebbero integrare tramite `app_id`.

La validazione corrisponde a quella della creazione dell'identità: regole di denominazione → parole riservate → nuovo nome ≠ nome attuale. Il conflitto con il binding storico di un'altra persona è `409 app-name-reserved`; il conflitto con un'altra delle tue app è `409 app-name-taken`.

## Richiesta

### Parametri di percorso

<ParamField path="app_id" type="string" required>
  Riferimento app.
</ParamField>

### Body della richiesta

<ParamField body="new_app_name" type="string" required>
  —
</ParamField>

### Esempio di richiesta

```bash theme={null}
curl -X POST \
  -H "Authorization: Bearer $OCTOPARSE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"app_name": "review-lookup"}' \
  "https://api-datahub.octoparse.com/v1/data-apps/carol/reviews-query/rename"
```

## Risposta

### 200 successo

```json theme={null}
{
  "data": {
    "app_id": "app_6dfe4e839ccf",
    "namespace": "carol",
    "app_name": "review-lookup",
    "previous_app_name": "reviews-query"
  }
}
```

Il payload è wrappato in `data`. Campi:

<ResponseField name="app_id" type="string" required>
  ID app stabile — invariato.
</ResponseField>

<ResponseField name="app_name" type="string" required>
  Nuovo nome.
</ResponseField>

<ResponseField name="namespace" type="string">
  Username del publisher.
</ResponseField>

### Errori

| HTTP | `code`              | `category`      | Descrizione                                                                                                               |
| ---- | ------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------- |
| 401  | `unauthorized`      | `forbidden`     | API key mancante o non valida.                                                                                            |
| 400  | `invalid-app-name`  | `invalid_input` | Il nome viola le regole di naming o è una parola riservata.                                                               |
| 409  | `app-name-reserved` | `forbidden`     | Il nome è occupato da un binding storico di un'altra persona (blocco di 30 giorni dopo un trasferimento del nome utente). |
| 409  | `app-name-taken`    | `invalid_input` | Hai già un’app con questo nome.                                                                                           |

Le risposte di errore usano `{"error": {code, category, message, retryable}}`. Vedi <a href="/docs/it/datahub/api/reference/introduction#errors">Errori</a>.

## Librerie client

Gli SDK Python e JavaScript non wrappano ancora questo endpoint. Chiama REST direttamente.
