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

# Renombrar Data App

> Cambia el nombre de la app (alias de enrutado) sin publicar una versión ni afectar ejecuciones en vuelo.

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

Autenticación: se requiere API key (`Authorization: Bearer <API Key>`). Solo el autor de la app; el resto recibe `404`.

El rename está totalmente abierto — no se limita a apps sin releases. El nombre es un alias de enrutado: rename no publica versión, no invalida versiones antiguas y no afecta ejecuciones en vuelo (todas las referencias durables fijan `app_id`).

Las referencias rotas del llamador son responsabilidad del desarrollador: las referencias antiguas `owner/old-name` no se reescriben. Tras un rename, actualice las referencias almacenadas al `app_id` estable o al nuevo nombre.

La validación coincide con create-identity: reglas de nombre → palabras reservadas → nombre nuevo ≠ actual. Conflicto con el binding histórico de otra persona es `409 app-name-reserved`; con otra app suya, `409 app-name-taken`.

## Solicitud

### Parámetros de ruta

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

### Cuerpo de la solicitud

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

### Ejemplo de solicitud

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

## Respuesta

### 200 correcto

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

La carga útil va envuelta en `data`. Campos:

<ResponseField name="app_id" type="string" required>
  Id estable de la app — sin cambios.
</ResponseField>

<ResponseField name="app_name" type="string" required>
  Nombre nuevo.
</ResponseField>

<ResponseField name="namespace" type="string">
  Nombre de usuario del publicador.
</ResponseField>

### Errores

| HTTP | `code`              | `category`      | Descripción                                                                                                        |
| ---- | ------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------ |
| 401  | `unauthorized`      | `forbidden`     | API key ausente o no válida.                                                                                       |
| 400  | `invalid-app-name`  | `invalid_input` | El nombre no cumple las reglas de nomenclatura o es una palabra reservada.                                         |
| 409  | `app-name-reserved` | `forbidden`     | El nombre lo retiene un binding histórico de otra persona (congelación de 30 días tras transferencia de username). |
| 409  | `app-name-taken`    | `invalid_input` | Ya tiene una app con este nombre.                                                                                  |

Las respuestas de error usan `{"error": {code, category, message, retryable}}`. Véase <a href="/docs/es/datahub/api/reference/introduction#errors">Errores</a>.

## Bibliotecas cliente

Los SDK de Python y JavaScript aún no encapsulan este endpoint. Llame a REST directamente.
