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

# Assinaturas do Economy v2

> Crie assinaturas virtuais do PlayFab Economy v2 para conceder acesso por tempo limitado a itens duráveis no jogo e gerenciar benefícios recorrentes dos jogadores.

As assinaturas permitem conceder acesso por tempo limitado a bens duráveis. Os itens de uma assinatura são desempacotados no inventário do jogador após a chamada de [GetInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/get-inventory-items).

<Note>
  Este artigo aborda as assinaturas virtuais, ou seja, as assinaturas que existem dentro do seu jogo.
</Note>

## Criar uma assinatura

Para criar uma assinatura, primeiro você deve garantir que publicou [itens do catálogo](/pt-BR/services/playfab/economy-monetization/economy-v2/quickstart#step-3---publish-an-item-to-the-catalog), [moedas](/pt-BR/services/playfab/economy-monetization/economy-v2/quickstart#part-2-inventory-and-virtual-currencies-overview) ou [conteúdo gerado pelo usuário (UGC)](/pt-BR/services/playfab/economy-monetization/economy-v2/ugc/quickstart) que deseja tornar acessíveis/compráveis no seu jogo. Para configurar seu catálogo antes de criar uma assinatura, consulte [Início rápido do Economy V2](/pt-BR/services/playfab/economy-monetization/economy-v2/quickstart)

### GameManager

1. Navegue até **Economy** > **Catalog (V2)**.
2. Na guia **Subscriptions**, selecione **New Subscription**.

### API

Você pode usar a API [CreateDraftItem](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/create-draft-item) para criar uma assinatura.

Um exemplo de solicitação da API `CreateDraftItem` para criar uma assinatura:

```json theme={null}
{
  "Item": {
   "Type": "subscription",
    "Title": {
      "NEUTRAL": "Holiday Skins Pass"
    },
    "StartDate": "2023-03-07T00:01:00.0000000Z",
    "ItemReferences":[
      {
        "Id":"{{GlowingGlovesItemID}}",
        "Amount": 1
      }, 
      {
        "Id":"{{ShinyShoesItemID}}", 
        "Amount": 1
      }
    ],
        "PriceOptions": {
          "Prices": [
        {
            "UnitDurationInSeconds":604800,
              "Amounts": [
                {
                    "ItemId": "{{DiamondItemID}}",
                    "Amount": 5
                },
                {
                    "ItemId": "{{GoldItemID}}",
                    "Amount": 10
                }
                ]
        },      
        {
            "UnitDurationInSeconds":2628000,
              "Amounts": [
                {
                    "ItemId": "{{DiamondItemID}}",
                    "Amount": 7
                },
                {
                    "ItemId": "{{GoldItemID}}",
                    "Amount": 12
                }
                ]
        } ]
          }
        },
  "Publish": true
}
```

***

A assinatura Holiday Skins Pass acima concede dois itens, `Glowing Gloves` e `Shiny Shoes`, com dois preços para dois períodos de validade diferentes. O primeiro conjunto de preços, de 5 diamantes e 10 de ouro, garante que a assinatura seja válida por uma semana, enquanto o segundo conjunto de preços, de 7 diamantes e 12 de ouro, garante que a assinatura seja válida por um mês. Observe que a duração precisa ser definida em segundos.

Isso deve retornar uma resposta indicando que a assinatura foi criada e publicada:

```json theme={null}
{
  "code": 200,
    "status": "OK",
    "data": {
        "Item": {
            "Id": "{{NewlyCreatedSubscriptionItemID}}",
            "Type": "subscription",
            "AlternateIds": [],
            "Title": {
                "NEUTRAL": "Holiday Skins Pass"
            },
    ...
}
```

***

## Assinaturas no inventário

As assinaturas estarão presentes na coleção de inventário do jogador com um ID, StackId, data de expiração e propriedades de exibição. Tudo em uma assinatura pode ser modificado como qualquer outro item usando Add, Subtract, Update etc.

Você pode usar [GetInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/get-inventory-items) com um filtro de Type para recuperar todas as assinaturas que um jogador possui atualmente.

```json theme={null}
{ 
    "Entity": {
        "Type": "title_player_account", 
        "Id": "ID" 
    }, 
    "CollectionId": "default", 
    "Filter": "type eq 'subscription'"
}

**Sample Response**

{
    "code": 200,
    "status": "OK",
    "data": {
        "Items": [
            {
                "Id": "{{SubscriptionID}}",
                "StackId": "default",
                "DisplayProperties": {},
                "Type": "subscription",
                "ExpirationDate": "2023-08-27T23:59:59Z"
            }
        ],
        "ETag": "1/Mw=="
    }
}
```

Uma assinatura não expirada é desempacotada no momento da leitura. Os itens desempacotados têm o ID esperado e um StackId composto exclusivo formado pelo ID da assinatura e pelo StackId da assinatura. A quantidade é definida como a quantidade configurada na referência de item da assinatura. Esses itens desempacotados são imutáveis e não podem ser modificados usando Add, Subtract, Update etc.

```json theme={null}

{ 
    "Entity": {
        "Type": "title_player_account", 
        "Id": "ID" 
    }, 
    "CollectionId": "default", 
    "Filter": "StackId eq 'SubscriptionItemID:default'"
}

**Sample Response**

{
    "code": 200,
    "status": "OK",
    "data": {
        "Items": [
            {
                "Id": "{{GlowingGlovesItemID}}",
                "StackId": "{{SubscriptionID:default}}",
                "DisplayProperties": {},
                "Amount": 1,
                "Type": "catalogItem"
            },
            {
                "Id": "{{ShinyShoesItemID}}",
                "StackId": "{{SubscriptionID:default}}",
                "DisplayProperties": {},
                "Amount": 1,
                "Type": "catalogItem"
            }
        ],
        "ETag": "1/NQ=="
    }
}
```

O desempacotamento da assinatura ocorre antes da filtragem e da paginação, de modo que os itens da assinatura possam ser filtrados e paginados de forma confiável como qualquer outro item de uma coleção.

Você pode usar [UpdateInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/update-inventory-items), [AddInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/add-inventory-items) e [SubtractIventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/subtract-inventory-items) para atualizar a data de expiração de uma assinatura de um jogador.

A chamada da API `UpdateInventoryItems` aqui está atualizando a data de expiração da assinatura.

```json theme={null}
{
   "Entity": { 
      "Type": "title_player_account", 
      "Id": "{{ID}}" 
    }, 
  "CollectionId": "default", 
   "Item": { 
        "Id": "{{SubscriptionID}}", 
        "StackId": "default",
        "DisplayProperties": {},
        "Type": "subscription",
        "ExpirationDate": "2023-03-27T23:59:59Z" 
    } 
} 
```

A chamada da API `AddInventoryItems` aqui está estendendo a data de expiração ao aumentar o parâmetro DurationInSeconds.

```json theme={null}
{
    "Entity": { 
        "Type": "title_player_account", 
        "Id": "{{ID}}" 
    }, 
    "CollectionId": "default", 
    "Item": { 
        "Id": "{{SubscriptionID}}" 
    }, 
    "DurationInSeconds":2628000 
} 
```

A chamada da API `SubtractInventoryItems` aqui está reduzindo a data de expiração ao diminuir o parâmetro DurationInSeconds.

```json theme={null}
{
    "Entity": { 
        "Type": "title_player_account", 
        "Id": "{{ID}}" 
    }, 
    "CollectionId": "default", 
    "Item": { 
        "Id": "{{SubscriptionID}}" 
    }, 
    "DurationInSeconds":60 
} 
```


## Related topics

- [O que é o PlayFab Economy?](/pt-BR/services/playfab/economy-monetization/economy-what-is.md)
- [Ofertas direcionadas do Economy V2](/pt-BR/services/playfab/economy-monetization/economy-v2/player-segmented-monetization/targeted-offers.md)
- [Pacotes do Economy v2](/pt-BR/services/playfab/economy-monetization/economy-v2/catalog/bundles.md)
- [Localização do Economy v2](/pt-BR/services/playfab/economy-monetization/economy-v2/catalog/localization.md)
- [Lojas do Economy v2](/pt-BR/services/playfab/economy-monetization/economy-v2/catalog/stores.md)
