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

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

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

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

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

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

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

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

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

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