# 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

<details>

<summary>Exemplo de Objeto de Usuário</summary>

```javascript
"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"
    }
  ]
}
```

</details>

### Endpoints

* [**GET** /v1/user](#jwt-lista-usuarios-de-acordo-com-os-campos-buscados-e-permissionamento)
* [**PATCH** /v1/user](#jwt-salva-as-informacoes-alteradas-do-usuario)
* [**GET** /v1/wallets](#jwt-lista-as-wallets-de-um-usuario-de-acordo-com-a-permissao)
* [**POST** /v1/wallets](#jwt-salva-ou-cria-uma-wallet-com-as-informacoes-passadas)
* [**GET** /v1/wallets/:wallet](#jwt-lista-dados-de-uma-wallet-do-usuario-logado)
* [**PATCH** /v1/wallets/:wallet](#jwt-cria-uma-wallet-com-as-informacoes-passadas-1)
* [**GET** /v1/users](#jwt-lista-usuarios-de-acordo-com-os-campos-buscados)
* [**POST** /v1/users ](#jwt-cria-um-usuario-com-as-informacoes-do-user-passadas)
* [**GET** /v1/users/:id ](#jwt-lista-dados-de-um-usuario)
* [**GET** /v1/users/:id/companies](#jwt-lista-as-empresas-que-um-usuario-participa)
* [**GET** /v1/users/:id/communities](#jwt-lista-as-comunidades-que-um-usuario-participa)
* [**GET** /v1/users/:id/transactions](#jwt-lista-as-transacoes-recentes-de-um-usuario)

### /User

## (JWT) Lista dados do usuário logado

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

Nível de permissionamento necessário: qualquer

#### 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": "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"
    }
  ]
}
```

{% endtab %}

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

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

  Identificador único do usuário no Banco de Dados.

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

  Nome do usuário.

* **`email`** *- String*

  E-mail do usuário.

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

  Endereço do usuário.

* **`companies`** *- Array of Objects*

  Armazena o vínculo do usuário em diversas empresas, caso exista.

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

    Identificador da empresa.
  * **`role`** *- String*

    Identificador do nível de permissionamento na empresa.

* **`communities`** *- Array of Objects*

  Armazena o vínculo do usuário em diversas comunidades, caso exista.

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

    Identificador da comunidade.
  * **`role`** *- String*

    Identificador do nível de permissionamento na comunidade.
    {% 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 %}

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

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

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

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

Nível de permissionamento necessário: qualquer

#### Headers

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

#### Request Body

| Name     | Type   | Description          |
| -------- | ------ | -------------------- |
| 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. |

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

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

{% endtab %}

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

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

  Identificador único de um usuário no Banco de Dados.

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

  Nome do usuário.

* **`email`** *- String*

  E-mail do usuário.

* **`password`** *- String*

  Senha do usuário armazenada de forma criptografada em um Vault.

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

  Endereço do usuário.
  {% endtab %}
  {% endtabs %}
  {% endtab %}

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

|   HTTP CODE   |                           |                                                                      |
| :-----------: | ------------------------- | -------------------------------------------------------------------- |
|      400      | MISSING\_BODY             | HTTP body is required.                                               |
|      400      | UNKNOWN\_FIELD\_EXCEPTION | The indicated field is not allowed for this operation or is unknown. |
|      400      | INVALID\_ID               | The ID is invalid.                                                   |
|      400      | INVALID\_NAME             | NAME must be string.                                                 |
|      400      | INVALID\_PASSWORD         | PASSWORD is invalid.                                                 |
|      400      | INVALID\_ADDRESS          | ADDRESS must be string.                                              |
|  {% 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 %}

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

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

### /Wallets

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

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

Nível de permissionamento necessário: qualquer

#### Query Parameters

| Name   | Type   | Description                                    |
| ------ | ------ | ---------------------------------------------- |
| limit  | String | Limite de resultados na busca                  |
| offset | String | Quantidade de resultados para avançar da busca |

#### Headers

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

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

```javascript
{
    "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"
    }
  ]
}
```

{% endcode %}
{% endtab %}

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

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

  Identificador único de uma Wallet no Banco de Dados.

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

  Endereço publico da carteira do usuário.

* **`providerId`** *- String*

  Identificador único associado à conta social com a qual o usuário criou a carteira. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* **`provider`** *- String*

  Nome do provedor da carteira criada pelo sistema da goTokens com login social. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* **`rescueDate`** *- DateTime*

  Informa a data de revelação da `privateKey` da carteira do usuário, caso essa já tenha sido revelada. Caso contrário, esse campo é armazenado como `null`. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* **`status`** *- String*

  Status da wallet no sistema. Pode variar entre `active` ou `disabled`.
  {% 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 %}

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

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

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

<mark style="color:green;">`POST`</mark> `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

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

#### Request Body

| Name       | Type   | Description                                                                                               |
| ---------- | ------ | --------------------------------------------------------------------------------------------------------- |
| 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"                        |

{% tabs %}
{% tab title="201: Created " %}
{% tabs %}
{% tab title="Exemplo de Resposta" %}
Enviando a `privateKey` + `blockchain` e `network` na requisição, é instanciada uma Wallet no banco de dados e a sua privateKey é salva em um Vault.

```javascript
{
    "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.

```javascript
{
    "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.

```javascript
{
    "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"
}
```

{% endtab %}

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

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

  Identificador único de uma Wallet no Banco de Dados.

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

  Endereço publico da carteira do usuário.

* **`origin`** *- String*

  Origem da carteira do usuário. Se for criada pela plataforma da goTokens, esse campo será preenchido como `internal`. Caso a carteira tenha sido criada em outros provedores (Metamask, Torus, etc), ela ainda pode ser importada e esse campo será preenchido com `external`.

* **`providerId`** *- String*

  Identificador único associado à conta social com a qual o usuário criou a carteira. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* **`provider`** *- String*

  Nome do provedor da carteira criada pelo sistema da goTokens com login social. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* **`privateKey`** *- String*

  Endereço privado da carteira do usuário, guardado de forma criptografada em um Vault. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* **`rescueDate`** *- DateTime*

  Informa a data de revelação da `privateKey` da carteira do usuário, caso essa já tenha sido revelada. Caso contrário, esse campo é armazenado como `null`. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* **`status`** *- String*

  Status da wallet no sistema. Pode variar entre `active` ou `disabled`.
  {% endtab %}
  {% endtabs %}
  {% endtab %}

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

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

{% tab title="403: Forbidden " %}
{% tabs %}
{% tab title="First Tab" %}

<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 %}

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

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

Nível de permissionamento necessário: qualquer

#### Path Parameters

| Name                                       | Type   | Description  |
| ------------------------------------------ | ------ | ------------ |
| walletId<mark style="color:red;">\*</mark> | String | ID da Wallet |

#### Headers

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

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

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

{% endtab %}

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

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

  Identificador único de uma Wallet no Banco de Dados.

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

  Endereço publico da carteira do usuário.

* **`origin`** *- String*

  Origem da carteira do usuário. Se for criada pela plataforma da goTokens, esse campo será preenchido como `internally_created`, se for associada ao endereço de uma carteira do usuário, `associated_by_address, se for importada via privateKey,` imported\_from\_pk\`

* **`providerId`** *- String*

  Identificador único associado à conta social com a qual o usuário criou a carteira. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* **`provider`** *-* Enum (`firebase_google` | `facebook_google)`

  Nome do provedor da carteira criada pelo sistema da goTokens com login social. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* **`privateKey`** *- String*

  Endereço privado da carteira do usuário, guardado de forma criptografada em um Vault. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* `network` - Enum (`ethereum_mainnet` | `ethereum_goerli` | `polygon_matic` | `celo_alfajores`)

* **`rescueDate`** *- DateTime*

  Informa a data de revelação da `privateKey` da carteira do usuário, caso essa já tenha sido revelada. Caso contrário, esse campo é armazenado como `null`. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* **`status`** *- String*

  Status da wallet no sistema. Pode variar entre `active` ou `disabled`.
  {% 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" %}

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

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

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

Nível de permissionamento necessário: qualquer

#### Headers

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

#### Request Body

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

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

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

{% endtab %}

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

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

  Identificador único de uma Wallet no Banco de Dados.

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

  Endereço publico da carteira do usuário.

* **`origin`** *- String*

  Origem da carteira do usuário. Se for criada pela plataforma da goTokens, esse campo será preenchido como `internal`. Caso a carteira tenha sido criada em outros provedores (Metamask, Torus, etc), ela ainda pode ser importada e esse campo será preenchido com `external`.

* **`providerId`** *- String*

  Identificador único associado à conta social com a qual o usuário criou a carteira. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* **`provider`** *- String*

  Nome do provedor da carteira criada pelo sistema da goTokens com login social. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* **`privateKey`** *- String*

  Endereço privado da carteira do usuário, guardado de forma criptografada em um Vault. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* **`rescueDate`** *- DateTime*

  Informa a data de revelação da `privateKey` da carteira do usuário, caso essa já tenha sido revelada. Caso contrário, esse campo é armazenado como `null`. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* **`status`** *- String*

  Status da wallet no sistema. Pode variar entre `active` ou `disabled`.
  {% endtab %}
  {% endtabs %}
  {% endtab %}

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

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

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

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

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

<mark style="color:blue;">`GET`</mark> `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

| Name                                       | Type   | Description  |
| ------------------------------------------ | ------ | ------------ |
| walletId<mark style="color:red;">\*</mark> | String | ID da Wallet |

#### 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": "r9etw13fgsd5",  
    "address": "0x041234567890",
    "origin": "internal",
    "providerId": "35wda23dfes5",
    "provider": "firebase",
    "privateKey": "ddw8431dwdwhtf4845htfcx",
    "rescueDate": "01/01/2009",
    "rescueIp": "192.168.100.002",
    "status": "active"
}
```

{% endtab %}

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

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

  Identificador único de uma Wallet no Banco de Dados.

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

  Endereço publico da carteira do usuário.

* **`origin`** *- String*

  Origem da carteira do usuário. Se for criada pela plataforma da goTokens, esse campo será preenchido como `internal`. Caso a carteira tenha sido criada em outros provedores (Metamask, Torus, etc), ela ainda pode ser importada e esse campo será preenchido com `external`.

* **`providerId`** *- String*

  Identificador único associado à conta social com a qual o usuário criou a carteira. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* **`provider`** *- String*

  Nome do provedor da carteira criada pelo sistema da goTokens com login social. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* **`privateKey`** *- String*

  Endereço privado da carteira do usuário, guardado de forma criptografada em um Vault. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* **`rescueDate`** *- DateTime*

  Informa a data de revelação da `privateKey` da carteira do usuário, caso essa já tenha sido revelada. Caso contrário, esse campo é armazenado como `null`. Campo válido apenas para carteiras criadas internamente pela plataforma da goTokens.

* **`status`** *- String*

  Status da wallet no sistema. Pode variar entre `active` ou `disabled`.
  {% 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" %}

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

### /Users

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

<mark style="color:blue;">`GET`</mark> `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

| Name   | Type   | Description                                    |
| ------ | ------ | ---------------------------------------------- |
| 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

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

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

```javascript
{
    "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":[]
      }
    ]
}
```

{% endtab %}

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

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

  Identificador único de um usuário no Banco de Dados.

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

  Nome do usuário.

* **`email`** *- String*

  E-mail do usuário.

* **`status`** *- String*

  Status do usuário no sistema. Pode variar entre `active` ou `disabled`.

* **`companies`** *- Array of Objects*

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

    Identificador próprio da empresa no banco de dados.
  * **`role`** *- String*

    Nome do nível de permissionamento do usuário vinculado àquela empresa.

* **`comunidade`** *- Array of Objects*
  * **`id`** *- String*

    Identificador próprio da comunidade no banco de dados.
  * **`role`** *- String*

    Nome do nível de permissionamento do usuário vinculado àquela comunidade.
    {% 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 %}

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

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

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

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

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

#### Request Body

| Name                                       | Type   | Description               |
| ------------------------------------------ | ------ | ------------------------- |
| name                                       | String | Nome do Usuário           |
| email<mark style="color:red;">\*</mark>    | String | E-mail do Usuário (único) |
| password<mark style="color:red;">\*</mark> | String | Senha do Usuário          |
| address                                    | String | Endereço do Usuário       |

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

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

{% endtab %}

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

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

  Identificador único de um usuário no Banco de Dados.

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

  Nome do usuário.

* **`email`** *- String*

  E-mail do usuário.

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

  Endereço do usuário.

* **`status`** *- String*

  Status do usuário no sistema. Pode variar entre `active` ou `disabled`.
  {% endtab %}
  {% endtabs %}
  {% endtab %}

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

|   HTTP CODE   |    CODE MESSAGE   |                       MESSAGE                       |
| :-----------: | :---------------: | :-------------------------------------------------: |
|      400      |         1         |                     Params Error                    |
|      400      |         5         |     Must provide your access\_token to proceed.     |
|      400      |        1001       |       Email format must be <email@email.com>.       |
|      400      |        2001       | Already posted the same request in the last minute. |
|      400      |        4019       |           password atributte can't be null          |
|      400      |        4020       |            email atributte can't be null            |
|      400      |   INVALID\_NAME   |                 Name must be string.                |
|      400      |   INVALID\_EMAIL  |                Email must be string.                |
|      400      | VALIDATION\_ERROR |                Password must be valid               |
|  {% 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" %}

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

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

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

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

#### Path Parameters

| Name                                     | Type   | Description   |
| ---------------------------------------- | ------ | ------------- |
| userId<mark style="color:red;">\*</mark> | String | ID do Usuário |

#### 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": "633adbcaf51f5c42246d6ea6",
  "name": "Clarisse",
  "email": "clarisse@gmail.com",
  "address": "Av. Aristides Cunha, 1710, Itaiangá, São Paulo - SP - Brasil",
  "status": "active"
}
```

{% endtab %}

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

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

  Identificador único de um usuário no Banco de Dados.

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

  Nome do usuário.

* **`email`** *- String*

  E-mail do usuário.

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

  Endereço do usuário.

* **`status`** *- String*

  Status do usuário no sistema. Pode variar entre `active` ou `disabled`.
  {% endtab %}
  {% endtabs %}
  {% endtab %}

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

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

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

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

### /Users/Companies

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

<mark style="color:blue;">`GET`</mark> `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

| Name                                     | Type   | Description   |
| ---------------------------------------- | ------ | ------------- |
| userId<mark style="color:red;">\*</mark> | String | ID do Usuário |

#### Query Parameters

| Name   | Type   | Description                                    |
| ------ | ------ | ---------------------------------------------- |
| limit  | String | Limite de resultados da busca                  |
| offset | String | Quantidade de resultados para avançar da busca |

#### Headers

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

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

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

{% endtab %}

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

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

  Identificador único de uma Empresa no Banco de Dados.

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

  Nome da Comunidade.

* **`role`** *- String*

  Nome identificador que guarda a referência de permissões de um nível de acesso à Comunidade.
  {% 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" %}

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

### /Users/Communities

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

<mark style="color:blue;">`GET`</mark> `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

| Name                                     | Type   | Description   |
| ---------------------------------------- | ------ | ------------- |
| userId<mark style="color:red;">\*</mark> | String | ID do Usuário |

#### Query Parameters

| Name   | Type   | Description                                    |
| ------ | ------ | ---------------------------------------------- |
| limit  | String | Limite de resultados da busca                  |
| offset | String | Quantidade de resultados para avançar da busca |

#### Headers

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

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

```javascript
{
    "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"
    }
  ]
}
```

{% endtab %}

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

* **`publicId`** *- String*

  Identificador único de uma Comunidade no Banco de Dados.

* **`role`** *- String*

  Nome identificador que guarda a referência de permissões de um nível de acesso à Comunidade.

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

  Nome da Comunidade.

* **`description`** *- String*

  Breve descrição da Comunidade.
  {% 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" %}

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

### /Users/Transactions

#### Fluxo de Status dos Pedidos

<table><thead><tr><th width="233">Nome</th><th>Descrição</th></tr></thead><tbody><tr><td><mark style="color:purple;"><code>opened_order</code></mark></td><td>Quando um usuário inicia uma solicitação de compra ou venda, é criado um Pedido com o status <mark style="color:purple;"><code>opened_order</code></mark>.</td></tr><tr><td><mark style="color:blue;"><code>pending_payment</code></mark></td><td>Ao selecionar o meio de pagamento e gerar a solicitação de pagamento, o status do Pedido é alterado para <mark style="color:blue;"><code>pending_payment</code></mark>.</td></tr><tr><td><mark style="color:blue;"><code>processing_payment</code></mark></td><td>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 <mark style="color:blue;"><code>processing_payment</code></mark>.</td></tr><tr><td><mark style="color:green;"><code>approved_payment</code></mark></td><td>Aprovado e recebido o pagamento, o status do pedido é alterado para <mark style="color:green;"><code>approved_payment</code></mark> e é iniciado o processo de envio do token.</td></tr><tr><td><mark style="color:blue;"><code>queue_send_token</code></mark></td><td>Quando o token entra na fila para ser mintado/transferido, ele recebe o status <mark style="color:blue;"><code>queue_send_token</code></mark>.</td></tr><tr><td><mark style="color:green;"><code>success_send_token</code></mark></td><td>Quando o token foi devidamente enviado ao seu destinatário, o fluxo de compra termina com o status <mark style="color:green;"><code>success_send_token</code></mark>.</td></tr><tr><td><mark style="color:orange;"><code>failed</code></mark></td><td>Caso haja falha em algum dos passos anteriores, o status <mark style="color:orange;"><code>failed</code></mark> é aplicado e o pedido entra em uma fila de retentativas.</td></tr><tr><td><mark style="color:red;"><code>cancelled</code></mark></td><td>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 <mark style="color:red;"><code>cancelled</code></mark>.</td></tr><tr><td><mark style="color:green;"><code>refounded</code></mark></td><td>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 <mark style="color:green;"><code>refounded</code></mark>.</td></tr></tbody></table>

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

<mark style="color:blue;">`GET`</mark> `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

| Name                                     | Type   | Description   |
| ---------------------------------------- | ------ | ------------- |
| userId<mark style="color:red;">\*</mark> | String | ID do Usuário |

#### Query Parameters

| Name       | Type   | Description                                    |
| ---------- | ------ | ---------------------------------------------- |
| 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

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

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

```javascript
{
    "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"
    },
  ]
}
```

{% endtab %}

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

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

  Identificador único de uma transação.

* **`item`** *- Object*

  Armazena informações relativas ao item da transação.

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

    Identificador que guarda a referência ao ID do token no banco de dados.
  * **`communityId`** *- String*

    Identificador que guarda a referência ao ID da comunidade gestora do token.
  * **`companyId`** *- String*

    Identificador que guarda a referência ao ID da empresa gestora do token.

* **`operation`** *- Object*

  Armazena dados gerais de transação

  * **`type`** *- String*

    Tipo de operação da transação (*`buy`* para operação de compra, *`sell`* para operação de vendas, *`bid`* para operação de lance em leilões, *`rent_out`* para itens postos para alugar e *`rent`* para tokens alugados).

* **`payment`** *- Object*

  Armazena dados relativos ao pagamento da transação

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

    Valor relativo ao preço agregado à transação do Token, seja para uma operação de compra, venda ou aluguel
  * **`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.
  * **`method`** *- String*

    Nome do meio de pagamento utilizado na transação.

* **`lastStatus`** *- String*

  Informa o último status conhecido da transação, podendo ser *`opened_order`*, *`pending_payment`*, *`processing_payment`*, *`approved_payment`*, *`queue_send_token`*, *`success_send_token`*, *`failed`*, *`cancelled`* ou *`refounded`*.&#x20;
  {% endtab %}
  {% endtabs %}

{% endtab %}

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

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

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

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


---

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