> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Publique seu primeiro conteúdo gerado pelo usuário

> Publique conteúdo gerado pelo usuário no PlayFab Economy v2 com o Postman ou o Game Manager, usando CreateUploadUrls, o Armazenamento de Blobs do Azure e as APIs de itens de rascunho.

<Info>
  O Economy v2 agora está em disponibilidade geral. Para obter suporte e enviar comentários, acesse o [Fórum do PlayFab](https://community.playfab.com).
</Info>

Este tutorial orienta você na publicação de UGC com conteúdo por meio das APIs e da experiência do usuário do Game Manager, com mais detalhes do que o início rápido.

## Requisitos

* Uma [conta de desenvolvedor do PlayFab](https://developer.playfab.com)
* Um título com UGC habilitado

## Por meio de APIs

Nesta seção, usaremos as [Coleções do Postman](/pt-BR/services/playfab/sdks/postman/postman-quickstart) para interagir com as APIs de UGC do PlayFab, mas você pode usar qualquer um dos nossos [SDKs](/pt-BR/services/playfab/sdks/playfab-sdk-intro).

### Criar URLs de blob

* O sistema de UGC funciona com o Modelo de Entidades do PlayFab, portanto, precisamos usar tokens de entidade em vez de tíquetes de sessão para chamar essas APIs. Você pode aprender a obter um token de entidade de título no [Início rápido das Coleções do Postman](/pt-BR/services/playfab/sdks/postman/postman-quickstart).

* O sistema de UGC usa o [Armazenamento de Blobs do Azure](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction) para armazenar todo o conteúdo (arquivos e imagens) associado ao UGC do seu título. Para carregar o conteúdo, primeiro precisamos chamar a API `CreateUploadUrls`, passando os nomes e tamanhos dos arquivos (em bytes) para criar os novos blobs. Por exemplo, se eu quisesse carregar um arquivo de texto e uma imagem PNG, passaria o seguinte no corpo da solicitação:

  ```JSON theme={null}
  {
    "Files": [
      {
        "FileName": "HelloWorld.txt",
        "FileSize": 12
      },
      {
        "FileName": "PlayFabLogo.png",
        "FileSize": 20725
      }
    ]
  }
  ```

* A resposta inclui um `Id` e uma `Url` para cada parte do conteúdo:

  ```JSON theme={null}
  {
      "code": 200,
      "status": "OK",
      "data": {
          "UploadUrls": [
              {
                  "Id": "[Content ID]",
                  "Url": "[Content Url + '?' + Token]",
                  "FileName": "HelloWorld.txt"
              },
              {
                  "Id": "[Image ID]",
                  "Url": "[Image Url + '?' + Token]",
                  "FileName": "PlayFabLogo.png"
              }
          ]
      }
  }
  ```

<Note>
  Cada token de criação (retornado no campo "Url" da resposta) é válido por 6 horas; depois disso, você não poderá carregar conteúdo para o blob. Se você não tiver carregado nenhum conteúdo para o blob, ele será limpo pelo nosso serviço e você precisará criar um novo blob chamando `CreateUploadUrls` novamente. Essa URL também não permitirá acesso ao conteúdo até que ele tenha sido carregado em um item de rascunho, onde receberá uma URL diferente (agora acessível publicamente)
</Note>

<Note>
  Cada blob deve ser usado em apenas **um** item. Se quiser que um conteúdo se repita em vários itens, você deverá carregar o conteúdo novamente em blobs diferentes.
</Note>

### Carregar conteúdo para os blobs

Há algumas maneiras diferentes de carregar seu conteúdo para essas URLs.

#### Por meio do Postman

* Crie uma solicitação `PUT` com a URL gerada pela chamada a `CreateUploadUrls` e adicione `comp: blob` e `x-ms-blob-type: blockblob` como cabeçalhos:
  <img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy-v2/tutorials/publish-ugc-postman-public-ugc-example.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=ec80f04739aa449009946c6f34bc3223" alt="Exemplo de publicação no Postman" width="1058" height="634" data-path="images/playfab/economy-monetization/economy-v2/tutorials/publish-ugc-postman-public-ugc-example.png" />

* Em seguida, você pode carregar o arquivo selecionando *binary* como o tipo de corpo:
  <img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy-v2/tutorials/publish-ugc-postman-upload-binary.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=426a8a5b3178b8053ae0063a1f5d6dd0" alt="Carregamento binário no Postman" width="1010" height="265" data-path="images/playfab/economy-monetization/economy-v2/tutorials/publish-ugc-postman-upload-binary.png" />

#### Por meio do AzCopy

* Outra opção é usar a ferramenta AzCopy. Você pode baixar a ferramenta e [começar a usar o AzCopy](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-v10) aqui.
* No terminal de sua preferência, chame o azcopy com os seguintes parâmetros:

  ```powershell theme={null}
  [relative path to azcopy.exe] copy [relative path to local content] [Url + '?' + Token]
  ```

### Criar o UGC de rascunho

* Agora que os arquivos e imagens foram carregados com êxito, você pode chamar `CreateDraftItem`, passando as URLs do conteúdo e das imagens, para criar seu primeiro item no catálogo de rascunho:

  ```JSON theme={null}
  {
    "Item": {
      "Type": "ugc",
      "Title": {
        "NEUTRAL": "Hello World!"
      },
      "Description": {
        "NEUTRAL": "My first UGC item (with content!)"
      },
      "ContentType": "Game Item",
      "IsHidden": false,
      "Contents": [
        {
          "Id": "[Content ID]",
          "Url": "[Content Url]"
        }
      ],
      "Images": [
        {
          "Id": "[Image ID]",
          "Type": "Thumbnail",
          "Url": "[Image Url]"
        }
      ]
    },
    "Publish": false,
    "AllowOverwrite": false
  }
  ```

<Note>
  Ao carregar imagens para itens, cada imagem deve ser classificada com um parâmetro `Type`. Ele pode ser "Thumbnail" ou "Screenshot". Cada item é limitado a apenas uma imagem do tipo "Thumbnail" e, por padrão, as [Pesquisas](/pt-BR/services/playfab/economy-monetization/economy-v2/catalog/search#select) retornarão a imagem "Thumbnail" (se existir).
</Note>

* A resposta retorna os metadados que você passou, junto com um ID de item:

  ```json theme={null}
  {
  "code": 200,
  "status": "OK",
  "data": {
      "Item": {
          ...
          "Id": "e5427509-1b72-4ee1-9e6c-03fc055a94f3",
          ...
      }
    }
  }
  ```

* O item de UGC de rascunho agora existe no catálogo de rascunho! Enquanto o item de UGC não for publicado, ele não poderá ser pesquisado por meio do catálogo público. Você pode encontrar esse item de UGC chamando qualquer uma das seguintes APIs:

  * `GetDraftItem`, passando o ID do item obtido na resposta de `CreateDraftItem`
  * `GetDraftItems`, passando uma lista de IDs de itens conhecidos
  * `GetEntityDraftItems`, passando um ID de entidade e/ou o ContinuationToken de cada resposta anterior para percorrer a lista de itens de rascunho

<Note>
  Se quisesse publicar imediatamente, você poderia alterar o campo `Publish` para true
</Note>

* Quando estiver pronto para publicar o item de UGC, chame `PublishDraftItem`, passando o ID do item (obtido na resposta de `CreateDraftItem`).
* Se o seu item de UGC contiver vários arquivos particularmente grandes, a publicação do item poderá levar algum tempo e, quando muitos outros jogadores estiverem carregando conteúdo simultaneamente, esse processo poderá demorar ainda mais. Você pode verificar o status da publicação chamando `GetItemPublishStatus`, passando o ID do item (obtido na resposta de `CreateDraftItem`). Há alguns status possíveis:
  * `Succeeded` - o item de UGC foi publicado com êxito
  * `Pending` - o item de UGC ainda está em processo de publicação
  * `Failed` - a publicação do item de UGC falhou e ele não será publicado até que o conteúdo problemático seja modificado
  * `Unknown` - este é o status padrão e será retornado antes de chamar `PublishDraftItem` no item de UGC
  * `Canceled` - ocorreu um erro interno; tente publicar o item novamente (se você vir esse status várias vezes, entre em contato com a equipe de engenharia do PlayFab)
* Depois que o item de UGC for publicado com êxito, você poderá pesquisá-lo por meio de `SearchItems` ou obtê-lo diretamente por meio de `GetItem` se tiver o ID do item.
* Você pode fazer alterações no item de UGC antes ou depois da publicação fazendo o seguinte:
  * Chame `GetDraftItem`, passando o ID do item (obtido na resposta de `CreateDraftItem`)
  * Copie os dados do item de UGC (tudo no campo `data`)
  * Chame `UpdateDraftItem`, passando os dados modificados do item de UGC
  * Se quiser atualizar algum dos arquivos ou imagens, você precisará criar outro blob chamando `CreateUploadUrls` novamente
  * Publique novamente o item de UGC chamando `PublishDraftItem`

## Por meio do Game Manager

Nesta seção, criaremos um item de UGC inteiramente na experiência do Game Manager, sem necessidade de código!

### Criar o item de catálogo de rascunho

* Navegue até a página de UGC selecionando **Economy** > **Catalog (v2)**.

* Selecione **New Item**.

* Preencha os metadados apropriados para o seu item de UGC:

  | Nome do campo | Valor |
  | - | - |
  | Entity type | title\_player\_account |
  | Entity ID | \[ID do seu jogador] |
  | Content type | Game Item |
  | Start date | \[qualquer data no passado] |
  | Title | `{ "NEUTRAL": "Hello World!" }` |
  | Description | `{ "NEUTRAL": "My first UGC item (with content!)" }` |

  <img src="https://mintcdn.com/microsoft-4404708b/Oa_DP1q6U1lat7c2/images/playfab/economy-monetization/economy-v2/tutorials/publish-ugc-new-ugc-item.png?fit=max&auto=format&n=Oa_DP1q6U1lat7c2&q=85&s=69782b702c8090b62e6baae411bb684b" alt="Novo item de UGC" width="1200" height="616" data-path="images/playfab/economy-monetization/economy-v2/tutorials/publish-ugc-new-ugc-item.png" />

* Nas seções **Files** e **Images**, carregue o conteúdo apropriado selecionando o botão **Upload**.

* Selecione **Save and publish**.

* O item de UGC agora será criado automaticamente como um item de rascunho e publicado no catálogo público. Você poderá encontrar esse item na tabela com outros itens de UGC publicados.

<Note>
  No momento, não há como verificar o item de rascunho ou o status de publicação no Game Manager; isso só pode ser feito por meio das APIs
</Note>

* Se quiser fazer alterações no item de UGC publicado, você pode fazer o seguinte:
  * Selecione o item de UGC publicado na tabela
  * Faça as edições apropriadas
  * Selecione **Save and publish**

## Solução de problemas

* Invalid Request - The content type 'Game Item' isn't supported.
  * Se tipos de conteúdo tiverem sido especificados na configuração do seu título (por meio de `GetCatalogConfig`/`UpdateCatalogConfig` ou no Game Manager, na guia **Economy Settings**), você precisará adicionar **Game Item** à lista ou alterar o tipo de conteúdo para um que seu título já ofereça suporte
* Invalid Request - This title isn't configured to use this service.
  * Seu título está com o UGC desabilitado no momento. Você pode habilitá-lo atualizando a configuração do título (por meio de `GetCatalogConfig`/`UpdateCatalogConfig`, no Game Manager na guia **Economy Settings** ou navegando até a guia **Economy > Catalog (Preview)** e selecionando **Enable**)

## Próximas etapas

Agora você tem itens de UGC publicados no seu catálogo! Você pode usar `SearchItems` para criar experiências de descoberta de conteúdo para seus jogadores.

<Note>
  \[!div class="nextstepaction"] [Pesquisar >](/pt-BR/services/playfab/economy-monetization/economy-v2/catalog/search)
</Note>


## Related topics

- [Início rápido do User Generated Content (UGC)](/pt-BR/services/playfab/economy-monetization/economy-v2/ugc/quickstart.md)
- [Documentação do PlayFab UGC](/pt-BR/services/playfab/economy-monetization/economy-v2/ugc/index.md)
- [PlayFab User Generated Content](/pt-BR/services/playfab/economy-monetization/economy-v2/ugc/overview.md)
- [Documentação do PlayFab Economy v2](/pt-BR/services/playfab/economy-monetization/index.md)
- [Moderar seu conteúdo gerado pelo usuário](/pt-BR/services/playfab/economy-monetization/economy-v2/ugc/moderation.md)
