# Coleções

## Resumo

As coleções estão diretamente ligadas às Comunidades e as Empresas, elas representam os ***Smart Contracts**,* que podem ser contratos pré existentes ou contratos que serão criados na Blockchain a partir desta API.&#x20;

É aqui que vamos definir as informações da Coleção como o tipo de contrato ex: ERC1155, ERC721, ERC20. Rede Blockchain usada, e as informações relativas ao contrato, no caso de um contrato de Venda de NFT's por exemplo, dados como Descrição, BaseURI das Imagem, Preço de Venda, Split de Pagamento e Distribuição de Royalties (caso haja).

**Exemplo de alguns tipos de Coleções:**

* Token de Pagamento
* Leilão de NFTs
* Leilão de NFTs reverso
* Vendas de NFTs
* Airdrop de NFTs e/ou Tokens de Pagamento
* POAP
* Outros

> ***É na coleção também que vamos associar os benefícios que os membros terão acesso.***

#### Como funciona

Um usuário com a devida autorização poderá criar Coleções atreladas a uma Comunidade. Caso o contrato dessa coleção ainda não exista na Blockchain, será necessário executar o ***Deploy*** do contrato pela API. Para tal o usuário em questão precisa ter saldo em carteira pois essa operação irá criar transações na Blockchain.

**Gestão em Massa de Tokens da Coleção**

Com o objetivo de facilitar as operações relativas aos tokens, alguns endpoints permitem a manipulação de tokens em lote, assim como a execução do *Mint* dos tokens criados pode ser feita em lote através de uma única chamada em API.

**Gestão do contrato Web3**

Todas as operações web3 são enviadas para uma fila e processadas de forma assincrona. Comandos de deploy criam o contrato uma única vez na rede definida no cadastro. O comando de mint-batch de tokens executa o mint da diferença de tokens entre o cadastro e a blockchain.

### Objeto Collection

<details>

<summary>Exemplo de Objeto de Coleção</summary>

```javascript
{
    "id": "8798wdefs",
    "communityId": "8798wdefs",
    "companyId": "sd21fs5",
    "name": "Airdrop NFT",
    "description": "Distribuição de tokens não fungíveis",
    "symbol":"Um símbolo para o contrato",
    "image":"URL de uma imagem para ficar como capa da coleção",
    "type": "airdrop" | "sale" | "auction" | <others>,
    "startDate": "2021-01-01T00:00:00Z",
    "expirationDate": "2021-12-31T23:59:59Z",
    "mainCurrency": "USD" | "BRL" | "ETH" | "MATIC" | <others>,
    "tags": ["ambiental", "arte", "empreeendedorismo"]
    "contract": {
        "address": "0x1234567890abcdef12345678sssbcdef12345678",
        "network": "ethereum_mainnet" | "polygon_mainnet" | <others>,
        "pattern": "ERC20" | "ERC721" | "ERC1155" | <others>,
        "ownerAddress": "0x1234567890abcdef12345678sssbcdef12345678",
        "bytecode": /*Bytecode do contrato usada no deploy, apenas para contratos customizados*/,
        "abi": [/*ABI completa do contrato usada no deploy*/],
        "metadataCID": {
            "en": "ipfs://efauiyose.pinata.cloud",
            "pt": "ipfs://rgwqpmkiura.pinata.cloud"
        },
        "methods": {
            "deploy": {
                "args": [/* argumentos do construtor do contrato em ordem e com tipo compatível */],
            },
            "balanceOf": {
                "methodABI": {/* ABI do método balanceOf */},            
            }        
        },
        "royalties": [
            {
                "id": "2343d23d234",
                "address": "0x1234567890abcdef1....78sssbcdef12345678",
                "percent": 20
            },
            {
                "id": "2343ds3d234",
                "address": "0x1234567890abcdef1....78sssbcdef12345678",
                "percent": 80
            }
        ],
        "split": [
            {
                "id": "2343d23d234",
                "address": "0x1234567890abcdef1....78sssbcdef12345678",
                "percent": 20
            },
            {
                "id": "2343ds3d234",
                "address": "0x1234567890abcdef1....78sssbcdef12345678",
                "percent": 80
            }
        ],
    }
    "status": "active",
    "statusWeb3": "active"
}
```

</details>

### Endpoints

* **Coleções**

  * **GET** /v1/collections
  * **GET** /v1/collections/:collectionId
  * **GET** /v1/collections/:collectionId/tokens

* **Gestão de Coleções**

  * **GET** /v1/collections/manage
  * **POST** /v1/collections/manage
  * **GET** /v1/collections/:collectionId/manage
  * **PATCH** /v1/collections/:collectionId/manage

* **Gestão em Massa de Tokens da Coleção**

  * **GET** /v1/collections/:collectionId/tokens/manage
  * **POST** /v1/collections/:collectionId/tokens/manage

* **Gestão do contrato Web3**
  * **POST** /v1/collections/:collectionId/manage/web3/deploy
  * **POST** /v1/collections/:collectionId/manage/web3/stop
  * **POST** /v1/collections/:collectionId/manage/web3/start
  * **GET** /v1/collections/:collectionId/manage/web3/methods
  * **GET** /v1/collections/:collectionId/manage/web3/:method-name
  * **POST** /v1/collections/:collectionId/manage/web3/:method-name

### Coleções

## Lista as coleções públicas

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

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

#### Query Parameters

| Name        | Type   | Description                   |
| ----------- | ------ | ----------------------------- |
| name        | String | Nome da Coleção               |
| limit       | String | Limite de resultados na busca |
| offset      | String | Posição inicial da busca      |
| communityId | String | ID da Comunidade              |
| companyId   | String | ID da Empresa                 |
| tags        | Array  | Tags da Coleção               |

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

```javascript
{
    "collections": [
        {
            "id": "8798wdefs",
            "communityId": "8798wdefs",
            "companyId": "sd21fs5",
            "name": "Airdrop NFT",
            "description": "Distribuição de tokens não fungíveis",
            "startDate": "2021-01-01T00:00:00Z",
            "expirationDate": "2021-12-31T23:59:59Z",
            "type": "airdrop" | "sale" | "auction" | <others>,
            "mainCurrency": "USD | BRL | ETH | MATIC | <others>",
            "tags": ["ambiental", "arte", "empreeendedorismo"]
        }
    ]
```

{% endtab %}

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

* **`collections`** *- Array of Objects*

  Armazena as informações de cada coleção com a qual o usuário logado tem vínculo.

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

    Identificador próprio da coleção.
  * **`name`** *- String*

    Nome da coleção.
  * **`description`** *- String*

    Descrição da coleçao
  * **`communityId`** *- String*

    ID da Comunidade
  * **`companyId`** *- String*

    ID da Empresa
  * **`type`** *- String*

    Enumerador de identificação do tipo da coleção ex: airdrop
  * **`mainCurrency`** *- String*

    Moeda aceita pelo contrato, todos os métodos de pagamento devem considerar a cotação dessa moeda para conversão do valor.
  * **`tags`** *- Array*

    Conjunto de tags da coleção.
    {% endtab %}
    {% endtabs %}
    {% endtab %}
    {% endtabs %}

## Lista as informações de uma coleção pública

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

Nível de permissionamento necessário: qualquer

#### Path Parameters

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

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

```javascript
{
    "id": "8798wdefs",
    "communityId": "8798wdefs",
    "companyId": "sd21fs5",
    "name": "Airdrop NFT",
    "description": "Distribuição de tokens não fungíveis",
    "startDate": "2021-01-01T00:00:00Z",
    "expirationDate": "2021-12-31T23:59:59Z",
    "type": "airdrop" | "sale" | "auction" | <others>,
    "mainCurrency": "USD | BRL | ETH | MATIC | <others>",
    "tags": ["ambiental", "arte", "empreeendedorismo"]
}
```

{% endtab %}

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

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

  Identificador próprio da coleção.
* **`name`** *- String*

  Nome da coleção.
* **`description`** *- String*

  Descrição da coleçao
* **`communityId`** *- String*

  ID da Comunidade
* **`companyId`** *- String*

  ID da Empresa
* **`type`** *- String*

  Enumerador de identificação do tipo da coleção ex: airdrop
* **`mainCurrency`** *- String*

  Moeda aceita pelo contrato, todos os métodos de pagamento devem considerar a cotação dessa moeda para conversão do valor.
* **`tags`** *- Array*

  Conjunto de tags da coleção.
  {% endtab %}
  {% endtabs %}
  {% endtab %}
  {% endtabs %}

## Lista os tokens públicos associadas à uma coleção

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

Nível de permissionamento necessário: qualquer

#### Path Parameters

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

#### Query Parameters

| Name   | Type   | Description                                    |
| ------ | ------ | ---------------------------------------------- |
| limit  | String | Limite de resultados na busca                  |
| offset | String | Quantidade de resultados para avançar da busca |
| tags   | Array  | Tags do Token                                  |

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

```javascript
[
    {
      "id":"5hws4eb18t0q",
      "tokenId": "1",
      "collectionId": "321",
      "supply": "10",
      "displayMediaUrl": "http://url.com/token",
      "displayMediaType": "image",
      "owners": [
        {
          "address": "0xer7s89gf4ger987tes978f",
          "quantity": "3"
        }
      ],
      "transactionType": "airdrop",
      "tags": ["ambiental", "arte", "empreeendedorismo"]
    },
    {
      "id":"a8rt9red1vb",
      "tokenId": "2",
      "collectionId": "321",
      "supply": "5",
      "displayMediaUrl": "http://url.com/token",
      "displayMediaType": "gif",
      "owners": [
        {
          "address": "0x73w49f8we1fwe849f8fea",
          "quantity": "1"
        },
        {
          "address": "0x36lutsmerkug87fsQ4R",
          "quantity": "2"
        }
      ],
      "transactionType": "airdrop",
      "tags": ["ambiental", "arte", "empreeendedorismo"]
    },
]
```

{% endtab %}

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

* **`tokens`**

  Armazena a lista de Tokens de uma coleção.

  * **`id`** *- String*\
    Identificador único de um Token no Banco de Dados.
  * **`name`** *- String*\
    Nome do Token.
  * **`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.
  * **`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*

    Armazena uma lista de proprietários de determinado Token

    * **`address`** *- String*

      Endereço blockchain de um proprietário do Token.
    * **`quantity`** *- String*

      Quantidade de Tokens que determinado proprietário possui.
  * **`metadata`** - Object

    Lista de metadados do Token, se houver
  * **`tags`** *- Array*

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

### Gestão de Coleções

## (JWT) Lista as coleções que o usuário tem direito de edição

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

Nível de autorização necessário: `company_admin`*,* `company_moderator`, `community_admin`, `community_moderator`

<mark style="color:red;">**Caso queira, você pode realizar a pesquisa apenas com o JWT no Header.**</mark>

#### Query Parameters

| Name        | Type   | Description                   |
| ----------- | ------ | ----------------------------- |
| name        | String | Nome da Coleção               |
| id          | String | ID da Coleção                 |
| limit       | String | Limite de resultados na busca |
| offset      | String | Posição inicial da busca      |
| communityId | String | ID da Comunidade              |
| companyId   | String | ID da Empresa                 |
| tags        | Array  | Tags da Coleção               |

#### 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": "8798wdefs",
        "communityId": "8798wdefs",
        "companyId": "sd21fs5",
        "name": "Airdrop NFT",
        "description": "Distribuição de tokens não fungíveis",
        "type": "airdrop" | "sale" | "auction" | <others>,
        "contract": {
            "address": "0x1234567890abcdef12345678sssbcdef12345678",
            "network": "ethereum_mainnet | polygon_mainnet | <others>",
            "pattern" : "ERC20" | "ERC721" | "ERC1155" | <others>,
            "ownerAddress": "0x1234567890abcdef12345678sssbcdef12345678",
            "methods": {
                "deploy": {
                    "args": [/* argumentos do construtor do contrato em ordem e com tipo compatível */],
                },
                "balanceOf": {
                    "methodABI": {/* ABI do método balanceOf */},            
                }        
            },
            "royalties": [
                {
                    "id": "2343d23d234",
                    "address": "0x1234567890abcdef1....78sssbcdef12345678",
                    "percent": 20
                },
                {
                    "id": "2343ds3d234",
                    "address": "0x1234567890abcdef1....78sssbcdef12345678",
                    "percent": 80
                }
            ],
            "split": [
                {
                    "id": "2343d23d234",
                    "address": "0x1234567890abcdef1....78sssbcdef12345678",
                    "percent": 20
                },
                {
                    "id": "2343ds3d234",
                    "address": "0x1234567890abcdef1....78sssbcdef12345678",
                    "percent": 80
                }
            ],
        }    
        "expirationDate": "2021-12-31T23:59:59Z",
        "startDate": "2021-01-01T00:00:00Z",
        "mainCurrency": "USD | BRL | ETH | MATIC | <others>",
        "tags": ["ambiental", "arte", "empreeendedorismo"],
        "status": "private",
        "statusWeb3": "private"
    }
]
```

{% endtab %}

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

* **`collections`** *- Array of Objects*

  Armazena as informações de cada coleção com a qual o usuário logado tem vínculo.

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

    Identificador próprio da coleção.
  * **`communityId`** *- String*

    ID da Comunidade
  * **`companyId`** *- String*

    ID da Empresa
  * **`name`** *- String*

    Nome da coleção.
  * **`description`** *- String*

    Descrição da coleçao
  * **`type`** *- String*

    Enumerador de identificação do tipo da coleção ex: airdrop
  * **`contract`**
    * **`network`** *- String*

      Enumerador de identificação da rede ex: ethereum\_mainnet
    * **`address`** *- String*

      Endereço do contrato na rede blockchain
    * **`pattern`** *- String*

      Tipo base de contrato utilizado ex: ERC721A
    * ***`methods`** - Map\<string, object>*

      Lida de métodos Web3 Disponíveis no contrato
    * ***`royalties`** - Array\<object>*

      Lista de distribuição de royalties
    * ***`split`** - Array\<string>*

      Lista de split de pagamentos&#x20;
    * **`ownerAddress`** *- String*

      Endereço do dono do contrato.
  * **`expirationDate`** *- Date*

    Data limite de operação do contrato, utilizado quando data limite nao for definida no token, diferentes contratos podem utilziar diferentes estratégias com essa propriedade ex: Encerramento de um Leilão ou Airdrop
  * **`startDate`** *- Date*

    Data de inicio das operação do contrato, utilizado quando data de inicio não for definida no token, diferentes contratos podem utilziar diferentes estratégias com essa propriedade ex: Inicio de um Leilão ou Airdrop
  * **`mainCurrency`** *- String*

    Moeda aceita pelo contrato, todos os métodos de pagamento devem considerar a cotação dessa moeda para conversão do valor.
  * **`tags`** *- Array*

    Conjunto de tags da coleção.
  * **`status`** *- String*

    Status utilizado para ativar/desativar todas as operaçoes do contrato, ***não*** reflete o status da web3
  * **`statusWeb3`** *- String*

    Status do contrato na blockchain, diferentes tipos de contrato podem apresentar diferentes status, alguns contratos não possuem status web3 e são exibidos como 'active'. ex: active, paused, closed, destroyed.
    {% 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) Cria coleção para a qual tem a devida autorização

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

Nível de autorização necessário: `company_admin`*,* `company_moderator`, `community_admin`

#### Headers

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

#### Request Body

| Name                                          | Type     | Description                                         |
| --------------------------------------------- | -------- | --------------------------------------------------- |
| name<mark style="color:red;">\*</mark>        | String   | Nome da Coleção                                     |
| description<mark style="color:red;">\*</mark> | String   | Descrição da Coleção                                |
| communityId<mark style="color:red;">\*</mark> | String   | ID da Comunidade                                    |
| companyId<mark style="color:red;">\*</mark>   | String   | ID da Empresa                                       |
| contract<mark style="color:red;">\*</mark>    | Object   | Dados relativos ao contrato                         |
| type<mark style="color:red;">\*</mark>        | String   | Tipo de distribuição dos Tokens da Coleção          |
| expirationDate                                | DateTime | Data de fim da distribuição de Tokens da Coleção    |
| startDate                                     | DateTime | Data de inicio da distribuição de Tokens da Coleção |
| mainCurrency                                  | String   | Moeda principal da Coleção                          |
| status<mark style="color:red;">\*</mark>      | String   | Status de publicação da Coleção                     |
| statusWeb3<mark style="color:red;">\*</mark>  | String   | Status de publicação da Coleção na blockchain       |
| tags                                          | Array    | Tags da Coleção                                     |
| image<mark style="color:red;">\*</mark>       | String   | URL para a imagem de capa da Coleção                |
| symbol<mark style="color:red;">\*</mark>      | String   | Símbolo da Coleção                                  |

{% tabs %}
{% tab title="201: Created " %}
{% tabs %}
{% tab title="Exemplo de Resposta" %}

```javascript
{
    "id": "8798wdefs",
    "communityId": "8798wdefs",
    "companyId": "sd21fs5",
    "name": "Airdrop NFT",
    "description": "Distribuição de tokens não fungíveis",
    "symbol":"Um símbolo para o contrato",
    "image":"URL de uma imagem para ficar como capa da coleção",
    "type": "airdrop" | "sale" | "auction" | <others>,
    "contract": {
        "address": "0x1234567890abcdef12345678sssbcdef12345678",
        "network": "ethereum_mainnet" | "polygon_mainnet" | <others>,
        "pattern" : "ERC20" | "ERC721" | "ERC1155" | <others>,
        "ownerAddress": "0x1234567890abcdef12345678sssbcdef12345678",
        "methods": {
            "deploy": {
                "args": [/* argumentos do construtor do contrato em ordem e com tipo compatível */],
            },
            "balanceOf": {
                "methodABI": {/* ABI do método balanceOf */},            
            }        
        },
        "royalties": [
            {
                "id": "2343d23d234",
                "address": "0x1234567890abcdef1....78sssbcdef12345678",
                "percent": 20
            },
            {
                "id": "2343ds3d234",
                "address": "0x1234567890abcdef1....78sssbcdef12345678",
                "percent": 80
             }
        ],
        "split": [
            {
                "id": "2343d23d234",
                "address": "0x1234567890abcdef1....78sssbcdef12345678",
                "percent": 20
            },
            {
                "id": "2343ds3d234",
                "address": "0x1234567890abcdef1....78sssbcdef12345678",
                "percent": 80
             }
        ],
    }    
    "expirationDate": "2021-12-31T23:59:59Z",
    "startDate": "2021-01-01T00:00:00Z",
    "mainCurrency": "USD" | "BRL" | "ETH" | "MATIC" | <others>,
    "tags": ["ambiental", "arte", "empreeendedorismo"],
    "status": "private",
    "statusWeb3": "private"
    }
}
```

{% endtab %}

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

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

  Identificador próprio da coleção.
* **`communityId`** *- String*

  ID da Comunidade
* **`companyId`** *- String*

  ID da Empresa
* **`name`** *- String*

  Nome da coleção.
* **`description`** *- String*

  Descrição da coleçao
* **`symbol`** *- String*

  Símbolo da coleçao
* **`image`** *- String*

  URL da imagem de capa da coleção
* **`type`** *- String*

  Enumerador de identificação do tipo da coleção ex: airdrop
* **`contract`**
  * **`network`** *- String*

    Enumerador de identificação da rede ex: ethereum\_mainnet
  * **`address`** *- String*

    Endereço do contrato na rede blockchain
  * **`pattern`** *- String*

    Tipo base de contrato utilizado ex: ERC721A
  * ***`methods`** - Map\<string, object>*

    Lida de métodos Web3 Disponíveis no contrato
  * ***`royalties`** - Array\<object>*

    Lista de distribuição de royalties
  * ***`split`** - Array\<string>*

    Lista de split de pagamentos&#x20;
  * **`ownerAddress`** *- String*

    Endereço do dono do contrato.
* **`expirationDate`** *- Date*

  Data limite de operação do contrato, utilizado quando data limite nao for definida no token, diferentes contratos podem utilziar diferentes estratégias com essa propriedade ex: Encerramento de um Leilão ou Airdrop
* **`startDate`** *- Date*

  Data de inicio das operação do contrato, utilizado quando data de inicio não for definida no token, diferentes contratos podem utilziar diferentes estratégias com essa propriedade ex: Inicio de um Leilão ou Airdrop
* **`mainCurrency`** *- String*

  Moeda aceita pelo contrato, todos os métodos de pagamento devem considerar a cotação dessa moeda para conversão do valor.
* **`tags`** *- Array*

  Conjunto de tags da coleção.
* **`status`** *- String*

  Status utilizado para ativar/desativar todas as operaçoes do contrato, ***não*** reflete o status da web3
* **`statusWeb3`** *- String*

  Status do contrato na blockchain, diferentes tipos de contrato podem apresentar diferentes status, alguns contratos não possuem status web3 e são exibidos como 'active'. ex: active, paused, closed, destroyed.
  {% endtab %}
  {% endtabs %}
  {% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="403: Forbidden " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## (JWT) Lista as informações de uma coleção

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

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

#### Path Parameters

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

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

```javascript
{
    "id": "8798wdefs",
    "communityId": "8798wdefs",
    "companyId": "sd21fs5",
    "name": "Airdrop NFT",
    "description": "Distribuição de tokens não fungíveis",
    "type": "airdrop" | "sale" | "auction" | <others>,
    "contract": {
        "address": "0x1234567890abcdef12345678sssbcdef12345678",
        "network": "ethereum_mainnet" | "polygon_mainnet" | <others>,
        "pattern" : "ERC20" | "ERC721" | "ERC1155" | <others>,
        "ownerAddress": "0x1234567890abcdef12345678sssbcdef12345678",
        "methods": {
            "deploy": {
                "args": [/* argumentos do construtor do contrato em ordem e com tipo compatível */],
            },
            "balanceOf": {
                "methodABI": {/* ABI do método balanceOf */},            
            }        
        },
        "royalties": [
            {
                "id": "2343d23d234",
                "address": "0x1234567890abcdef1....78sssbcdef12345678",
                "percent": 20
            },
            {
                "id": "2343ds3d234",
                "address": "0x1234567890abcdef1....78sssbcdef12345678",
                "percent": 80
             }
        ],
        "split": [
            {
                "id": "2343d23d234",
                "address": "0x1234567890abcdef1....78sssbcdef12345678",
                "percent": 20
            },
            {
                "id": "2343ds3d234",
                "address": "0x1234567890abcdef1....78sssbcdef12345678",
                "percent": 80
             }
        ],
    }    
    "expirationDate": "2021-12-31T23:59:59Z",
    "startDate": "2021-01-01T00:00:00Z",
    "mainCurrency": "USD" | "BRL" | "ETH" | "MATIC" | <others>,
    "tags": ["ambiental", "arte", "empreeendedorismo"],
    "status": "private",
    "statusWeb3": "private"
    }
}
```

{% endtab %}

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

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

  Identificador próprio da coleção.
* **`communityId`** *- String*

  ID da Comunidade
* **`companyId`** *- String*

  ID da Empresa
* **`name`** *- String*

  Nome da coleção.
* **`description`** *- String*

  Descrição da coleçao
* **`type`** *- String*

  Enumerador de identificação do tipo da coleção ex: airdrop
* **`contract`**
  * **`network`** *- String*

    Enumerador de identificação da rede ex: ethereum\_mainnet
  * **`address`** *- String*

    Endereço do contrato na rede blockchain
  * **`pattern`** *- String*

    Tipo base de contrato utilizado ex: ERC721A
  * ***`methods`** - Map\<string, object>*

    Lida de métodos Web3 Disponíveis no contrato
  * ***`royalties`** - Array\<object>*

    Lista de distribuição de royalties
  * ***`split`** - Array\<string>*

    Lista de split de pagamentos&#x20;
  * **`ownerAddress`** *- String*

    Endereço do dono do contrato.
* **`expirationDate`** *- Date*

  Data limite de operação do contrato, utilizado quando data limite nao for definida no token, diferentes contratos podem utilziar diferentes estratégias com essa propriedade ex: Encerramento de um Leilão ou Airdrop
* **`startDate`** *- Date*

  Data de inicio das operação do contrato, utilizado quando data de inicio não for definida no token, diferentes contratos podem utilziar diferentes estratégias com essa propriedade ex: Inicio de um Leilão ou Airdrop
* **`mainCurrency`** *- String*

  Moeda aceita pelo contrato, todos os métodos de pagamento devem considerar a cotação dessa moeda para conversão do valor.
* **`tags`** *- Array*

  Conjunto de tags da coleção.
* **`status`** *- String*

  Status utilizado para ativar/desativar todas as operaçoes do contrato, ***não*** reflete o status da web3
* **`statusWeb3`** *- String*

  Status do contrato na blockchain, diferentes tipos de contrato podem apresentar diferentes status, alguns contratos não possuem status web3 e são exibidos como 'active'. ex: active, paused, closed, destroyed.
  {% 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 %}

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

{% 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 coleção para a qual tem a devida autorização

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

Nível de autorização necessário: `company_admin`*,* `company_moderator`, `community_admin`, `community_moderator`

#### Path Parameters

| Name                                           | Type   | Description   |
| ---------------------------------------------- | ------ | ------------- |
| collectionId<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                                         |
| -------------- | -------- | --------------------------------------------------- |
| name           | String   | Nome da Coleção                                     |
| description    | String   | Descrição da Coleção                                |
| communityId    | String   | ID da Comunidade                                    |
| companyId      | String   | ID da Empresa                                       |
| contract       | Object   | Dados relativos ao contrato                         |
| type           | String   | Tipo de distribuição dos Tokens da Coleção          |
| expirationDate | DateTime | Data de fim da distribuição de Tokens da Coleção    |
| startDate      | DateTime | Data de inicio da distribuição de Tokens da Coleção |
| mainCurrency   | String   | Moeda principal da Coleção                          |
| status         | String   | Status de publicação da Coleção                     |
| statusWeb3     | String   | Status de publicação da Coleção na blockchain       |
| tags           | Array    | Tags da Coleção                                     |

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

```javascript
{
    "id": "8798wdefs",
    "communityId": "8798wdefs",
    "companyId": "sd21fs5",
    "name": "Airdrop NFT",
    "description": "Distribuição de tokens não fungíveis",
    "type": "airdrop" | "sale" | "auction" | <others>,
    "contract": {
        "address": "0x1234567890abcdef12345678sssbcdef12345678",
        "network": "ethereum_mainnet" | "polygon_mainnet" | <others>,
        "pattern" : "ERC20" | "ERC721" | "ERC1155" | <others>,
        "ownerAddress": "0x1234567890abcdef12345678sssbcdef12345678",
        "methods": {
            "deploy": {
                "args": [/* argumentos do construtor do contrato em ordem e com tipo compatível */],
            },
            "balanceOf": {
                "methodABI": {/* ABI do método balanceOf */},            
            }        
        },
        "royalties": [
            {
                "id": "2343d23d234",
                "address": "0x1234567890abcdef1....78sssbcdef12345678",
                "percent": 20
            },
            {
                "id": "2343ds3d234",
                "address": "0x1234567890abcdef1....78sssbcdef12345678",
                "percent": 80
             }
        ],
        "split": [
            {
                "id": "2343d23d234",
                "address": "0x1234567890abcdef1....78sssbcdef12345678",
                "percent": 20
            },
            {
                "id": "2343ds3d234",
                "address": "0x1234567890abcdef1....78sssbcdef12345678",
                "percent": 80
             }
        ],
    }    
    "expirationDate": "2021-12-31T23:59:59Z",
    "startDate": "2021-01-01T00:00:00Z",
    "mainCurrency": "USD" | "BRL" | "ETH" | "MATIC" | <others>,
    "tags": ["ambiental", "arte", "empreeendedorismo"],
    "status": "private",
    "statusWeb3": "private"
    }
}
```

{% endtab %}

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

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

  Identificador próprio da coleção.
* **`communityId`** *- String*

  ID da Comunidade
* **`companyId`** *- String*

  ID da Empresa
* **`name`** *- String*

  Nome da coleção.
* **`description`** *- String*

  Descrição da coleçao
* **`type`** *- String*

  Enumerador de identificação do tipo da coleção ex: airdrop
* **`contract`**
  * **`network`** *- String*

    Enumerador de identificação da rede ex: ethereum\_mainnet
  * **`address`** *- String*

    Endereço do contrato na rede blockchain
  * **`pattern`** *- String*

    Tipo base de contrato utilizado ex: ERC721A
  * ***`methods`** - Map\<string, object>*

    Lida de métodos Web3 Disponíveis no contrato
  * ***`royalties`** - Array\<object>*

    Lista de distribuição de royalties
  * ***`split`** - Array\<string>*

    Lista de split de pagamentos&#x20;
  * **`ownerAddress`** *- String*

    Endereço do dono do contrato.
* **`expirationDate`** *- Date*

  Data limite de operação do contrato, utilizado quando data limite nao for definida no token, diferentes contratos podem utilziar diferentes estratégias com essa propriedade ex: Encerramento de um Leilão ou Airdrop
* **`startDate`** *- Date*

  Data de inicio das operação do contrato, utilizado quando data de inicio não for definida no token, diferentes contratos podem utilziar diferentes estratégias com essa propriedade ex: Inicio de um Leilão ou Airdrop
* **`mainCurrency`** *- String*

  Moeda aceita pelo contrato, todos os métodos de pagamento devem considerar a cotação dessa moeda para conversão do valor.
* **`tags`** *- Array*

  Conjunto de tags da coleção.
* **`status`** *- String*

  Status utilizado para ativar/desativar todas as operaçoes do contrato, ***não*** reflete o status da web3
* **`statusWeb3`** *- String*

  Status do contrato na blockchain, diferentes tipos de contrato podem apresentar diferentes status, alguns contratos não possuem status web3 e são exibidos como 'active'. ex: active, paused, closed, destroyed.
  {% endtab %}
  {% endtabs %}
  {% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="403: Forbidden " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

### **Gestão em Massa de Tokens da Coleção**

## Lista todos os tokens associadas à uma coleção

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

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

#### Path Parameters

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

#### Query Parameters

| Name   | Type   | Description                                    |
| ------ | ------ | ---------------------------------------------- |
| limit  | String | Limite de resultados na busca                  |
| offset | String | Quantidade de resultados para avançar da busca |
| tags   | Array  | Tags do Token                                  |

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

```javascript
[
    {
      "id":"5hws4eb18t0q",
      "tokenId": "1",
      "collectionId": "321",
      "supply": "10",
      "displayMediaUrl": "http://url.com/token",
      "displayMediaType": "image",
      "owners": [
        {
          "address": "0xer7s89gf4ger987tes978f",
          "quantity": "3"
        }
      ],
      "transactionType": "airdrop",
      "tags": ["ambiental", "arte", "empreeendedorismo"],
      "status": "public",
      "statusWeb3": "deployed"
    },
    {
      "id":"a8rt9red1vb",
      "tokenId": "2",
      "collectionId": "321",
      "supply": "5",
      "displayMediaUrl": "http://url.com/token",
      "displayMediaType": "gif",
      "owners": [
        {
          "address": "0x73w49f8we1fwe849f8fea",
          "quantity": "1"
        },
        {
          "address": "0x36lutsmerkug87fsQ4R",
          "quantity": "2"
        }
      ],
      "transactionType": "airdrop",
      "tags": ["ambiental", "arte", "empreeendedorismo"],
      "status": "private",
      "statusWeb3": "private"
    },
]
```

{% endtab %}

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

* **`tokens`**

  Armazena a lista de Tokens de uma coleção.

  * **`id`** *- String*\
    Identificador único de um Token no Banco de Dados.
  * **`name`** *- String*\
    Nome do Token.
  * **`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.
  * **`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*

    Armazena uma lista de proprietários de determinado Token

    * **`address`** *- String*

      Endereço blockchain de um proprietário do Token.
    * **`quantity`** *- String*

      Quantidade de Tokens que determinado proprietário possui.
  * **`metadata`** - Object

    Lista de metadados do Token, se houver
  * **`tags`** *- Array*

    Conjunto de tags do Token.
  * **`status`** *- String*

    Armazena o status da publicação do Token. Pode ser *`public`* ou *`private`*.
  * **`statusWeb3`** *- String*

    Armazena o status da publicação do Token na blockchain. Pode ser *`deployed`* ou *`private`*.&#x20;
    {% endtab %}
    {% endtabs %}
    {% endtab %}
    {% endtabs %}

## (JWT) Cadastro de tokens em massa para uma coleção

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

Nível de autorização necessário: `company_admin`*,* `company_moderator`, `community_admin`

#### Path Parameters

| Name                                           | Type   | Description   |
| ---------------------------------------------- | ------ | ------------- |
| collectionId<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                          |
| ---------------------------------------- | ----- | ------------------------------------ |
| tokens<mark style="color:red;">\*</mark> | Array | Lista com tokens a serem cadastrados |

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

```javascript
[
    {
      "id":"5hws4eb18t0q",
      "tokenId": "1",
      "collectionId": "321",
      "supply": "10",
      "displayMediaUrl": "http://url.com/token",
      "displayMediaType": "image",
      "owners": [
        {
          "address": "0xer7s89gf4ger987tes978f",
          "quantity": "3"
        }
      ],
      "transactionType": "airdrop",
      "tags": ["ambiental", "arte", "empreeendedorismo"],
      "status": "private",
      "statusWeb3": "private"
    },
    {
      "id":"a8rt9red1vb",
      "tokenId": "2",
      "collectionId": "321",
      "supply": "5",
      "displayMediaUrl": "http://url.com/token",
      "displayMediaType": "gif",
      "owners": [
        {
          "address": "0x73w49f8we1fwe849f8fea",
          "quantity": "1"
        },
        {
          "address": "0x36lutsmerkug87fsQ4R",
          "quantity": "2"
        }
      ],
      "transactionType": "airdrop",
      "tags": ["ambiental", "arte", "empreeendedorismo"],
      "status": "private",
      "statusWeb3": "private"
    },
]
```

{% endtab %}

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

* **`tokens`**

  Armazena a lista de Tokens adicionados à uma coleção.

  * **`id`** *- String*\
    Identificador único de um Token no Banco de Dados.
  * **`name`** *- String*\
    Nome do Token.
  * **`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.
  * **`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*

    Armazena uma lista de proprietários de determinado Token

    * **`address`** *- String*

      Endereço blockchain de um proprietário do Token.
    * **`quantity`** *- String*

      Quantidade de Tokens que determinado proprietário possui.
  * **`metadata`** - Object

    Lista de metadados do Token, se houver
  * **`tags`** *- Array*

    Conjunto de tags do Token.
  * **`status`** *- String*

    Armazena o status da publicação do Token. Pode ser *`public`* ou *`private`*.
  * **`statusWeb3`** *- String*

    Armazena o status da publicação do Token na blockchain. Pode ser *`deployed`* ou *`private`*.&#x20;
    {% 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>

### Gestão do contrato Web3

## (JWT/Wallet) Deploy de Contrato na Web3

<mark style="color:green;">`POST`</mark> `https://goblockchain.io/gotokens-api/v1/collections/:collectionId/manage/web3/deploy`

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. Caso o contrato não possua campos próprios para owner no construtor, essa carteira será o primeiro owner do contrato.

#### Path Parameters

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

#### Headers

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

{% 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 em lote de Tokens na Web3

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

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. Caso o método não possua campos próprios para owner dos tokens recém criados, eles serão propriedade do contrato e será gerenciado pela carteira do  owner do contrato.

#### Path Parameters

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

#### Headers

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

{% 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) Pausar um contrato na Web3

<mark style="color:green;">`POST`</mark> `https://goblockchain.io/gotokens-api/v1/collections/:collectionId/manage/web3/stop`

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

É necessário um carteira com saldo vinculada ao usuário. É necessário que o contrato possua esse método e a carteira precisa ter permissão de execução do método no contrato

#### Path Parameters

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

#### Headers

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

{% 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) Libera um contrato pausado na Web3

<mark style="color:green;">`POST`</mark> `https://goblockchain.io/gotokens-api/v1/collections/:collectionId/manage/web3/start`

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

É necessário um carteira com saldo vinculada ao usuário, é necessário que o contrato possua esse método e a carteira precisa ter permissão de execução do método no contrato.

#### Path Parameters

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

#### Headers

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

{% 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) Lista de métodos web3 disponíveis no contrato

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

Nível de autorização necessário: `company_admin`, `community_admin`

#### Path Parameters

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

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

```javascript
{
    "methods": {
        "balanceOf": {
            "methodABI": {/* ABI do método balanceOf */},
            "args": {
                "name": "walletAddress",
                "type": "string" 
        }        
    },
}
```

{% endtab %}

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

* **`methods`** *- Array of Objects*

  Armazena as informações de cada método web3 disponível no contrato, com exceção do construtor

  * **`:methodName`** *- String (Nome do médoto web3)*
    * **`methodAbi`** *- Array of Objects*\
      ABI do método web3
    * **`args`** *- Array of Objects*

      Lista de argumentos do método

      * **`name`**\
        Nome do parâetro
      * **`type`**\
        Tipo do parâmetro
        {% 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 %}

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

{% 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) Executa qualquer método de leitura do contrato diretamente na Web3

<mark style="color:blue;">`GET`</mark> `https://goblockchain.io/gotokens-api/v1/collections/:collectionId/manage/web3/:method-name`

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

Diferentes métodos possuem diferentes parâmetros de entrada.

#### Path Parameters

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

#### Headers

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

{% tabs %}
{% tab title="200: OK Diferentes métodos possuem diferentes retornos" %}

{% 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) Executa qualquer método de escrita do contrato diretamente na Web3

<mark style="color:green;">`POST`</mark> `https://goblockchain.io/gotokens-api/v1/collections/:collectionId/manage/web3/:method-name`

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

É necessário um carteira com saldo vinculada ao usuário, é necessário que o contrato possua esse método, e a carteira precisa ter permissão de execução do método no contrato.

Diferentes métodos possuem diferentes parâmetros de entrada.

#### Path Parameters

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

#### Headers

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

{% tabs %}
{% tab title="200: OK Diferentes métodos possuem diferentes retornos" %}

{% 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/colecoes.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.
