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

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

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

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

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

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

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

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

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

<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>id</em>" 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></tbody></table>

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

<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>id</em>" 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 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 %}

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

<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></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/empresa.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.
