# Comunidade

## Resumo

API responsável por criar as comunidades onde as ações de engajamento serão realizadas, uma comunidade é composta por um grupo de pessoas que passam a ter acesso ao adquirir uma NFT.

Uma empresa pode ter mais de uma comunidade e cada comunidade poderá ter mais de uma coleção.

#### Como funciona

Uma vez que o usuário foi cadastrado, ele poderá criar ou participar de comunidades. O que ele pode realizar na comunidade vai depender do nível de permissão.&#x20;

### Objeto Community

<details>

<summary>Exemplo de Objeto de Comunidade</summary>

```javascript
{
  "id": "8798wdefs",
  "companyId": "a4wed86fwd",
  "name": "ABC Community",
  "description": "ABC Community description",
  "email": "community_support@email.com",
  "status": "active",
  "users": {
    "community_admin":["8974efs"],
    "community_moderator":["fg74wea", "khuf132"],
    "members":["ioyu132", "khj789", "0w3rq13"]
  },
  "tags": ["ambiental", "arte", "empreeendedorismo"]
}
```

</details>

### Endpoints

#### Comunidade

* **GET** /v1/communities
* **GET** /v1/communities/:communityId
* **GET** /v1/communities/:communityId/collections

#### Gestão de dados da Comunidade

* **GET** /v1/communities/manage
* **POST** /v1/communities/manage
* **GET** /v1/communities/:communityId/manage
* **PATCH** /v1/communities/:communityId/manage
* **GET** /v1/communities/:communityId/collections/manage

#### Gestão de permissões da Comunidade

* **GET** /v1/communities/:communityId/users-roles/manage
* **POST** /v1/communities/:communityId/users-roles/manage
* **DELETE** /v1/communities/:communityId/users-roles/:userId/manage
* **GET** /v1/communities/:communityId/users-roles/:userId/manage
* **PATCH** /v1/communities/:communityId/users-roles/:userId/manage

### Comunidades

## Lista as comunidades públicas

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

Nível de permissionamento necessário: qualquer

#### Query Parameters

| Name      | Type   | Description                                    |
| --------- | ------ | ---------------------------------------------- |
| name      | String | Nome da Comunidade                             |
| limit     | String | Limite de resultados na busca                  |
| offset    | String | Quantidade de resultados para avançar da busca |
| companyId | String | ID da Empresa                                  |
| tags      | Array  | Tags da Comunidade                             |

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

```javascript
{
  "communities": [
    {
      "id": "87wda9",
      "name": "Community A",
      "description": "Community A description",
      "tags": ["ambiental", "arte", "empreeendedorismo"],
    },
    {
      "id": "123egroo",
      "name": "Community B",
      "description": "Community B description",
      "tags": ["ambiental", "arte", "empreeendedorismo"],
    },
    {
      "id": "89sef7w",
      "name": "Community C",
      "description": "Community C description"
      "tags": ["ambiental", "arte", "empreeendedorismo"],
    },
    {
      "id": "ase6w58f4",
      "name": "Community D",
      "description": "Community D description",
      "tags": ["ambiental", "arte", "empreeendedorismo"],
    },
  ]
}
    
```

{% endtab %}

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

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

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

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

    Identificador próprio da comunidade .
  * **`name`** *- String*

    Nome da comunidade.
  * **`description`** *- String*

    Descrição da comunidade.
  * **`tags`** *- Array*

    Conjunto de tags da comunidade.
    {% endtab %}
    {% endtabs %}
    {% endtab %}
    {% endtabs %}

## Lista as informações públicas de uma determinada comunidade

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

Nível de permissionamento necessário: qualquer

#### Path Parameters

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

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

```javascript
{
  "id": "89sef7w",
  "name": "Community C",
  "description": "Community C description",
  "email": "community_support@email.com",
  "tags": ["ambiental", "arte", "empreeendedorismo"]
}
```

{% endtab %}

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

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

  Identificador próprio da comunidade .
* **`name`** *- String*

  Nome da comunidade.
* **`description`** *- String*

  Descrição da comunidade.
* **`email`** *- String*

  E-mail de suporte da comunidade.
* **`tags`** *- Array*

  Conjunto de tags da comunidade.
  {% endtab %}
  {% endtabs %}
  {% endtab %}
  {% endtabs %}

## Lista coleções públicas associadas à uma comunidade

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

Nível de permissionamento necessário: qualquer

#### Path Parameters

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

#### Query Parameters

| Name            | Type   | Description                                    |
| --------------- | ------ | ---------------------------------------------- |
| name            | String | Nome da Coleção                                |
| collectionId    | String | ID da Coleção                                  |
| limit           | String | Limite de resultados na busca                  |
| offset          | String | Quantidade de resultados para avançar da busca |
| contractAddress | String | Endereço de contrato da Coleção                |
| collectionType  | String | Tipo de contrato da Coleção                    |
| network         | String | Rede do contrato da Coleção                    |
| mainCurrency    | String | Moeda principal da Coleção                     |
| tags            | Array  | Tags da Coleção                                |

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

```javascript
{
  "communityId": "htf849",
  "communityName": "ABC Community",
  "collections": [
    {
      "id": "kliu78",
      "name": "Collection A",
      "description": "Collection A description",
      "contractAddress": "0x789546132",
      "network" : "polygon",
      "collectionType": "sale",
      "mainCurrency": "matic",
      "tags": ["ambiental", "arte", "empreeendedorismo"]
    },
    {
      "id": "vxrg35",
      "name": "Collection B",
      "description": "Collection B description",
      "contractAddress": "0x757496132",
      "network" : "ethereum",
      "collectionType": "auction",
      "mainCurrency": "eth",
      "tags": ["arte"]
    },
    {
      "id": "fe129a",
      "name": "Collection C",
      "description": "Collection C description",
      "contractAddress": "0x78567489",
      "network" : "ethereum",
      "collectionType": "reverse_auction",
      "mainCurrency": "usd",
      "tags": ["empreeendedorismo"]
    },
    {
      "id": "0wgeft3",
      "name": "Collection D",
      "description": "Collection D description",
      "contractAddress": "0x80787965",
      "network" : "polygon",
      "collectionType": "airdrop",
      "mainCurrency": "brl",
      "tags": ["esportes"]
    }
  ]
}
```

{% endtab %}

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

* **`communityId`** *- String*

  Identificador da comunidade no banco de dados.

* **`communityName`** *- String*

  Nome da comunidade.

* **`collections`** *- Object*

  Armazena listas de coleções associados à comunidade.

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

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

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

    Descrição da coleção.
  * **`contractAddress`** *- String*

    Endereço de contrato da coleção.
  * **`network`** *- String*

    Rede do contrato da coleção.
  * **`collectionType`** *- String*

    Tipo de contrato da coleção. Pode ser `sale`, `auction`, `reverse_auction`, `airdrop`.
  * **`mainCurrency`** *- String*

    Moeda principal da coleção.
  * **`tags`** *- Array*

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

### Gestão de Comunidades

## (JWT) Lista as comunidades que o usuário logado tem acesso

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

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

#### Query Parameters

| Name   | Type   | Description                                    |
| ------ | ------ | ---------------------------------------------- |
| name   | String | Nome da Comunidade                             |
| id     | String | ID da Comunidade                               |
| limit  | String | Limite de resultados na busca                  |
| offset | String | Quantidade de resultados para avançar da busca |
| tags   | Array  | Tags da Comunidade                             |

#### 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": [
    {
      "id": "87wda9",
      "name": "Community A",
      "description": "Community A description",
      "tags": ["ambiental", "arte", "empreeendedorismo"]
      "role": "company_moderator"
    },
    {
      "id": "123egroo",
      "name": "Community B",
      "description": "Community B description",
      "tags": ["empreeendedorismo"]
      "role": "community_moderator"
    },
    {
      "id": "89sef7w",
      "name": "Community C",
      "description": "Community C description",
      "tags": ["arte"]
      "role": "member"
    },
    {
      "id": "ase6w58f4",
      "name": "Community D",
      "description": "Community D description",
      "tags": ["esportes"]
      "role": "member"
    },
  ]
}
    
```

{% endtab %}

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

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

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

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

    Identificador próprio da comunidade .
  * **`name`** *- String*

    Nome da comunidade.
  * **`description`** *- String*

    Descrição da comunidade.
  * **`role`** *- String*

    Nome do nível de permissionamento do usuário.
  * **`tags`** *- Array*

    Conjunto de tags da comunidade.
    {% 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 uma comunidade com as informações dadas

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

Nível de permissionamento 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 Comunidade       |
| email<mark style="color:red;">\*</mark>       | String | E-mail da Comunidade     |
| description<mark style="color:red;">\*</mark> | String | Descrição da Comunidade  |
| companyId                                     | String | Identificador da Empresa |
| tags                                          | Array  | Tags da Comunidade       |

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

```javascript
{
  "id": "htr979",
  "name": "Community E",
  "description": "Community E description",
  "email": "community_support@email.com",
  "tags": ["ambiental", "arte", "empreeendedorismo"]
  "status": "active"
}
```

{% endtab %}

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

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

  Identificador próprio da comunidade.

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

  Nome da comunidade.

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

  Descrição da comunidade.

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

  E-mail de suporte da comunidade.

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

  Conjunto de tags da comunidade.
  {% endtab %}
  {% endtabs %}
  {% endtab %}

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

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">1001</td><td>Parâmetro "<em>name</em>" inválido. O campo é obrigatório, deve ser do tipo <em>String</em> e possuir mínimo de 3 caracteres.</td></tr><tr><td align="center">1002</td><td>Campo "<em>description</em>" inválido. O campo é obrigatório, deve ser do tipo <em>String</em> e possuir mínimo de 3 caracteres.</td></tr><tr><td align="center">1003</td><td>Campo "<em>email</em>" inválido. O campo é obrigatório, deve ser do tipo <em>String</em> e seguir um formato de e-mail válido.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}
{% endtab %}

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

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

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

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

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

## (JWT) Lista as informações de uma determinada comunidade

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

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

#### Path Parameters

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

#### 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": "89sef7w",
  "name": "Community C",
  "description": "Community C description",
  "email": "community_support@email.com",
  "tags": ["ambiental", "arte", "empreeendedorismo"]
  "role": "member"
}
```

{% endtab %}

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

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

  Identificador próprio da comunidade .
* **`name`** *- String*

  Nome da comunidade.
* **`description`** *- String*

  Descrição da comunidade.
* **`email`** *- String*

  E-mail de suporte da comunidade.
* **`role`** *- String*

  Nome do nível de permissionamento do usuário.
* **`tags`** *- Array*

  Conjunto de tags da comunidade.
  {% 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) Edita uma comunidade com as informações dadas

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

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

#### Path Parameters

| Name        | Type   | Description      |
| ----------- | ------ | ---------------- |
| communityId | String | ID da Comunidade |

#### Headers

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

#### Request Body

| Name        | Type   | Description             |
| ----------- | ------ | ----------------------- |
| name        | String | Nome da Comunidade      |
| email       | String | E-mail da Comunidade    |
| description | String | Descrição da Comunidade |
| tags        | Array  | Tags da Comunidade      |

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

```javascript
{
  "id": "htr979",
  "name": "Community E",
  "description": "Community E description",
  "email": "community_support@email.com",
  "status": "active"
}
```

{% endtab %}

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

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

  Identificador próprio da comunidade.

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

  Nome da comunidade.

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

  Descrição da comunidade.

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

  E-mail de suporte da comunidade.

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

  Conjunto de tags da comunidade.
  {% endtab %}
  {% endtabs %}
  {% endtab %}

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

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">1001</td><td>Parâmetro "<em>name</em>" inválido. O campo é obrigatório, deve ser do tipo <em>String</em> e possuir mínimo de 3 caracteres.</td></tr><tr><td align="center">1002</td><td>Campo "<em>description</em>" inválido. O campo é obrigatório, deve ser do tipo <em>String</em> e possuir mínimo de 3 caracteres.</td></tr><tr><td align="center">1003</td><td>Campo "<em>email</em>" inválido. O campo é obrigatório, deve ser do tipo <em>String</em> e seguir um formato de e-mail válido.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}
{% endtab %}

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

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

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

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

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

## (JWT) Lista coleções associadas à uma comunidade

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

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

#### Path Parameters

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

#### 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 | Quantidade de resultados para avançar da busca |
| contractAddress | String | Endereço de contrato da Coleção                |
| collectionType  | String | Tipo de contrato da Coleção                    |
| network         | String | Rede do contrato da Coleção                    |
| mainCurrency    | String | Moeda principal da Coleção                     |
| 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
{
  "communityId": "htf849",
  "communityName": "ABC Community",
  "collections": [
    {
      "id": "kliu78",
      "name": "Collection A",
      "description": "Collection A description",
      "contractAddress": "0x789546132",
      "network" : "polygon",
      "collectionType": "sale",
      "mainCurrency": "matic"
      "tags": ["ambiental", "arte", "empreeendedorismo"]
    },
    {
      "id": "vxrg35",
      "name": "Collection B",
      "description": "Collection B description",
      "contractAddress": "0x757496132",
      "network" : "ethereum",
      "collectionType": "auction",
      "mainCurrency": "eth",
      "tags": ["arte"]
    },
    {
      "id": "fe129a",
      "name": "Collection C",
      "description": "Collection C description",
      "contractAddress": "0x78567489",
      "network" : "ethereum",
      "collectionType": "reverse_auction",
      "mainCurrency": "usd",
      "tags": ["empreeendedorismo"]
    },
    {
      "id": "0wgeft3",
      "name": "Collection D",
      "description": "Collection D description",
      "contractAddress": "0x80787965",
      "network" : "polygon",
      "collectionType": "airdrop",
      "mainCurrency": "brl",
      "tags": ["esportes"]
    }
  ]
}
```

{% endtab %}

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

* **`communityId`** *- String*

  Identificador da comunidade no banco de dados.

* **`communityName`** *- String*

  Nome da comunidade.

* **`collections`** *- Object*

  Armazena listas de coleções associados à comunidade.

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

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

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

    Descrição da coleção.
  * **`contractAddress`** *- String*

    Endereço de contrato da coleção.
  * **`network`** *- String*

    Rede do contrato da coleção.
  * **`collectionType`** *- String*

    Tipo de contrato da coleção. Pode ser `sale`, `auction`, `reverse_auction`, `airdrop`.
  * **`mainCurrency`** *- String*

    Moeda principal da coleção.
  * **`tags`** *- Array*

    Conjunto de tags da coleção.
    {% 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 de permissões da Comunidade

## (JWT) Lista usuários e suas permissões associadas à uma comunidade

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

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

#### Path Parameters

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

#### Query Parameters

| Name   | Type   | Description                                    |
| ------ | ------ | ---------------------------------------------- |
| name   | String | Nome do Usuário                                |
| email  | String | E-mail do Usuário                              |
| role   | String | Nível de acesso do Usuário àquela Comunidade   |
| id     | String | ID do Usuário                                  |
| 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
{
  "communityId": "htf849",
  "communityName": "ABC Community",
  "users": {
    "company_admin":[
      {
        "id": "pudt992",
        "name": "User A",
        "email": "user_a@email.com",
      }
    ],
    "company_moderator":[
      {
        "id": "321ggd",
        "name": "User D",
        "email": "user_d@email.com"
      },
      {
        "id": "456jse",
        "name": "User E",
        "email": "user_e@email.com"
      }
    ],
     "community_admin":[
      {
        "id": "8974efs",
        "name": "User F",
        "email": "user_f@email.com"
      }
    ],
     "community_moderator":[
      {
        "id": "fg74wea",
        "name": "User G",
        "email": "user_g@email.com"
      },
      {
        "id": "khuf132",
        "name": "User H",
        "email": "user_h@email.com"
      }
    ],
     "members":[
      {
        "id": "ioyu132",
        "name": "User I",
        "email": "user_i@email.com"
      }
      ,{
        "id": "khj789",
        "name": "User J",
        "email": "user_j@email.com"
      },
      {
        "id": "0w3rq13",
        "name": "User K",
        "email": "user_k@email.com"
      }
    ]
  }
}
```

{% endtab %}

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

* **`communityId`** *- String*

  Identificador da empresa no banco de dados.

* **`communityName`** *- String*

  Nome da empresa.

* **`users`** *- Object*

  Armazena listas de usuários associados à comunidade de acordo com o nível de permissionamento.

  * **`company_admin`** *- Array of Objects*

    Lista usuários administradores da empresa da comunidade.

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

      Identificador próprio do usuário.
    * **`name`** *- String*

      Nome do usuário associado à empresa.
    * **`email`** *- String*

      E-mail do usuário associado à empresa.
  * **`company_moderator`** *- Array of Objects*

    Lista usuários moderadores da empresa da comunidade.

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

      Identificador próprio do usuário.
    * **`name`** *- String*

      Nome do usuário associado à empresa da comunidade.
    * **`email`** *- String*

      E-mail do usuário associado à empresa da comunidade.
  * **`community_admin`** *- Array of Objects*

    Lista usuários administradores de uma comunidade.

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

      Identificador próprio do usuário.
    * **`name`** *- String*

      Nome do usuário associado à comunidade.
    * **`email`** *- String*

      E-mail do usuário associado à comunidade.
  * **`community_moderator`** *- Array of Objects*

    Lista usuários moderadores de uma comunidade.

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

      Identificador próprio do usuário.
    * **`name`** *- String*

      Nome do usuário associado à comunidade.
    * **`email`** *- String*

      E-mail do usuário associado à comunidade.
  * **`member`** *- Array of Objects*

    Lista usuários membros de uma comunidade.

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

      Identificador próprio do usuário.
    * **`name`** *- String*

      Nome do usuário associado à comunidade.
    * **`email`** *- String*

      E-mail do usuário associado à comunidade.
      {% endtab %}
      {% endtabs %}
      {% endtab %}

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

{% endtab %}
{% endtabs %}

{% endtab %}

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

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

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

## (JWT) Associa usuários à um nível de permissionamento em uma comunidade

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

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

#### Path Parameters

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

#### Headers

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

#### Request Body

| Name                                   | Type   | Description                                  |
| -------------------------------------- | ------ | -------------------------------------------- |
| id<mark style="color:red;">\*</mark>   | String | ID do Usuário                                |
| role<mark style="color:red;">\*</mark> | String | Nível de acesso do Usuário àquela Comunidade |

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

```javascript
{
  "community": {
    "id": "htf849"
    "name": "Community B",
    "email": "community_b@email.com"
  },
  "user": {
    "id" : "486daw",
    "name": "User B",
    "email": "user_b@email.com"
  },
  "role": "community_moderator"
}
```

{% endtab %}

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

* **`community`** *- Object*

  Armazena dados da comunidade associada.

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

    Identificador próprio da comunidade.
  * **`name`** *- String*

    Nome da comunidade.
  * **`email`** *- String*

    E-mail de suporte da comunidade.

* **`user`** *- Object*

  Armazena dados do usuário.

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

    Identificador próprio do usuário.
  * **`name`** *- String*

    Nome do usuário.
  * **`email`** *- String*

    E-mail do usuário.

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

  Nível de permissionamento do usuário à comunidade.
  {% endtab %}
  {% endtabs %}
  {% endtab %}

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

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

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">1001</td><td>Parâmetro "id" inválido. O campo é obrigatório e deve ser do tipo <em>String</em>.</td></tr><tr><td align="center">1002</td><td>Parâmetro "<em>role</em>" inválido. O campo é obrigatório e deve ser do tipo <em>String</em>.</td></tr><tr><td align="center">1002-A</td><td>Parâmetro "<em>role</em>" inválido. O campo deve respeitar os níveis de permissionamento de comunidades.</td></tr></tbody></table>

## (JWT) Remove a associação de um usuário à uma comunidade

<mark style="color:red;">`DELETE`</mark> `https://goblockchain.io/gotokens-api/v1/communities/:communityId/users-roles/:userId/manage`

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

#### Path Parameters

| Name                                          | Type   | Description      |
| --------------------------------------------- | ------ | ---------------- |
| communityId<mark style="color:red;">\*</mark> | String | ID da Comunidade |
| 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="204: No Content " %}

{% endtab %}

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

{% 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">2</td><td>Ação não autorizada. A ação deve respeitar os níveis de permissionamento de comunidades.</td></tr><tr><td align="center">10</td><td>Credenciais de acesso expiradas. Por favor, execute novamente sua autenticação na plataforma.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">1001</td><td>Parâmetro "id" inválido. O campo é obrigatório e deve ser do tipo <em>String</em>.</td></tr></tbody></table>

## (JWT) Lista dados e permissões que um usuário tem em uma comunidade

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

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    |
| communityId<mark style="color:red;">\*</mark> | String | ID da Comunidade |

#### Headers

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

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

```javascript
{
    "community": {
        "id": "htf849"
        "name": "Community B",
        "email": "community_b@email.com"
    },
    "user": {
        "id" : "486daw",
        "name": "User B",
        "email": "user_b@email.com"
    },
    "role": "community_moderator"
}
```

{% endtab %}

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

* **`community`** *- Object*

  Armazena dados da comunidade associada.

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

    Identificador próprio da comunidade.
  * **`name`** *- String*

    Nome da comunidade .
  * **`email`** *- String*

    E-mail de suporte da comunidade.

* **`user`** *- Object*

  Armazena dados do usuário.

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

    Identificador próprio do usuário.
  * **`name`** *- String*

    Nome do usuário.
  * **`email`** *- String*

    E-mail do usuário.

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

  Nível de permissionamento do usuário à comunidade.
  {% endtab %}
  {% endtabs %}
  {% endtab %}

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

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

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

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

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

## (JWT) Atualiza permissões que um usuário tem em uma comunidade

<mark style="color:purple;">`PATCH`</mark> `https://goblockchain.io/gotokens-api/v1/communities/:communityId/users-roles/:userId/manage`

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

#### Path Parameters

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

#### Headers

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

#### Request Body

| Name                                   | Type   | Description                                  |
| -------------------------------------- | ------ | -------------------------------------------- |
| role<mark style="color:red;">\*</mark> | String | Nível de acesso do Usuário àquela Comunidade |

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

```javascript
{
    "community": {
        "id": "htf849"
        "name": "Community B",
        "email": "community_b@email.com"
    },
    "user": {
        "id" : "486daw",
        "name": "User B",
        "email": "user_b@email.com"
    },
    "role": "community_admin"
}
```

{% endtab %}

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

* **`community`** *- Object*

  Armazena dados da comunidade associada.

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

    Identificador próprio da comunidade.
  * **`name`** *- String*

    Nome da comunidade.
  * **`email`** *- String*

    E-mail da comunidade.

* **`user`** *- Object*

  Armazena dados do usuário atualizado.

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

    Identificador próprio do usuário atualizado.
  * **`name`** *- String*

    Nome do usuário atualizado.
  * **`email`** *- String*

    E-mail do usuário atualizado.

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

  Nível atualizado de permissionamento do usuário à comunidade.
  {% endtab %}
  {% endtabs %}
  {% endtab %}

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

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

<table><thead><tr><th width="152" align="center">Código</th><th>Descrição</th></tr></thead><tbody><tr><td align="center">1001</td><td>Parâmetro "<em>role</em>" inválido. O campo é obrigatório e deve ser do tipo <em>String</em>.</td></tr><tr><td align="center">1001-A</td><td>Parâmetro "<em>role</em>" inválido. O campo deve respeitar os níveis de permissionamento de comunidades.</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/comunidade.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.
