> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/contributor/contributor-es/contenido/entities.md).

# Entidades

Cada pieza individual de contenido en el mundo (como una scene o un wearable) se llama una *entidad*.

Las entidades son paquetes inmutables de [files](https://github.com/decentraland/docs/tree/main/contributor/filesystem.md) con un identificador único de cadena, derivado de forma determinista de los datos contenidos, que puede usarse para descubrir y descargar los archivos relacionados desde el content server.

El archivo principal de una entidad es el *manifest*, un documento JSON que describe las propiedades generales de la entidad, así como atributos especiales para cada [tipo](#types). El identificador de una entidad es en realidad el [identificador de archivo](https://github.com/decentraland/docs/tree/main/contributor/filesystem.md#identifiers) de este manifiesto.

Como son inmutables, las entidades no pueden actualizarse en el sentido tradicional. En su lugar, se reemplazan por nuevas entidades detectables usando el mismo puntero estable [pointer](https://github.com/decentraland/docs/tree/main/contributor/pointers.md)puntero *activa*.

Cada entidad es firmada por un propietario (asociado a una cuenta de Ethereum). El propietario puede luego usar las mismas signing keys para subir una nueva versión de la entidad e indicar que reemplaza a la anterior. Los content servers validan estas firmas antes de aceptar nuevas entidades, ya vengan directamente de un client o hayan sido reenviadas por otro server.

Puedes ver las entidades realmente desplegadas en el [práctica](https://github.com/decentraland/docs/tree/main/contributor/practice.md) sección.

### Tipos de entidades <a href="#types" id="types"></a>

Hay siete tipos de entidades:

* [**Scenes**](/contributor/contributor-es/contenido/tipos-de-entidad/scenes.md): espacios virtuales en el mundo con sus propios objetos y comportamiento.
* [**Perfiles**](/contributor/contributor-es/contenido/tipos-de-entidad/profiles.md): información sobre un jugador específico, como su nombre y avatar.
* [**Wearables**](/contributor/contributor-es/contenido/tipos-de-entidad/wearables.md): ropa y objetos que los jugadores pueden agregar a sus avatares.
* [**Emotes**](/contributor/contributor-es/contenido/tipos-de-entidad/emotes.md): animaciones que el avatar de un jugador puede realizar.
* [**Tiendas**](/contributor/contributor-es/contenido/tipos-de-entidad/stores.md): sitios de marketplace para wearables y emotes que los jugadores pueden comprar.
* [**Conjuntos**](/contributor/contributor-es/contenido/tipos-de-entidad/outfits.md): conjuntos guardados para un jugador específico.

Todos los tipos siguen los mismos procedimientos para creación, identificación, propiedad y alojamiento.

### Propiedades comunes <a href="#properties" id="properties"></a>

Cada entidad tiene ciertas propiedades comunes en su manifiesto, aplicables a todos los tipos. Estos campos de nivel superior siempre estarán presentes:

| Campo             | Valor                                                                                                                                                        |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `tipo`            | Uno de `escena`, `perfil`, `wearable`, `emote`, `store` o `outfits`.                                                                                         |
| `pointers`        | Un array de [pointers](https://github.com/decentraland/docs/tree/main/contributor/pointers.md) asociado a esta entidad.                                      |
| `marca de tiempo` | La marca temporal Unix UTC en la que se cargó esta entidad.                                                                                                  |
| `contenido`       | Un array de referencias a contenido adicional [files](https://github.com/decentraland/docs/tree/main/contributor/filesystem.md) en el paquete de la entidad. |
| `metadatos`       | Un objeto con información específica de este tipo de entidad.                                                                                                |

La estructura y los valores del `metadatos` campo para cada tipo se detallan en sus páginas específicas. El `pointers` array también tiene contenidos diferentes según el tipo.

{% hint style="info" %}
Los manifiestos de entidades antiguos pueden contener el `version` campo, obsoleto en [ADR-45](https://adr.decentraland.org/adr/ADR-45). Puedes ignorarlo con seguridad, ya que el `marca de tiempo` campo version se usa ahora para el versionado.
{% endhint %}

Este es un manifiesto JSON típico que describe una entidad:

```json
{
  "type": "wearable",
  "pointers": ["urn:decentraland:matic:collections-v2:0xbdf21eaf54ebf4a6cadc2dcb371df7afce98bc1d:0"],
  "timestamp": 1628181913506,
  "content": [
    // ...referencias de archivos, ver abajo
  ],
  "metadata": {
    // ...campos específicos para este tipo de entidad, ver la página correspondiente
  }
}
```

Puedes encontrar los esquemas de estas estructuras JSON, junto con otros objetos en el protocolo de Decentraland, en el [repositorio Common Schemas](https://github.com/decentraland/common-schemas) repositorio.

{% hint style="info" %}
Al revisar manifiestos de entidades, puedes encontrar campos sin documentar. Esto se debe a que el esquema de entidades permite propiedades personalizadas adicionales, establecidas libremente por el propietario.
{% endhint %}

### Files <a href="#files" id="files"></a>

Como se mencionó arriba, todas las entidades tienen al menos un archivo asociado: el manifiesto JSON que describe a la entidad misma. El identificador de la entidad es en realidad el [identificador de archivo](https://github.com/decentraland/docs/tree/main/contributor/filesystem.md#identifiers) identificador de archivo de este archivo especial.

El `contenido` dentro de cada manifiesto es un array de referencias a archivos adicionales. Estos suelen ser activos, como modelos 3D y animaciones, o scripts para scenes.

Todos los archivos se almacenan en el [sistema de archivos distribuido](https://github.com/decentraland/docs/tree/main/contributor/filesystem.md), y cada elemento del array tiene dos propiedades:

| Campo  | Valor                                                                                                                                                       |
| ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `file` | El nombre interno usado por los archivos de esta entidad para referenciarse entre sí.                                                                       |
| `hash` | El [identificador global](https://github.com/decentraland/docs/tree/main/contributor/filesystem.md#identifiers)de este archivo, único en todo el contenido. |

Así es como suele verse dentro del `contenido` campo:

```json
[
  {
    "file": "thumbnail.png",
    "hash": "bafkreiglecvpnqibvf6pltcnid5nhbx3caj77lu4ia4xitpmp3lrcouuhm",
  },
  {
    "file": "model.glb",
    "hash": "bafkreic2i3awiu7srhatf3k47l3c5lmadisznjigppor2a35saosjfbo25",
  },
  // ...más archivos
]
```

{% hint style="info" %}
El `file` El valor del campo siempre va en minúsculas, para evitar problemas al construir entidades en distintos sistemas operativos, donde el uso de mayúsculas y minúsculas en los nombres de archivo puede ser importante.
{% endhint %}

La vida útil de un archivo está ligada a la entidad que lo contiene. Para las entidades activas (es decir, que aún no han sido reemplazadas por su propietario), los content servers deben, por protocolo, conservar todos los archivos asociados. Si la entidad se elimina, los archivos pueden conservarse o descartarse a discreción del server.

### Propiedad y autenticación <a href="#ownership" id="ownership"></a>

Para probar la propiedad y autorizar acciones relacionadas con entidades, [cadena de autenticación](https://github.com/decentraland/docs/tree/main/auth/authchain.md) se usa el mecanismo

El [`decentraland-crypto`](https://github.com/decentraland/decentraland-crypto) el repositorio contiene la implementación de todos los procedimientos criptográficos.

### Descubrir y descargar entidades

Los content servers se pueden usar para localizar entidades usando [pointers](https://github.com/decentraland/docs/tree/main/contributor/pointers.md)pointers

* Para resolver un pointer en un ID de entidad, puedes usar [`/entities/active`](https://decentraland.github.io/catalyst-api-specs/#tag/Content-Server/operation/getListOfEntities) endpoint.
* Usando el ID de entidad, puedes descargar el manifiesto con [`/contents/<id>`](https://decentraland.github.io/catalyst-api-specs/#tag/Content-Server/operation/getContentFile) endpoint.
* Para obtener todas las entidades activas de un cierto tipo, comienza descargando un [instantánea](https://github.com/decentraland/docs/tree/main/contributor/snapshots.md).

Consulta la [práctica](https://github.com/decentraland/docs/tree/main/contributor/practice.md) sección para ejemplos y guías.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.decentraland.org/contributor/contributor-es/contenido/entities.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
