# Token

## Resumo

Tokens são a representação de um ativo na rede blockchain, eles podem ser de diferentes tipos como Tokens Fungíveis (ERC20), Tokens Não Fungíveis (ERC721) e Tokens Semi Fungíveis (ERC1155)

> Tokens estão diretamente relacionados a Coleções, e podem ser operados em massa pelos endpoint da coleção a qual pertencem ou individualmente através dessa seção.

* Tokens Fungíveis são geralmente utilizados como moeda, ele é representado nessa API como um token único com *Total Supply* maior que zero.
* Tokens Não Fungíveis são popularmente conhecidos como NFTs, eles representam ativos únicos na rede blockchain e são representados nessa API como tokens únicos e com *Total Supply* **igual a 1**
* Tokens Semi Fungíveis representam ativos raros na rede blockchain, um Tokens Semi Fungível possui *Total Supply* maior que zero.

Diferentes tipos de tokens podem estar associados a diferentes tipos de benefícios, tokens fungíveis podem trazer benefícios de acordo com as configurações da empresa emissora, como por exemplo, oferecer benefícios para usuários que fizerem *hold* do token, ou podem ser usados como meio de precificação e pagamento de NFTs, que por sua vez podem ser combinados de diferentes formas e entregar beneficios diferentes dependendo da classificação de cada token.

**Gestão de tokens web3**

Os métodos web3 disponíveis nessa seção são os métodos mais comuns relacionados a um único token, se o métodos buscado não estiver disponível nessa seção ele poderá ser utilizados diretamente na Coleção.

Todas as operações Web3 são enviadas para uma fila e executadas de forma assíncrona.

### Objeto Token

<details>

<summary>Exemplo de Objeto de Token</summary>

```javascript
{
      "id": "j48arwr2q8wdsf",
      "tokenId": "1",
      "collectionId": "321",
      "name": "My Token",
      "supply": "10",
      "displayMediaUrl": "http://url.com/token.png",
      "displayMediaType": "image" | "video" | "gif",
      "metadata": {
        "en": {
          "mediaDescription": "Good Morning"
        },
        "pt": {
          "mediaDescription": "Bom dia"
        }
      },
      "owners": [
        {
          "userId": "rwet87fds15",
          "quantity": "3"
        },
        {
          "userId": "kyu871dtaw8s",
          "quantity": "1"
        },
      ],
      "tags": ["ambiental", "arte", "empreeendedorismo"],
      "transactionType": "sale" | "auction" | "airdrop",
      "sale": {
        "price": "12",
        "decimals": "2"
        "currency": "eth",
      },
      "auction": {
        "initialPrice": "100",
        "minIncreasePrice": "10",
        "decimals": "2",
        "currency": "eth"
      },
      "status": "private" | "public",
      "statusWeb3": "private" | "deployed"
}
```

</details>

### Endpoints

* **Tokens**

  * **GET** /v1/tokens/
  * **GET** /v1/tokens/:tokenId

* **Gestão de Tokens**

  * **GET** /v1/tokens/owned
  * **GET** /v1/tokens/manage
  * **GET** /v1/tokens/:tokenId/manage
  * **PATCH** /v1/tokens/:tokenId/manage

* **Gestão do token na web3**
  * **GET** /v1/tokend/:tokenId/manage/web3/ownerOf
  * **GET** /v1/tokend/:tokenId/manage/web3/ballanceOf/:address
  * **POST** /v1/tokend/:tokenId/manage/web3/mint
  * **POST** /v1/tokend/:tokenId/manage/web3/burn
  * **POST** /v1/tokend/:tokenId/manage/web3/transfer
  * **POST** /v1/tokend/:tokenId/manage/web3/transferFrom

### Tokens

## Lista os tokens públicos da plataforma

<mark style="color:blue;">`GET`</mark> `https://goblockchain.io/gotokens-api/v1/tokens`

Nível de permissionamento necessário: qualquer

#### Query Parameters

| Name         | Type   | Description                                    |
| ------------ | ------ | ---------------------------------------------- |
| limit        | String | Limite de resultados da busca                  |
| offset       | String | Quantidade de resultados para avançar da busca |
| communityId  | String | ID da Comunidade                               |
| companyId    | String | ID da Empresa                                  |
| collectionId | String | ID da Coleção                                  |
| currency     | String | Tipo de moeda utilizada                        |
| tags         | Array  | Tags do Token                                  |

{% tabs %}
{% tab title="200: OK " %}
{% tabs %}
{% tab title="Exemplo de Resposta" %}

```javascript
[
    {
      "id":"1"
      "tokenId": "123",
      "collectionId": "321",
      "transactionType": "sale",
      "name": "My E-sports Token 1",
      "sale": {
        "price": "12",
        "decimals": "2",
        "currency": "ETH"
      },
      "supply": "100",
      "tags": ["esportes"],
      "displayMediaType": "image",
      "displayMediaUrl": "https://placehold.it/300x300",
      "owners": [
        {
          "quantity": "2",
          "userId": "0242ac120002"
        }
      ],
    },
    {
      "id":"2"
      "tokenId": "456",
      "collectionId": "654",
      "transactionType": "airdrop",
      "name": "My E-sports Token 2",
      "supply": "500",
      "tags": ["esportes"],
      "displayMediaType": "image",
      "displayMediaUrl": "https://placehold.it/300x300",
      "owners": [
        {
          "quantity": "2",
          "userId": "bfb46d00-5ae3-11ed-9b6a-0242ac120002"
        }
      ],
   }
]
```

{% endtab %}

{% tab title="Campos da Resposta" %}

* **`id`** *- String*

  Identificador único de um Token no Banco de Dados.

* **`tokenId`** *- String*

  Identificador que guarda a referência ao ID do Token relativo ao seu contrato.

* **`collectionId`** *- String*

  Identificador que guarda a referência do ID da Coleção de Tokens em nosso Banco de Dados.

* **`name`***- String*

  Nome do Token em nosso Banco de Dados.

* **`transactionType`** - String

  Tipo de transação utilizada na negociação do Token.

* **`sale`** *- Object*

  Quando um Token é listado como do tipo *`sale`*, ele armazena seus dados de preço e moeda principal em um objeto específico.

  * **`price`** *- String*

    Valor relativo ao preço agregado à transação do Token, seja para uma operação de compra ou venda.
  * **`decimals`** *- String*

    Número de casas decimais que deve ser considerado em relação ao campo price.&#x20;
  * **`currency`** *- String*

    Nome da moeda utilizada para o pagamento da transação, podendo ser relativo à moedas tradicionais ou criptomoedas.

* **`auction`** *- Object*

  Quando um Token é listado como do tipo *`auction`*, ele armazena seus dados de preço inicial e moeda principal em um objeto específico.

  * **`initialPrice`** *- String*

    Valor relativo ao preço inicial de leilão agregado à transação do Token.
  * **`minIncreasePrice`** *- String*

    Valor relativo ao incremento mínimo de cada oferta de leilão de um Token.
  * **`decimals`** *- String*

    Número de casas decimais que deve ser considerado em relação aos campos anteriores.&#x20;
  * **`currency`** *- String*

    Nome da moeda utilizada para o pagamento da transação, podendo ser relativo à moedas tradicionais ou criptomoedas.

* **`supply`** - String

  Quantidade existente do Token.

* **`displayMediaType`** - String

  Tipo de mídia associada ao Token.

* **`displayMediaUrl`** - String

  Endereço da mídia relacionada ao Token.

* **`owners`** *- Array of Objects*

  Armazena todos os identificadores de donos do Token.

  * **`userId`** *- String*

    Identificador único relativo ao dono do Token em nosso Banco de Dados.
  * **`quantity`** *- String*

    Quantidade de unidades do Token que determinado dono possui.

* **`tags`** *- Array*

  Conjunto de tags do token.
  {% endtab %}
  {% endtabs %}
  {% endtab %}
  {% endtabs %}

## Exibe detalhes de tokens públicos

<mark style="color:blue;">`GET`</mark> `https://goblockchain.io/gotokens-api/v1/tokens/:tokenId`

Nível de permissionamento necessário: qualquer

#### Path Parameters

| Name                                      | Type   | Description |
| ----------------------------------------- | ------ | ----------- |
| tokenId<mark style="color:red;">\*</mark> | String | ID do token |

{% tabs %}
{% tab title="200: OK " %}
{% tabs %}
{% tab title="Exemplo de Resposta" %}

```javascript
{
    "id":"1"
    "tokenId": "123",
    "collectionId": "321",
    "transactionType": "sale",
    "name": "My E-sports Token 1",
    "sale": {
      "price": "12",
      "decimals": "2",
      "currency": "ETH"
    },
    "supply": "100",
    "tags": ["esportes"],
    "displayMediaType": "image",
    "displayMediaUrl": "https://placehold.it/300x300",
    "owners": [
      {
        "quantity": "2",
        "userId": "0242ac120002"
      }
  ],
}
```

{% endtab %}

{% tab title="Campos da Resposta" %}

* **`id`** *- String*

  Identificador único de um Token no Banco de Dados.

* **`tokenId`** *- String*

  Identificador que guarda a referência ao ID do Token relativo ao seu contrato.

* **`collectionId`** *- String*

  Identificador que guarda a referência do ID da Coleção de Tokens em nosso Banco de Dados.

* **`name`***- String*

  Nome do Token em nosso Banco de Dados.

* **`transactionType`** - String

  Tipo de transação utilizada na negociação do Token.

* **`sale`** *- Object*

  Quando um Token é listado como do tipo *`sale`*, ele armazena seus dados de preço e moeda principal em um objeto específico.

  * **`price`** *- String*

    Valor relativo ao preço agregado à transação do Token, seja para uma operação de compra ou venda.
  * **`decimals`** *- String*

    Número de casas decimais que deve ser considerado em relação ao campo price.&#x20;
  * **`currency`** *- String*

    Nome da moeda utilizada para o pagamento da transação, podendo ser relativo à moedas tradicionais ou criptomoedas.

* **`auction`** *- Object*

  Quando um Token é listado como do tipo *`auction`*, ele armazena seus dados de preço inicial e moeda principal em um objeto específico.

  * **`initialPrice`** *- String*

    Valor relativo ao preço inicial de leilão agregado à transação do Token.
  * **`minIncreasePrice`** *- String*

    Valor relativo ao incremento mínimo de cada oferta de leilão de um Token.
  * **`decimals`** *- String*

    Número de casas decimais que deve ser considerado em relação aos campos anteriores.&#x20;
  * **`currency`** *- String*

    Nome da moeda utilizada para o pagamento da transação, podendo ser relativo à moedas tradicionais ou criptomoedas.

* **`supply`** - String

  Quantidade existente do Token.

* **`displayMediaType`** - String

  Tipo de mídia associada ao Token.

* **`displayMediaUrl`** - String

  Endereço da mídia relacionada ao Token.

* **`owners`** *- Array of Objects*

  Armazena todos os identificadores de donos do Token.

  * **`userId`** *- String*

    Identificador único relativo ao dono do Token em nosso Banco de Dados.
  * **`quantity`** *- String*

    Quantidade de unidades do Token que determinado dono possui.

* **`tags`** *- Array*

  Conjunto de tags do token.
  {% endtab %}
  {% endtabs %}
  {% endtab %}
  {% endtabs %}

### Gestão de Tokens

## (JWT) Lista os tokens que o usuário logado possui

<mark style="color:blue;">`GET`</mark> `https://goblockchain.io/gotokens-api/v1/tokens/owned`

Nível de permissionamento necessário: `company_admin`, `company_moderator`, `community_admin`, `community_moderator`, `member`

#### Query Parameters

| Name         | Type   | Description                                    |
| ------------ | ------ | ---------------------------------------------- |
| limit        | String | Limite de resultados da busca                  |
| offset       | String | Quantidade de resultados para avançar da busca |
| communityId  | String | ID da Comunidade                               |
| companyId    | String | ID da Empresa                                  |
| collectionId | String | ID da Coleção                                  |
| tags         | Array  | Tags do Token                                  |

#### Headers

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| authorization<mark style="color:red;">\*</mark> | Bearer | JWT         |

{% tabs %}
{% tab title="200: OK " %}
{% tabs %}
{% tab title="Exemplo de Resposta" %}

```javascript
[
    {
      "id":"1"
      "tokenId": "123",
      "collectionId": "321",
      "transactionType": "sale",
      "name": "My E-sports Token 1",
      "sale": {
        "price": "12",
        "decimals": "2",
        "currency": "ETH"
      },
      "supply": "100",
      "tags": ["esportes"],
      "displayMediaType": "image",
      "displayMediaUrl": "https://placehold.it/300x300",
      "owners": [
        {
          "quantity": "2",
          "userId": "0242ac120002"
        }
      ],
    },
    {
      "id":"2"
      "tokenId": "456",
      "collectionId": "654",
      "transactionType": "airdrop",
      "name": "My E-sports Token 2",
      "supply": "500",
      "tags": ["esportes"],
      "displayMediaType": "image",
      "displayMediaUrl": "https://placehold.it/300x300",
      "owners": [
        {
          "quantity": "2",
          "userId": "bfb46d00-5ae3-11ed-9b6a-0242ac120002"
        }
      ],
   }
]
```

{% endtab %}

{% tab title="Campos da Resposta" %}

* **`id`** *- String*

  Identificador único de um Token no Banco de Dados.

* **`tokenId`** *- String*

  Identificador que guarda a referência ao ID do Token relativo ao seu contrato.

* **`collectionId`** *- String*

  Identificador que guarda a referência do ID da Coleção de Tokens em nosso Banco de Dados.

* **`name`***- String*

  Nome do Token em nosso Banco de Dados.

* **`transactionType`** - String

  Tipo de transação utilizada na negociação do Token.

* **`sale`** *- Object*

  Quando um Token é listado como do tipo *`sale`*, ele armazena seus dados de preço e moeda principal em um objeto específico.

  * **`price`** *- String*

    Valor relativo ao preço agregado à transação do Token, seja para uma operação de compra ou venda.
  * **`decimals`** *- String*

    Número de casas decimais que deve ser considerado em relação ao campo price.&#x20;
  * **`currency`** *- String*

    Nome da moeda utilizada para o pagamento da transação, podendo ser relativo à moedas tradicionais ou criptomoedas.

* **`auction`** *- Object*

  Quando um Token é listado como do tipo *`auction`*, ele armazena seus dados de preço inicial e moeda principal em um objeto específico.

  * **`initialPrice`** *- String*

    Valor relativo ao preço inicial de leilão agregado à transação do Token.
  * **`minIncreasePrice`** *- String*

    Valor relativo ao incremento mínimo de cada oferta de leilão de um Token.
  * **`decimals`** *- String*

    Número de casas decimais que deve ser considerado em relação aos campos anteriores.&#x20;
  * **`currency`** *- String*

    Nome da moeda utilizada para o pagamento da transação, podendo ser relativo à moedas tradicionais ou criptomoedas.

* **`supply`** - String

  Quantidade existente do Token.

* **`displayMediaType`** - String

  Tipo de mídia associada ao Token.

* **`displayMediaUrl`** - String

  Endereço da mídia relacionada ao Token.

* **`owners`** *- Array of Objects*

  Armazena todos os identificadores de donos do Token.

  * **`userId`** *- String*

    Identificador único relativo ao dono do Token em nosso Banco de Dados.
  * **`quantity`** *- String*

    Quantidade de unidades do Token que determinado dono possui.

* **`tags`** *- Array*

  Conjunto de tags do token.
  {% endtab %}
  {% endtabs %}
  {% endtab %}

{% tab title="403: Forbidden " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 403" %}

{% endtab %}
{% endtabs %}
{% endtab %}

{% tab title="401: Unauthorized " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 401" %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">1</td><td>Credenciais de acesso necessárias. Por favor, execute sua autenticação na plataforma.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">10</td><td>Credenciais de acesso expiradas. Por favor, execute novamente sua autenticação na plataforma.</td></tr></tbody></table>

## (JWT) Lista os tokens públicos e privados da plataforma

<mark style="color:blue;">`GET`</mark> `https://goblockchain.io/gotokens-api/v1/tokens/manage`

Nível de permissionamento necessário: `company_admin`, `company_moderator`, `community_admin`, `community_moderator`

#### Query Parameters

| Name         | Type   | Description                                    |
| ------------ | ------ | ---------------------------------------------- |
| limit        | String | Limite de resultados da busca                  |
| offset       | String | Quantidade de resultados para avançar da busca |
| communityId  | String | ID da Comunidade                               |
| companyId    | String | ID da Empresa                                  |
| collectionId | String | ID da Coleção                                  |
| currency     | String | Tipo de moeda utilizada                        |
| tags         | Array  | Tags do Token                                  |

#### Headers

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| authorization<mark style="color:red;">\*</mark> | Bearer | JWT         |

{% tabs %}
{% tab title="200: OK " %}
{% tabs %}
{% tab title="Exemplo de Resposta" %}

```javascript
[
    {
      "id":"1"
      "tokenId": "123",
      "collectionId": "321",
      "transactionType": "sale",
      "name": "My E-sports Token 1",
      "sale": {
        "price": "12",
        "decimals": "2",
        "currency": "ETH"
      },
      "supply": "100",
      "tags": ["esportes"],
      "displayMediaType": "image",
      "displayMediaUrl": "https://placehold.it/300x300",
      "owners": [
        {
          "quantity": "2",
          "userId": "0242ac120002"
        }
      ],
    },
    {
      "id":"2"
      "tokenId": "456",
      "collectionId": "654",
      "transactionType": "airdrop",
      "name": "My E-sports Token 2",
      "supply": "500",
      "tags": ["esportes"],
      "displayMediaType": "image",
      "displayMediaUrl": "https://placehold.it/300x300",
      "owners": [
        {
          "quantity": "2",
          "userId": "bfb46d00-5ae3-11ed-9b6a-0242ac120002"
        }
      ],
   }
]
```

{% endtab %}

{% tab title="Campos da Resposta" %}

* **`id`** *- String*

  Identificador único de um Token no Banco de Dados.

* **`tokenId`** *- String*

  Identificador que guarda a referência ao ID do Token relativo ao seu contrato.

* **`collectionId`** *- String*

  Identificador que guarda a referência do ID da Coleção de Tokens em nosso Banco de Dados.

* **`name`***- String*

  Nome do Token em nosso Banco de Dados.

* **`transactionType`** - String

  Tipo de transação utilizada na negociação do Token.

* **`sale`** *- Object*

  Quando um Token é listado como do tipo *`sale`*, ele armazena seus dados de preço e moeda principal em um objeto específico.

  * **`price`** *- String*

    Valor relativo ao preço agregado à transação do Token, seja para uma operação de compra ou venda.
  * **`decimals`** *- String*

    Número de casas decimais que deve ser considerado em relação ao campo price.&#x20;
  * **`currency`** *- String*

    Nome da moeda utilizada para o pagamento da transação, podendo ser relativo à moedas tradicionais ou criptomoedas.

* **`auction`** *- Object*

  Quando um Token é listado como do tipo *`auction`*, ele armazena seus dados de preço inicial e moeda principal em um objeto específico.

  * **`initialPrice`** *- String*

    Valor relativo ao preço inicial de leilão agregado à transação do Token.
  * **`minIncreasePrice`** *- String*

    Valor relativo ao incremento mínimo de cada oferta de leilão de um Token.
  * **`decimals`** *- String*

    Número de casas decimais que deve ser considerado em relação aos campos anteriores.&#x20;
  * **`currency`** *- String*

    Nome da moeda utilizada para o pagamento da transação, podendo ser relativo à moedas tradicionais ou criptomoedas.

* **`supply`** - String

  Quantidade existente do Token.

* **`displayMediaType`** - String

  Tipo de mídia associada ao Token.

* **`displayMediaUrl`** - String

  Endereço da mídia relacionada ao Token.

* **`owners`** *- Array of Objects*

  Armazena todos os identificadores de donos do Token.

  * **`userId`** *- String*

    Identificador único relativo ao dono do Token em nosso Banco de Dados.
  * **`quantity`** *- String*

    Quantidade de unidades do Token que determinado dono possui.

* **`tags`** *- Array*

  Conjunto de tags do token.
  {% endtab %}
  {% endtabs %}
  {% endtab %}

{% tab title="403: Forbidden " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 403" %}

{% endtab %}
{% endtabs %}
{% endtab %}

{% tab title="401: Unauthorized " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 401" %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">1</td><td>Credenciais de acesso necessárias. Por favor, execute sua autenticação na plataforma.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">1</td><td>Acesso restrito ao recurso.</td></tr><tr><td align="center">10</td><td>Credenciais de acesso expiradas. Por favor, execute novamente sua autenticação na plataforma.</td></tr></tbody></table>

## (JWT) Exibe detalhes de tokens públicos e privados

<mark style="color:blue;">`GET`</mark> `https://goblockchain.io/gotokens-api/v1/tokens/:tokenId/manage`

Nível de permissionamento necessário: `company_admin`, `company_moderator`, `community_admin`, `community_moderator`

#### Path Parameters

| Name                                      | Type   | Description |
| ----------------------------------------- | ------ | ----------- |
| tokenId<mark style="color:red;">\*</mark> | String | ID do token |

#### Headers

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| authorization<mark style="color:red;">\*</mark> | Bearer | JWT         |

{% tabs %}
{% tab title="200: OK " %}
{% tabs %}
{% tab title="Exemplo de Resposta" %}

```javascript
{
    "id":"1"
    "tokenId": "123",
    "collectionId": "321",
    "transactionType": "sale",
    "name": "My E-sports Token 1",
    "sale": {
      "price": "12",
      "decimals": "2",
      "currency": "ETH"
    },
    "supply": "100",
    "tags": ["esportes"],
    "displayMediaType": "image",
    "displayMediaUrl": "https://placehold.it/300x300",
    "owners": [
      {
        "quantity": "2",
        "userId": "0242ac120002"
      }
  ],
}
```

{% endtab %}

{% tab title="Campos da Resposta" %}

* **`id`** *- String*

  Identificador único de um Token no Banco de Dados.

* **`tokenId`** *- String*

  Identificador que guarda a referência ao ID do Token relativo ao seu contrato.

* **`collectionId`** *- String*

  Identificador que guarda a referência do ID da Coleção de Tokens em nosso Banco de Dados.

* **`name`***- String*

  Nome do Token em nosso Banco de Dados.

* **`transactionType`** - String

  Tipo de transação utilizada na negociação do Token.

* **`sale`** *- Object*

  Quando um Token é listado como do tipo *`sale`*, ele armazena seus dados de preço e moeda principal em um objeto específico.

  * **`price`** *- String*

    Valor relativo ao preço agregado à transação do Token, seja para uma operação de compra ou venda.
  * **`decimals`** *- String*

    Número de casas decimais que deve ser considerado em relação ao campo price.&#x20;
  * **`currency`** *- String*

    Nome da moeda utilizada para o pagamento da transação, podendo ser relativo à moedas tradicionais ou criptomoedas.

* **`auction`** *- Object*

  Quando um Token é listado como do tipo *`auction`*, ele armazena seus dados de preço inicial e moeda principal em um objeto específico.

  * **`initialPrice`** *- String*

    Valor relativo ao preço inicial de leilão agregado à transação do Token.
  * **`minIncreasePrice`** *- String*

    Valor relativo ao incremento mínimo de cada oferta de leilão de um Token.
  * **`decimals`** *- String*

    Número de casas decimais que deve ser considerado em relação aos campos anteriores.&#x20;
  * **`currency`** *- String*

    Nome da moeda utilizada para o pagamento da transação, podendo ser relativo à moedas tradicionais ou criptomoedas.

* **`supply`** - String

  Quantidade existente do Token.

* **`displayMediaType`** - String

  Tipo de mídia associada ao Token.

* **`displayMediaUrl`** - String

  Endereço da mídia relacionada ao Token.

* **`owners`** *- Array of Objects*

  Armazena todos os identificadores de donos do Token.

  * **`userId`** *- String*

    Identificador único relativo ao dono do Token em nosso Banco de Dados.
  * **`quantity`** *- String*

    Quantidade de unidades do Token que determinado dono possui.

* **`tags`** *- Array*

  Conjunto de tags do token.
  {% endtab %}
  {% endtabs %}
  {% endtab %}

{% tab title="400: Bad Request " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 401" %}

{% endtab %}
{% endtabs %}
{% endtab %}

{% tab title="403: Forbidden " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 403" %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">1</td><td>Acesso restrito ao recurso.</td></tr><tr><td align="center">10</td><td>Credenciais de acesso expiradas. Por favor, execute novamente sua autenticação na plataforma.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">1</td><td>Credenciais de acesso necessárias. Por favor, execute sua autenticação na plataforma.</td></tr></tbody></table>

## (JWT) Altera informações de um token

<mark style="color:purple;">`PATCH`</mark> `https://goblockchain.io/gotokens-api/v1/tokens/:tokenId/manage`

Nível de permissionamento necessário: `company_admin`

#### Path Parameters

| Name                                      | Type   | Description |
| ----------------------------------------- | ------ | ----------- |
| tokenId<mark style="color:red;">\*</mark> | String |             |

#### Headers

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| authorization<mark style="color:red;">\*</mark> | Bearer | JWT         |

#### Request Body

| Name             | Type   | Description |
| ---------------- | ------ | ----------- |
| tokenId          | String |             |
| collectionId     | String |             |
| transactionType  | String |             |
| owners           | String |             |
| displayMediaUrl  | String |             |
| displayMediaType | String |             |
| supply           | String |             |
| tags             | Array  |             |

{% tabs %}
{% tab title="200: OK " %}
{% tabs %}
{% tab title="Exemplo de Resposta" %}

```javascript
{
    "id":"1"
    "tokenId": "123",
    "collectionId": "321",
    "transactionType": "sale",
    "name": "My E-sports Token 1",
    "sale": {
      "price": "12",
      "decimals": "2",
      "currency": "ETH"
    },
    "supply": "100",
    "tags": ["esportes"],
    "displayMediaType": "image",
    "displayMediaUrl": "https://placehold.it/300x300",
    "owners": [
      {
        "quantity": "2",
        "userId": "0242ac120002"
      }
  ],
}
```

{% endtab %}

{% tab title="Campos da Resposta" %}

* **`id`** *- String*

  Identificador único de um Token no Banco de Dados.

* **`tokenId`** *- String*

  Identificador que guarda a referência ao ID do Token relativo ao seu contrato.

* **`collectionId`** *- String*

  Identificador que guarda a referência do ID da Coleção de Tokens em nosso Banco de Dados.

* **`name`***- String*

  Nome do Token em nosso Banco de Dados.

* **`transactionType`** - String

  Tipo de transação utilizada na negociação do Token.

* **`sale`** *- Object*

  Quando um Token é listado como do tipo *`sale`*, ele armazena seus dados de preço e moeda principal em um objeto específico.

  * **`price`** *- String*

    Valor relativo ao preço agregado à transação do Token, seja para uma operação de compra ou venda.
  * **`decimals`** *- String*

    Número de casas decimais que deve ser considerado em relação ao campo price.&#x20;
  * **`currency`** *- String*

    Nome da moeda utilizada para o pagamento da transação, podendo ser relativo à moedas tradicionais ou criptomoedas.

* **`auction`** *- Object*

  Quando um Token é listado como do tipo *`auction`*, ele armazena seus dados de preço inicial e moeda principal em um objeto específico.

  * **`initialPrice`** *- String*

    Valor relativo ao preço inicial de leilão agregado à transação do Token.
  * **`minIncreasePrice`** *- String*

    Valor relativo ao incremento mínimo de cada oferta de leilão de um Token.
  * **`decimals`** *- String*

    Número de casas decimais que deve ser considerado em relação aos campos anteriores.&#x20;
  * **`currency`** *- String*

    Nome da moeda utilizada para o pagamento da transação, podendo ser relativo à moedas tradicionais ou criptomoedas.

* **`supply`** - String

  Quantidade existente do Token.

* **`displayMediaType`** - String

  Tipo de mídia associada ao Token.

* **`displayMediaUrl`** - String

  Endereço da mídia relacionada ao Token.

* **`owners`** *- Array of Objects*

  Armazena todos os identificadores de donos do Token.

  * **`userId`** *- String*

    Identificador único relativo ao dono do Token em nosso Banco de Dados.
  * **`quantity`** *- String*

    Quantidade de unidades do Token que determinado dono possui.

* **`tags`** *- Array*

  Conjunto de tags do token.
  {% endtab %}
  {% endtabs %}
  {% endtab %}

{% tab title="401: Unauthorized " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 401" %}

{% endtab %}
{% endtabs %}
{% endtab %}

{% tab title="403: Forbidden " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 403" %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">1</td><td>Acesso restrito ao recurso.</td></tr><tr><td align="center">10</td><td>Credenciais de acesso expiradas. Por favor, execute novamente sua autenticação na plataforma.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">1</td><td>Credenciais de acesso necessárias. Por favor, execute sua autenticação na plataforma.</td></tr></tbody></table>

### Gestão de Tokens na web3

## (JWT) Consulta o proprietário do token na web3

<mark style="color:blue;">`GET`</mark> `https://goblockchain.io/gotokens-api/v1/tokens/:tokenId/manage/web3/ownerOf`

Nível de autorização necessário: `member`

#### Path Parameters

| Name                                      | Type   | Description   |
| ----------------------------------------- | ------ | ------------- |
| tokenId<mark style="color:red;">\*</mark> | String | ID da Coleção |
| address                                   | String |               |

#### Headers

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| authorization<mark style="color:red;">\*</mark> | Bearer | JWT         |

{% tabs %}
{% tab title="200: OK " %}
{% tabs %}
{% tab title="Exemplo de Resposta" %}

```javascript
"ownerAddress": "0x89s7das87d87as7d9a8s7da7sd98a7sd98a8d79as8d7sa8d"
```

{% endtab %}

{% tab title="Campos de Resposta" %}

* **`ownerAddress`** *- String*\
  Endereço da carteira do proprietário do token
  {% endtab %}
  {% endtabs %}
  {% endtab %}

{% tab title="401: Unauthorized " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 401" %}

{% endtab %}
{% endtabs %}

{% endtab %}

{% tab title="403: Forbidden " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 403" %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">10</td><td>Credenciais de acesso expiradas. Por favor, execute novamente sua autenticação na plataforma.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">1</td><td>Credenciais de acesso necessárias. Por favor, execute sua autenticação na plataforma.</td></tr></tbody></table>

## (JWT) Consulta o saldo de tokens para a carteira informada na web3

<mark style="color:blue;">`GET`</mark> `https://goblockchain.io/gotokens-api/v1/tokens/:tokenId/manage/web3/balanceOf/:address`

Nível de autorização necessário: `member`

#### Path Parameters

| Name                                      | Type   | Description   |
| ----------------------------------------- | ------ | ------------- |
| tokenId<mark style="color:red;">\*</mark> | String | ID da Coleção |
| address                                   | String |               |

#### Headers

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| authorization<mark style="color:red;">\*</mark> | Bearer | JWT         |

{% tabs %}
{% tab title="200: OK " %}
{% tabs %}
{% tab title="Exemplo de Resposta" %}

```javascript
"balanceOf": "1000"
```

{% endtab %}

{% tab title="Campos de Resposta" %}

* **`balanceOf`** *- String*\
  Saldo do token na carteira
  {% endtab %}
  {% endtabs %}
  {% endtab %}

{% tab title="401: Unauthorized " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 401" %}

{% endtab %}
{% endtabs %}

{% endtab %}

{% tab title="403: Forbidden " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 403" %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">10</td><td>Credenciais de acesso expiradas. Por favor, execute novamente sua autenticação na plataforma.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">1</td><td>Credenciais de acesso necessárias. Por favor, execute sua autenticação na plataforma.</td></tr></tbody></table>

## (JWT/Wallet) Mint de Tokens na Web3

<mark style="color:green;">`POST`</mark> `https://goblockchain.io/gotokens-api/v1/tokens/:tokenId/manage/web3/mint`

Nível de autorização necessário: `company_admin`\
\
É necessário um carteira com saldo vinculada ao usuário e a carteira precisa ter permissão de execução do método no contrato.

Diferentes tokens possuem diferentes possibilidades de *mint*. ex: tokens ERC20 e ERC1155 possuem *supply* e é possível, faz o *mint* inicial para criar o token na blockchain, e posteriormente novos *mints* podem ser usados para aumentar o *supply,* caso o contrato permita, já tokens ERC721 só podem ser *mintados* a primeira vez, novos *mints* do mesmo tokenId não produzem qualquer efeito.

#### Path Parameters

| Name                                      | Type   | Description   |
| ----------------------------------------- | ------ | ------------- |
| tokenId<mark style="color:red;">\*</mark> | String | ID da Coleção |

#### Headers

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| authorization<mark style="color:red;">\*</mark> | Bearer | JWT         |

#### Request Body

| Name                                     | Type   | Description          |
| ---------------------------------------- | ------ | -------------------- |
| amount<mark style="color:red;">\*</mark> | String | Quantidade de tokens |

{% tabs %}
{% tab title="204: No Content " %}

{% endtab %}

{% tab title="401: Unauthorized " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 401" %}

{% endtab %}
{% endtabs %}

{% endtab %}

{% tab title="403: Forbidden " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 403" %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">10</td><td>Credenciais de acesso expiradas. Por favor, execute novamente sua autenticação na plataforma.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">1</td><td>Credenciais de acesso necessárias. Por favor, execute sua autenticação na plataforma.</td></tr></tbody></table>

## (JWT/Wallet) Mint de Tokens na Web3

<mark style="color:green;">`POST`</mark> `https://goblockchain.io/gotokens-api/v1/tokens/:tokenId/manage/web3/burn`

Nível de autorização necessário: `member`\
\
É necessário um carteira com saldo vinculada ao usuário e a carteira precisa ter permissão de execução do método no contrato.

O método precisa existir no contrato e as regras relativas a quem pode queimar cada token também estão definidas dentro do contrato.

#### Path Parameters

| Name                                      | Type   | Description   |
| ----------------------------------------- | ------ | ------------- |
| tokenId<mark style="color:red;">\*</mark> | String | ID da Coleção |

#### Headers

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| authorization<mark style="color:red;">\*</mark> | Bearer | JWT         |

#### Request Body

| Name                                     | Type   | Description          |
| ---------------------------------------- | ------ | -------------------- |
| amount<mark style="color:red;">\*</mark> | String | Quantidade de tokens |

{% tabs %}
{% tab title="204: No Content " %}

{% endtab %}

{% tab title="401: Unauthorized " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 401" %}

{% endtab %}
{% endtabs %}

{% endtab %}

{% tab title="403: Forbidden " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 403" %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">10</td><td>Credenciais de acesso expiradas. Por favor, execute novamente sua autenticação na plataforma.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">1</td><td>Credenciais de acesso necessárias. Por favor, execute sua autenticação na plataforma.</td></tr></tbody></table>

## (JWT/Wallet) Transfer de Tokens na Web3

<mark style="color:green;">`POST`</mark> `https://goblockchain.io/gotokens-api/v1/tokens/:tokenId/manage/web3/transfer`

Nível de autorização necessário: `member`\
\
É necessário um carteira com saldo vinculada ao usuário e a carteira precisa ter permissão de execução do método no contrato.

O método precisa existir no contrato e as regras relativas a quem pode transferir cada token também estão definidas dentro do contrato.

#### Path Parameters

| Name                                      | Type   | Description   |
| ----------------------------------------- | ------ | ------------- |
| tokenId<mark style="color:red;">\*</mark> | String | ID da Coleção |

#### Headers

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| authorization<mark style="color:red;">\*</mark> | Bearer | JWT         |

#### Request Body

| Name                                        | Type   | Description          |
| ------------------------------------------- | ------ | -------------------- |
| amount<mark style="color:red;">\*</mark>    | String | Quantidade de tokens |
| toAddress<mark style="color:red;">\*</mark> | String |                      |

{% tabs %}
{% tab title="204: No Content " %}

{% endtab %}

{% tab title="401: Unauthorized " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 401" %}

{% endtab %}
{% endtabs %}

{% endtab %}

{% tab title="403: Forbidden " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 403" %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">10</td><td>Credenciais de acesso expiradas. Por favor, execute novamente sua autenticação na plataforma.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">1</td><td>Credenciais de acesso necessárias. Por favor, execute sua autenticação na plataforma.</td></tr></tbody></table>

## (JWT/Wallet) Transfer de Tokens na Web3

<mark style="color:green;">`POST`</mark> `https://goblockchain.io/gotokens-api/v1/tokens/:tokenId/manage/web3/transferFrom`

Nível de autorização necessário: `member`\
\
É necessário um carteira com saldo vinculada ao usuário e a carteira precisa ter permissão de execução do método no contrato.

O método precisa existir no contrato e as regras relativas a quem pode transferir cada token também estão definidas dentro do contrato.

#### Path Parameters

| Name                                      | Type   | Description   |
| ----------------------------------------- | ------ | ------------- |
| tokenId<mark style="color:red;">\*</mark> | String | ID da Coleção |

#### Headers

| Name                                            | Type   | Description |
| ----------------------------------------------- | ------ | ----------- |
| authorization<mark style="color:red;">\*</mark> | Bearer | JWT         |

#### Request Body

| Name                                        | Type   | Description          |
| ------------------------------------------- | ------ | -------------------- |
| amount<mark style="color:red;">\*</mark>    | String | Quantidade de tokens |
| toAddress<mark style="color:red;">\*</mark> | String |                      |
| fromAddress                                 | String |                      |

{% tabs %}
{% tab title="204: No Content " %}

{% endtab %}

{% tab title="401: Unauthorized " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 401" %}

{% endtab %}
{% endtabs %}

{% endtab %}

{% tab title="403: Forbidden " %}
{% tabs %}
{% tab title="Possíveis Erros HTTP - 403" %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">10</td><td>Credenciais de acesso expiradas. Por favor, execute novamente sua autenticação na plataforma.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">1</td><td>Credenciais de acesso necessárias. Por favor, execute sua autenticação na plataforma.</td></tr></tbody></table>


---

# Agent Instructions: 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:

```
GET https://docs.gotokens.io/gotokens/api-fidelidade/token.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
