# Empresa

## Resumo

A API de empresas é utilizada para a gestão das empresas que fazem uso dos serviços da goTokens.

Uma vez que o cliente tem seu usuário criado ele poderá criar sua empresa para ter acesso aos outros serviços da API.

#### Como funciona

O cliente dever passar como parâmetro suas credenciais de usuário e caso ela esteja ativo na base a empresa será criada. A partir disso, é possível associar comunidades à uma empresa.

### Objeto Company

<details>

<summary>Exemplo de Objeto de Empresa</summary>

```javascript
{
  "id": "sd21fs5",
  "name": "ABC Company",
  "documents": [
    {
      "documentName": "cnpj",
      "documentContent": "12.345.657/0001-90"
    }
  ],
  "email": "company_support@email.com",
  "country": "BR",
  "tags": ["ambiental", "arte", "empreeendedorismo"],
  "status": "active",
  "hashedApiKey": "$oiudwtyh798dft13hd8",
  "users": {
    "company_admin":["pudt992"],
    "company_moderator":["321ggd","456jse"]
  }
}
```

</details>

### Endpoints

#### Empresa

* **GET** /v1/companies
* **GET** /v1/companies/:companyId
* **GET** /v1/companies/:companyId/communities

#### Gestão de dados da Empresa

* **GET** /v1/companies/manage
* **POST** /v1/companies/manage
* **GET** /v1/companies/:companyId/manage
* **PATCH** /v1/companies/:companyId/manage
* **GET** /v1/companies/:companyId/communities/manage

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

* **GET** /v1/companies/:companyId/users-roles/manage
* **POST** /v1/companies/:companyId/users-roles/manage
* **DELETE** /v1/companies/:companyId/users-roles/manage
* **GET** /v1/companies/:companyId/users-roles/:userId/manage
* **PATCH** /v1/companies/:companyId/users-roles/:userId/manage

### Empresas

## Lista de empresas públicas da plataforma

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

Nível de permissionamento necessário: qualquer

#### Query Parameters

| Name    | Type   | Description                                    |
| ------- | ------ | ---------------------------------------------- |
| name    | String | Nome da empresa                                |
| email   | String | E-mail da empresa                              |
| country | String | País da empresa                                |
| limit   | String | Limite de resultados na busca                  |
| offset  | String | Quantidade de resultados para avançar da busca |
| tags    | Array  | Tags da Empresa                                |

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

```javascript
{
  "companies": [
    {
      "id": "87wda9",
      "name": "Company A",
      "email": "company_a@email.com",
      "country": "BR",
      "tags": ["ambiental", "arte", "empreeendedorismo"]
    },
    {
      "id": "123egroo",
      "name": "Company B",
      "email": "company_b@email.com",
      "country": "BR",
      "tags": ["empreeendedorismo"]
    },
  ]
}
    
```

{% endtab %}

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

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

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

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

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

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

    E-mail cadastrado relativo à empresa.
  * **`country`** *- String*

    País cadastrado relativo à empresa.
  * **`tags`** *- Array*

    Armazena uma lista de palavras-chave para classificação interna do recurso.
    {% endtab %}
    {% endtabs %}
    {% endtab %}
    {% endtabs %}

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

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

Nível de permissionamento necessário: qualquer

#### Path Parameters

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

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

```javascript
{
  "id": "21grd8",
  "name": "ABC Company",
  "email": "company@email.com",
  "country": "BR",
  "tags": ["ambiental", "arte", "empreeendedorismo"]
}
```

{% endtab %}

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

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

  Identificador próprio da empresa.

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

  Nome da empresa.

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

  E-mail para contato com a empresa.

* **`country`** *- String*

  País onde a empresa possui documento.

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

  Armazena uma lista de palavras-chave para classificação interna do recurso.
  {% endtab %}
  {% endtabs %}
  {% endtab %}
  {% endtabs %}

## Lista comunidades públicas associadas à uma empresa

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

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

#### Path Parameters

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

#### Query Parameters

| Name   | Type   | Description                                    |
| ------ | ------ | ---------------------------------------------- |
| name   | String | Nome da Comunidade                             |
| email  | String | E-mail 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                             |

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

```javascript
{
  "companyId": "htf849",
  "companyName": "ABC Company",
  "communities": [
    {
      "id": "kliu78",
      "name": "Community A",
      "email": "community_a@email.com",
      "description": "Community A description",
      "tags": ["ambiental", "arte", "empreeendedorismo"]
    },
    {
      "id": "vxrg35",
      "name": "Community B",
      "email": "community_b@email.com",
      "description": "Community B description",
      "tags": ["empreeendedorismo"]
    }
  ]
}
```

{% endtab %}

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

* **`companyId`** *- String*

  Identificador da empresa no banco de dados.

* **`companyName`** *- String*

  Nome da empresa.

* **`communities`** *- Object*

  Armazena listas de comunidades associados à empresa.

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

    Identificador único da comunidade.
  * **`name`** *- String*

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

    E-mail associado à comunidade.
  * **`description`** *- String*

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

    Armazena uma lista de palavras-chave para classificação interna do recurso.
    {% endtab %}
    {% endtabs %}
    {% endtab %}
    {% endtabs %}

### Gestão de Empresas

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

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

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

#### Query Parameters

| Name    | Type   | Description                                    |
| ------- | ------ | ---------------------------------------------- |
| name    | String | Nome da empresa                                |
| email   | String | E-mail da empresa                              |
| country | String | País da empresa                                |
| limit   | String | Limite de resultados na busca                  |
| offset  | String | Quantidade de resultados para avançar da busca |
| tags    | Array  | Tags da empresa                                |

#### 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": "87wda9",
      "name": "Company A",
      "email": "company_a@email.com",
      "country": "BR",
      "tags": ["ambiental", "arte", "empreeendedorismo"]
      "role": "company_admin"
    },
    {
      "id": "123egroo",
      "name": "Company B",
      "email": "company_b@email.com",
      "country": "BR",
      "tags": ["empreeendedorismo"]
      "role": "company_moderator"
    },
  ]
}
    
```

{% endtab %}

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

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

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

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

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

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

    E-mail cadastrado relativo à empresa.
  * **`country`** *- String*

    País cadastrado relativo à empresa.
  * **`role`** *- String*

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

    Armazena uma lista de palavras-chave para classificação interna do recurso.
    {% endtab %}
    {% endtabs %}
    {% endtab %}

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

{% 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 empresa com as informações dadas

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

Nível de permissionamento necessário: `company_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 Empresa                  |
| email<mark style="color:red;">\*</mark>     | String     | E-mail da empresa                |
| documents<mark style="color:red;">\*</mark> | \[Objects] | Documentos enviados pela empresa |
| country<mark style="color:red;">\*</mark>   | String     | País da empresa                  |
| tags                                        | Array      | Tags da empresa                  |

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

```javascript
{
  "id": "htr979",
  "name": "ABC Company",
  "documents": [
    {
      "documentName": "cnpj",
      "documentContent": "12.345.657/0001-90"
    }
  ],
  "email": "company@email.com",
  "hashedApiKey": "API-KEY-0058-4897",
  "tags": ["ambiental", "arte", "empreeendedorismo"]
  "country": "BR",
  "status": "active"
}
```

{% endtab %}

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

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

  Identificador próprio da empresa.

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

  Nome da empresa.

* **`documents`** *- Object*

  Lista de documentos identificadores da empresa.

  * **`documentName`** *- String*

    Tipo de documento enviado (contrato social, alvará, CNPJ).
  * **`documentContent`** *- String*

    Conteúdo do documento. Pode ser o número do CNPJ, URL do contrato, etc.

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

  Armazena uma lista de palavras-chave para classificação interna do recurso.

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

  E-mail para contato com a empresa.

* **`hashedApiKey`** *- String*

  Campo que exibe uma única vez a chave de API de uma empresa, gerada automaticamente no momento de sua criação.

* **`country`** *- String*

  País onde a empresa possui documento.
  {% 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>Parâmetro "<em>documents</em>" inválido. O campo é obrigatório e deve ser do tipo <em>Array of Objects</em>.</td></tr><tr><td align="center">1002-A</td><td>Campo "<em>documentName</em>" inválido. O campo é obrigatório e deve ser do tipo <em>String</em>.</td></tr><tr><td align="center">1002-B</td><td>Campo "<em>documentContent</em>" inválido. O campo é obrigatório e deve ser do tipo <em>String</em>.</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><tr><td align="center">1004</td><td>Campo "<em>country</em>" inválido. O campo é obrigatório, deve ser do tipo <em>String</em> e seguir a ISO 3166-1 Alpha-2.</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 empresa

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

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

#### Path Parameters

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

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

```javascript
{
  "id": "21grd8",
  "name": "ABC Company",
  "documents": [
    {
      "documentName": "cnpj",
      "documentContent": "12.345.657/0001-90"
    }
  ],
  "email": "company@email.com",
  "country": "BR",
  "tags": ["ambiental", "arte", "empreeendedorismo"]
  "status": "active"
}
```

{% endtab %}

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

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

  Identificador próprio da empresa.

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

  Nome da empresa.

* **`documents`** *- Object*

  Lista de documentos identificadores da empresa.

  * **`documentName`** *- String*

    Tipo de documento enviado (contrato social, alvará, CNPJ).
  * **`documentContent`** *- String*

    Conteúdo do documento. Pode ser o número do CNPJ, URL do contrato, etc.

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

  E-mail para contato com a empresa.

* **`country`** *- String*

  País onde a empresa possui documento.

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

  Armazena uma lista de palavras-chave para classificação interna do recurso.
  {% 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" %}

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

## (JWT) Atualiza uma empresa com as informações passadas

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

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

#### Path Parameters

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

#### Request Body

| Name      | Type       | Description                      |
| --------- | ---------- | -------------------------------- |
| name      | String     | Nome da Empresa                  |
| email     | String     | E-mail da empresa                |
| documents | \[Objects] | Documentos enviados pela empresa |
| country   | String     | País da empresa                  |
| tags      | Array      | Tags da empresa                  |

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

```javascript
{
  "id": "21grd8",
  "name": "ABC Company",
  "documents": [
    {
      "documentName": "cnpj",
      "documentContent": "12.345.657/0001-90"
    }
  ],
  "email": "company@email.com",
  "country": "BR",
  "tags": ["ambiental", "arte", "empreeendedorismo"]
  "status": "active"
}
```

{% endtab %}

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

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

  Identificador próprio da empresa.

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

  Nome da empresa.

* **`documents`** *- Object*

  Lista de documentos identificadores da empresa.

  * **`documentName`** *- String*

    Tipo de documento enviado (contrato social, alvará, CNPJ).
  * **`documentContent`** *- String*

    Conteúdo do documento. Pode ser o número do CNPJ, URL do contrato, etc.

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

  Armazena uma lista de palavras-chave para classificação interna do recurso.

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

  E-mail para contato com a empresa.

* **`country`** *- String*

  País onde a empresa possui documento.
  {% endtab %}
  {% endtabs %}
  {% endtab %}

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

{% 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 comunidades associadas à uma empresa

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

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

#### Path Parameters

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

#### Query Parameters

| Name   | Type   | Description                                    |
| ------ | ------ | ---------------------------------------------- |
| name   | String | Nome da Comunidade                             |
| email  | String | E-mail 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
{
  "companyId": "htf849",
  "companyName": "ABC Company",
  "communities": [
    {
      "id": "kliu78",
      "name": "Community A",
      "email": "community_a@email.com",
      "description": "Community A description",
      "tags": ["ambiental", "arte", "empreeendedorismo"]
    },
    {
      "id": "vxrg35",
      "name": "Community B",
      "email": "community_b@email.com",
      "description": "Community B description",
      "tags": ["empreeendedorismo"]
    }
  ]
}
```

{% endtab %}

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

* **`companyId`** *- String*

  Identificador da empresa no banco de dados.

  * **`companyName`** *- String*

    Nome da empresa.

  * **`communities`** *- Object*

    Armazena listas de comunidades associados à empresa.

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

      Identificador único da comunidade.
    * **`name`** *- String*

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

      E-mail associado à comunidade.
    * **`description`** *- String*

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

      Armazena uma lista de palavras-chave para classificação interna do recurso.
      {% 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 %}

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

## (JWT) Lista usuários associados à uma empresa

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

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

#### Path Parameters

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

#### 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 Empresa      |
| 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
{
  "companyId": "htf849",
  "companyName": "ABC Company",
  "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"
      }
    ]
  }
}
```

{% endtab %}

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

* **`companyId`** *- String*

  Identificador da empresa no banco de dados.

* **`companyName`** *- String*

  Nome da empresa.

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

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

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

    Lista usuários administradores de uma empresa.

    * **`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 de uma empresa.

    * **`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.
      {% 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 empresa

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

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

#### Path Parameters

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

#### 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 Empresa |

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

```javascript
{
  "company": {
    "id": "htf849"
    "name": "Company B",
    "email": "company_b@email.com"
  },
  "user": {
    "id" : "486daw",
    "name": "User B",
    "email": "user_b@email.com"
  },
  "role": "company_moderator"
}
```

{% endtab %}

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

* **`company`** *- Object*

  Armazena dados da empresa associada.

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

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

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

    E-mail da empresa.

* **`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 à empresa.
  {% 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 empresa&#x20;

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

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

#### Path Parameters

| Name                                        | Type   | Description   |
| ------------------------------------------- | ------ | ------------- |
| companyId<mark style="color:red;">\*</mark> | String | ID da Empresa |
| 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">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 empresa

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

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

#### Headers

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

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

```javascript
{
    "company": {
        "id": "htf849"
        "name": "Company B",
        "email": "company_b@email.com"
    },
    "user": {
        "id" : "486daw",
        "name": "User B",
        "email": "user_b@email.com"
    },
    "role": "company_moderator"
}
```

{% endtab %}

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

* **`company`** *- Object*

  Armazena dados da empresa associada.

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

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

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

    E-mail da empresa.

* **`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 à empresa.
  {% 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 empresa

<mark style="color:purple;">`PATCH`</mark> `https://goblockchain.io/gotokens-api/v1/companies/:companyId/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 |
| companyId<mark style="color:red;">\*</mark> | String | ID da Empresa |

#### 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 Empresa |

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

```javascript
{
    "company": {
        "id": "htf849"
        "name": "Company B",
        "email": "company_b@email.com"
    },
    "user": {
        "id" : "486daw",
        "name": "User B",
        "email": "user_b@email.com"
    },
    "role": "company_admin"
}
```

{% endtab %}

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

* **`company`** *- Object*

  Armazena dados da empresa associada.

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

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

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

    E-mail da empresa.

* **`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 à empresa.
  {% 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 %}
