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.
É 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
Exemplo de Objeto de Coleção
{"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"}
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
Nível de autorização necessário: company_admin, company_moderator, community_admin, community_moderator
Caso queira, você pode realizar a pesquisa apenas com o JWT no Header.
Query Parameters
Headers
[ {"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" }]
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
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.
(JWT) Cria coleção para a qual tem a devida autorização
Nível de autorização necessário: company_admin, company_moderator, community_admin
Headers
Request Body
{"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" }}
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
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.
Nível de permissionamento necessário: company_admin, company_moderator, community_admin, community_moderator
Path Parameters
{"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" }}
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
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.
(JWT) Altera coleção para a qual tem a devida autorização
Nível de autorização necessário: company_admin, company_moderator, community_admin, community_moderator
Path Parameters
Headers
Request Body
{"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" }}
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
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.
É 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.
É 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.
É 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
É 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
Headers
(JWT) Lista de métodos web3 disponíveis no contrato
É 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.