> 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-pt/conteudo/pratica/cli-examples.md).

# Exemplos de CLI

Esta prática demonstra como brincar com a API de conteúdo em um terminal. Usaremos a instância da Decentraland Foundation em `peer.decentraland.org`, e tudo o que você precisa é o `curl` ferramenta de linha de comando.

{% hint style="info" %}
Você pode usar [`httpie`](https://github.com/httpie/httpie) ou formatar respostas com [`jq`](https://github.com/stedolan/jq) para obter JSONs mais legíveis a cada solicitação. Neste guia, mostraremos documentos formatados para maior clareza.
{% endhint %}

Isto é o que faremos:

1. Consultar o status do servidor de conteúdo.
2. Localize e baixe um [snapshot](https://github.com/decentraland/docs/blob/main/contributor/practice/snapshots/README.md) com uma lista de entidades.
3. Obtenha o manifesto de uma entidade.
4. Baixe um dos arquivos da entidade.

Vamos começar consultando o status do servidor usando `/about`:

```bash
curl "https://peer.decentraland.org/about"
```

```js
{
  "healthy": true,
  "content": {
    "healthy": true,
    "version": "6.5.0",
  },
  // ... mais informações do servidor (feature flags, versões, caminhos, etc.)
}
```

Parece que o servidor está ativo e funcionando normalmente (`"healthy": true`), e está nos dando informações sobre a versão que implementa para cada conjunto de recursos, além de algumas opções de configuração da instância.

Estamos interessados em baixar algum conteúdo, então vamos explorar os [snapshots](https://github.com/decentraland/docs/blob/main/contributor/practice/snapshots/README.md) para obter alguns identificadores via `/content/snapshots`.

```bash
curl "https://peer.decentraland.org/content/snapshots"
```

```js
[
  {
    "hash": "bafybeia6qoum64psaooiqo3f45i6hykfwx723uc236waub3gng2naof224",
    "timeRange": {
      "initTimestamp": 1689120000000,
      "endTimestamp": 1689206400000
    },
    "replacedSnapshotHashes": [],
    "numberOfEntities": 981,
    "generationTimestamp": 1689219353866
  },
  // ...mais arquivos de snapshot
]
```

Cada item no array descreve um [snapshot](https://github.com/decentraland/docs/blob/main/contributor/practice/snapshots/README.md). Vamos pegar um `hash` e baixar o arquivo do `/content/contents` endpoint.

```bash
curl "https://peer.decentraland.org/content/contents/bafybeia6qoum64psaooiqo3f45i6hykfwx723uc236waub3gng2naof224" > snapshot
```

{% hint style="info" %}
Você pode experimentar snapshots maiores, como no [exemplo avançado em python](https://github.com/decentraland/documentation/blob/main/content/contributor/content/practice/snapshots.py). Para testar isso interativamente, provavelmente você vai querer um dos menores.
{% endhint %}

Podemos verificar que baixamos o arquivo correto em um formato que conhecemos, olhando a primeira linha:

```bash
head -n1 snapshot
```

```
### Decentraland json snapshot
```

Ótimo! Agora temos um resumo local de todas as entidades capturadas nesse snapshot. Vamos pegar a primeira listada (a segunda linha do arquivo), um `perfil`:

```bash
tail -n+2 snapshot | head -n1 
```

```js
{
  "entityId": "bafkreif7hjremkxlvixyxoxnoo7bdcnf7qqp245sjb2pag2nk3n6o6yc4c",
  "entityType": "profile",
  "pointers": [
    "0x271cdb3b1c792c336c4b2bdc52c4f415d0046b92"
  ],
  "authChain": [
    // Veja https://docs.decentraland.org/contributor/auth/authchain/
  ],
  "entityTimestamp": 1689120135624
}
```

{% hint style="info" %}
Como snapshots expiram e entidades são substituídas, os identificadores neste artigo não funcionarão. Acompanhe no seu terminal para obter IDs de arquivos reais e ativos.
{% endhint %}

Esta é uma informação que poderíamos salvar. Usaremos o `entityId` para baixar o manifesto JSON da entidade, mas persistir os [pointer](https://github.com/decentraland/docs/blob/main/contributor/practice/pointers/README.md) listados é uma boa ideia se quisermos localizar esta entidade e quaisquer versões atualizadas no futuro.

Também temos o [auth\_chain](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#ownership) usado para assinar esta entidade, e poderíamos validar as assinaturas listadas para verificar a autenticidade de quaisquer arquivos relacionados que baixarmos.

Vamos obter o manifesto da entidade. Lembre-se, o `entityId` é o [file identifier](https://github.com/decentraland/docs/blob/main/contributor/practice/\(filesystem/README.md#identifiers\)) de que precisamos, e podemos usar o `/content/contents` endpoint novamente:

```bash
curl "https://peer.decentraland.org/content/contents/bafkreigcreq7rv6b2wf4zc4fsnif43ziwb4q46v4qhsewpf7gbsyxew3om"
```

```js
{
  "version": "v3",
  "type": "profile",
  "pointers": [
    "0x273cdb3b1c791c336c4b2bcc52c4f415d0046b91"
  ],
  "timestamp": 1689120135624,
  "content": [
    {
      "file": "body.png",
      "hash": "bafybeibzaqkirz7fk474xvyhurho5xviphs7anawaceb6gscuigia4x33u"
    },
    // ...mais arquivos
  ],
  "metadata": {
    // ...avatars e outras informações
  }
}
```

Esta `perfil` entidade tem todas as informações que os World Explorers usam para renderizar e animar um jogador. Se estivermos interessados em obter um dos arquivos empacotados, podemos continuar a usar o `/content/contents` endpoint.

Se olharmos o campo `content` , podemos ver o `hash` do arquivo internamente chamado `body.png`. Vamos pegá-lo:

```bash
curl "https://peer.decentraland.org/content/contents/bafybeibzaqkirz7fk474xvyhurho5xviphs7anawaceb6gscuigia4x33u" > body.png
```

Podemos abrir este `png` arquivo em um visualizador de imagens ou navegador web e conferir o trabalho do autor. Legal!


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.decentraland.org/contributor/contributor-pt/conteudo/pratica/cli-examples.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
