Usuário

Resumo

Nessa API ocorre o registro dos usuários com perfil de membros de uma comunidade ou usuário de uma empresa.

O usuário como membro terá acesso a sua que ele pertence e o de empresa terá acesso as funcionalidades da empresa criada.

Os usuários serão associados a permissões especificas que darão acessos específicos a nível de funcionalidades e sub funcionalidades.

Como funciona

O cliente com perfil de empresa passa pelo onboarding e com isso recebe um um usuário e senha para que possa utilizar na autenticação e receber a credencial "bearer" token.

Objeto User

Exemplo de Objeto de Usuário
"user": {
  "id": "633adbcaf51f5c42246d6ea6",
  "name": "Clarisse",
  "email": "clarisse@gmail.com",
  "password": "***********",
  "address": "Av. Aristides Cunha, 1710, Itaiangá, São Paulo - SP - Brasil",
  "status": "active",
  "wallets": [
    {
      "id": "g1sr38g7sr98",
      "address": "0x123",
      "origin": "internal",
      "providerId": "35wda23dfes5",
      "provider": "firebase",
      "privateKey": "***********",
      "rescueDate": null,
      "rescueIp": null,
    },
    {
      "id": "es454fwse1fg",
      "address": "0x123",
      "origin": "external"
    }
  ]
}

Endpoints

/User

(JWT) Lista dados do usuário logado

GET https://goblockchain.io/gotokens-api/v1/user

Nível de permissionamento necessário: qualquer

Headers

NameTypeDescription

authorization*

Bearer

JWT

{
  "id": "633adbcaf51f5c4285saea8",
  "name": "User 1",
  "email": "user_1@gmail.com",
  "address": "Av. Aristides Cunha, 1710, Itaiangá, São Paulo - SP - Brasil",
  "companies":[
    {
      "id": "5i8u3d",
      "role": "company_moderator"
    }
  ],
  "communities":[
    {
      "id": "4ew8wd",
      "role": "community_admin"
    }
  ]
}

(JWT) Salva as informações alteradas do usuário

PATCH https://goblockchain.io/gotokens-api/v1/user

Nível de permissionamento necessário: qualquer

Headers

NameTypeDescription

authorization*

Bearer

JWT

Request Body

NameTypeDescription

name

String

Nome do Usuário.

email

String

E-mail do Usuário.

password

String

Senha do Usuário.

address

String

Endereço do Usuário.

{
  "id": "633adbcaf51f5c42246d6ea6",
  "name": "Clarisse",
  "email": "clarisse@gmail.com",
  "password": "***********",
  "address": "Av. Aristides Cunha, 1710, Itaiangá, São Paulo - SP - Brasil"
}

/Wallets

(JWT) Lista as wallets com status "active" do usuário logado

GET https://goblockchain.io/gotokens-api/v1/wallets

Nível de permissionamento necessário: qualquer

Query Parameters

NameTypeDescription

limit

String

Limite de resultados na busca

offset

String

Quantidade de resultados para avançar da busca

Headers

NameTypeDescription

authorization*

Bearer

JWT

{
    "wallets": [
    {
        "id": "5acfdde8-5c8c-11ed-9b6a-0242ac120002",  
        "address": "0x71080bc5bb5303053ef17ece60890f7e65573150",
        "status": "active",
        "provider": "firebase_google",
        "providerId": "ddsooidnfos42x",
        "email": "john_doe@gmail.com",
        "blockchain": "ethereum",
        "network": "ethereum_mainnet"
    },
    {
        "id": "a049ff02-5c7d-11ed-9b6a-0242ac120002",
        "address": "0x44c1767ed909e808cee9a92d016ce3956d60871f",
        "status": "active"
    },
    {
        "id": "5acfdde8-5c8c-11ed-9b6a-0242ac120002",  
        "address": "0x71080bc5bb5303053ef17ece60890f7e65573150",
        "status": "active",
        "blockchain": "ethereum",
        "network": "ethereum_mainnet"
    }
  ]
}

(JWT) Cria uma wallet com as informações passadas

POST https://goblockchain.io/gotokens-api/v1/wallets

Existem 3 padrões de parâmetros possíveis para criar uma wallet:

1 - Enviando apenas uma address + blockchain e network no body da requisição, é importada uma Wallet como externa, guardando apenas suas informações públicas.

2 - Enviando uma privateKey + blockchain e network no body da requisição, é instanciada uma Wallet assim como a original, a partir dessa privateKey.

3 - Enviando email, providerId e provider no body da requisição, é criada uma wallet nova, do zero. * Não há necessidade de envio de blockchain e network nesse caso. As wallets serão criadas por padrão em Ethereum

Nível de permissionamento necessário: qualquer

Headers

NameTypeDescription

authorization*

Bearer

JWT

Request Body

NameTypeDescription

address

String

Chave pública da Wallet

privateKey

String

Chave privada da Wallet

email

String

Email vindo do provider de autenticação externo de conta social (Ex: autenticação do Google via Firebase)

provider

String

Provider de autenticação externo de conta social (Ex: Google Firebase)

providerId

Id associado à conta social com a qual o usuário se cadastrou.

blockchain

Enum

"ethereum"

network

Enum

"ethereum_mainnet" | "ethereum_goerli" | "polygon_matic" | "celo_alfajores"

Enviando a privateKey + blockchain e network na requisição, é instanciada uma Wallet no banco de dados e a sua privateKey é salva em um Vault.

{
    "id": "5acfdde8-5c8c-11ed-9b6a-0242ac120002",  
    "address": "0x71080bc5bb5303053ef17ece60890f7e65573150",
    "status": "active",
    "blockchain": "ethereum",
    "network": "ethereum_mainnet"
}

Enviando address + blockchain e network na requisição, é associada uma Wallet externa pelo endereço da wallet ao usuário.

{
    "id": "5acfdde8-5c8c-11ed-9b6a-0242ac120002",  
    "address": "0x71080bc5bb5303053ef17ece60890f7e65573150",
    "status": "active",
    "blockchain": "ethereum",
    "network": "ethereum_mainnet"
}

Enviando email, providerId e provider no body da requisição, é criada uma wallet nova, do zero com dados relacionados ao Provider externo de autenticação via conta social, além dos dados da carteira.

{
    "id": "5acfdde8-5c8c-11ed-9b6a-0242ac120002",  
    "address": "0x71080bc5bb5303053ef17ece60890f7e65573150",
    "status": "active",
    "provider": "firebase_google",
    "providerId": "ddsooidnfos42x",
    "email": "john_doe@gmail.com",
    "blockchain": "ethereum",
    "network": "ethereum_mainnet"
}

(JWT) Lista dados de uma wallet do usuário logado

GET https://goblockchain.io/gotokens-api/v1/wallets/:walletId

Nível de permissionamento necessário: qualquer

Path Parameters

NameTypeDescription

walletId*

String

ID da Wallet

Headers

NameTypeDescription

authorization*

Bearer

JWT

{
    "id": "1",  
    "address": "0x041234567890",
    "providerId": "35wda23dfes5",
    "provider": "firebase_facebook",
    "rescueDate": "01/01/2009",
    "rescueIp": "192.168.100.002",
    "status": "active",
    "blockchain": "ethereum",
    "network": "ethereum_mainnet"
}

(JWT) Altera o status de uma wallet do usuário logado

PATCH https://goblockchain.io/gotokens-api/v1/wallets/:walletId

Nível de permissionamento necessário: qualquer

Headers

NameTypeDescription

authorization*

Bearer

JWT

Request Body

NameTypeDescription

status*

String

"active" | "disabled"

{
    "id": "897erfs123grf",  
    "address": "0x041234567890",
    "origin": "internal",
    "providerId": "35wda23dfes5",
    "provider": "firebase_google",
    "rescueDate": null,
    "rescueIp": null,
    "status": "disabled"
}

(JWT) Revela uma chave privada de uma wallet do usuário logado

GET https://goblockchain.io/gotokens-api/v1/wallets/:walletId/privatekey

Ao revelar a chave, registramos a data no banco.

Nível de permissionamento necessário: qualquer

Path Parameters

NameTypeDescription

walletId*

String

ID da Wallet

Headers

NameTypeDescription

authorization*

Bearer

JWT

{
    "id": "r9etw13fgsd5",  
    "address": "0x041234567890",
    "origin": "internal",
    "providerId": "35wda23dfes5",
    "provider": "firebase",
    "privateKey": "ddw8431dwdwhtf4845htfcx",
    "rescueDate": "01/01/2009",
    "rescueIp": "192.168.100.002",
    "status": "active"
}

/Users

(JWT) Lista usuários de acordo com os campos buscados e permissionamento

GET https://goblockchain.io/gotokens-api/v1/users

Lista usuários que fazem parte da empresa ou comunidade do usuário logado.

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

Query Parameters

NameTypeDescription

name

String

Nome do Usuário

email

String

E-mail do Usuário

status

String

"active" | "disabled"

limit

String

Limite de resultados na busca

offset

String

Quantidade de resultados para avançar da busca

Headers

NameTypeDescription

authorization*

Bearer

JWT

{
    "users":[
      {
        "id": "633adbcaf51f5c4285saea8",
        "name": "User 1",
        "email": "user_1@gmail.com",
        "status": "active",
        "companies":[
          {
            "id": "5i8u3d",
            "role": "company_moderator"
          }
        ],
        "communities":[
          {
            "id": "4ew8wd",
            "role": "community_admin"
          }
        ]
      },
      {
        "id": "633adbcaf51f5c42246dawd7",
        "name": "User 2",
        "email": "user_2@gmail.com",
        "status": "active",
        "companies":[]
        "communities":[
          {
            "id": "4ew8wd",
            "role": "community_moderator"
          }
        ]
      },
      {
        "id": "633adbcaf51f5c42246bxb43",
        "name": "User 5",
        "email": "user_5@gmail.com",
        "status": "active",
        "companies":[],
        "communities":[]
      }
    ]
}

(JWT) Cria um usuário e uma wallet com as informações do usuário passadas

POST https://goblockchain.io/gotokens-api/v1/users

Nível de permissionamento necessário: company_admin

Request Body

NameTypeDescription

name

String

Nome do Usuário

email*

String

E-mail do Usuário (único)

password*

String

Senha do Usuário

address

String

Endereço do Usuário

{
  "id": "633adbcaf51f5c42246d6ea6",
  "name": "Clarisse",
  "email": "clarisse@gmail.com",
  "address": "Av. Aristides Cunha, 1710, Itaiangá, São Paulo - SP - Brasil",
  "status": "active",
  "walletPublicKey": "0x041234567890"
}

(JWT) Lista dados de um usuário de acordo com o permissionamento

GET https://goblockchain.io/gotokens-api/v1/users/:userId

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

Path Parameters

NameTypeDescription

userId*

String

ID do Usuário

Headers

NameTypeDescription

authorization*

Bearer

JWT

{
  "id": "633adbcaf51f5c42246d6ea6",
  "name": "Clarisse",
  "email": "clarisse@gmail.com",
  "address": "Av. Aristides Cunha, 1710, Itaiangá, São Paulo - SP - Brasil",
  "status": "active"
}

/Users/Companies

(JWT) Lista as empresas em que um determinado usuário tem acesso

GET https://goblockchain.io/gotokens-api/v1/users/:userId/companies

Lista à quais empresas um determinado usuário tem acesso em comum com o usuário logado. O acesso em comum garante que um usuário veja apenas empresas da qual ele também faz parte.

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

Path Parameters

NameTypeDescription

userId*

String

ID do Usuário

Query Parameters

NameTypeDescription

limit

String

Limite de resultados da busca

offset

String

Quantidade de resultados para avançar da busca

Headers

NameTypeDescription

authorization*

Bearer

JWT

{
    "companies": [
      {
        "id": "123",
        "name": "Company A"
        "role": "company_moderator",
      },
      {
        "id": "456",
        "name": "Company B"
        "role": "company_admin",
      }
  ]
}

/Users/Communities

(JWT) Lista as comunidades em que um usuário participa

GET https://goblockchain.io/gotokens-api/v1/users/:userId/communities

Lista à quais comunidades um determinado usuário tem acesso em comum com o usuário logado. O acesso em comum garante que um usuário veja apenas comunidades da qual ele também faz parte.

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

Path Parameters

NameTypeDescription

userId*

String

ID do Usuário

Query Parameters

NameTypeDescription

limit

String

Limite de resultados da busca

offset

String

Quantidade de resultados para avançar da busca

Headers

NameTypeDescription

authorization*

Bearer

JWT

{
    "communities": [
    {
      "publicId": "123",
      "role": "member",
      "name": "Community A",
      "description": "Description of Community A"
    },
    {
      "publicId": "456",
      "role": "admin",
      "name": "Community B",
      "description": "Description of Community B"
    }
  ]
}

/Users/Transactions

Fluxo de Status dos Pedidos

NomeDescrição

opened_order

Quando um usuário inicia uma solicitação de compra ou venda, é criado um Pedido com o status opened_order.

pending_payment

Ao selecionar o meio de pagamento e gerar a solicitação de pagamento, o status do Pedido é alterado para pending_payment.

processing_payment

Ao ser reconhecido o pagamento por meio do gateway, a ordem é processada e aguarda o retorno do gateway para o recolhimento do valor pago, identificado pelo status processing_payment.

approved_payment

Aprovado e recebido o pagamento, o status do pedido é alterado para approved_payment e é iniciado o processo de envio do token.

queue_send_token

Quando o token entra na fila para ser mintado/transferido, ele recebe o status queue_send_token.

success_send_token

Quando o token foi devidamente enviado ao seu destinatário, o fluxo de compra termina com o status success_send_token.

failed

Caso haja falha em algum dos passos anteriores, o status failed é aplicado e o pedido entra em uma fila de retentativas.

cancelled

Caso o numero de retentativas em algum dos status seja maior que o estipulado, o envio do token é cancelado, finalizando o fluxo com o status cancelled.

refounded

Caso o cancelamento de um pedido ocorra antes do envio do NFT com sucesso para seu comprador, o pagamento do mesmo será estornado para a origem e resultará no status de refounded.

(JWT) Lista as transações recentes de um usuário

GET https://goblockchain.io/gotokens-api/v1/users/:userId/transactions

Lista informações básicas das transações recentes de um determinado usuário .

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

Path Parameters

NameTypeDescription

userId*

String

ID do Usuário

Query Parameters

NameTypeDescription

limit

String

Limite de resultados da busca

offset

String

Quantidade de resultados para avançar da busca

lastStatus

String

Último status da transação

Headers

NameTypeDescription

authorization*

Bearer

JWT

{
    "transactions": [
    {
      "id":"wda8971da3w2"
      "item":{
        "tokenId": "8wad12wa3ds",
        "communityId": "8f7es7fs65",
        "companyId": "ef7sef5sef"
      },
      "operation":{
         "type": "buy",
      },
      "payment": {
        "price": "120",
        "decimals": "2",
        "currency": "ETH",
        "method": "pix",
      }
      "lastStatus": "success_send_token"
    },
    {
      "id":"2"
      "item":{
        "tokenId": "ferswad85f8",
        "communityId": "8f7es7fs65",
        "companyId": "ef7sef5sef"
      },
      "operation":{
         "type": "sell",
      },
      "payment": {
        "price": "70",
        "decimals": "2",
        "currency": "MATIC",
        "method": "credit_card",
      }
      "lastStatus": "processing_payment"
    },
  ]
}

Last updated