> 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 trabalhar com a API de conteúdo num terminal. Vamos usar a instância da Decentraland Foundation em `peer.decentraland.org`, e tudo o que precisa é da `curl` ferramenta de linha de comando.

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

Isto é o que vamos fazer:

1. Consultar o estado do servidor de conteúdo.
2. Localize e descarregue um snapshot diário [snapshot](https://github.com/decentraland/docs/tree/main/contributor/practice/snapshots/README.md) com uma lista de entities.
3. Obtenha o manifesto de uma entidade.
4. Descarregue um dos ficheiros da entidade.

Vamos começar por consultar o estado 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 a funcionar normalmente (`"healthy": true`), e está a fornecer-nos informações sobre a versão que implementa para cada conjunto de funcionalidades, além de algumas opções de configuração da instância.

Estamos interessados em descarregar algum conteúdo, por isso vamos explorar os [snapshots](https://github.com/decentraland/docs/tree/main/contributor/practice/snapshots/README.md) para obtermos alguns identificadores através de `/content/snapshots`.

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

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

Cada item no array descreve um [snapshot](https://github.com/decentraland/docs/tree/main/contributor/practice/snapshots/README.md). Vamos obter um `hash` e descarregar o ficheiro a partir de `/content/contents` endpoint.

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

{% hint style="info" %}
Pode experimentar com snapshots maiores, como no [exemplo avançado em Python](https://github.com/decentraland/documentation/blob/main/content/contributor/content/practice/snapshots.py). Para experimentar isto de forma interativa, provavelmente vai querer um dos mais pequenos.
{% endhint %}

Podemos verificar que descarregámos o ficheiro certo num formato que conhecemos, olhando para a primeira linha:

```bash
head -n1 snapshot
```

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

Ótimo! Agora temos um resumo local de todas as entidades que foram capturadas nesse snapshot. Vamos pegar na primeira listada (a segunda linha no ficheiro), uma `perfil`:

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

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

{% hint style="info" %}
Como os snapshots expiram e as entidades são substituídas, os identificadores neste artigo não vão funcionar. Acompanhe na sua linha de comando para obter IDs de ficheiro reais e ativos.
{% endhint %}

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

Também temos o [serializada em JSON](https://github.com/decentraland/docs/tree/main/contributor/entities/README.md#ownership) usado para assinar esta entidade, e poderíamos validar as assinaturas listadas para verificar a autenticidade de quaisquer ficheiros relacionados que descarreguemos.

Vamos obter o manifesto da entidade. Lembre-se, o `entityId` é o [identificador do file](https://github.com/decentraland/docs/tree/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"
    },
    // ...more files
  ],
  "metadata": {
    // ...avatares e outras informações
  }
}
```

Esta `perfil` entidade contém todas as informações que os Exploradores do Mundo usam para renderizar e animar um avatar. Se estivermos interessados em obter um dos ficheiros empacotados, podemos continuar a usar o `/content/contents` endpoint.

Se olharmos para o `content` campo, podemos ver o `hash` do ficheiro internamente chamado `body.png`. Vamos obtê-lo:

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

Podemos abrir este `png` ficheiro num visualizador de imagens ou navegador web, e ver o trabalho do autor. Excelente!


---

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