---
# System prepended metadata

title: Endpoints Manager E2W

---

# Endpoints Manager E2W

Esse arquivo serve como base de desenvolvimento de clients que tenham como base o consumo da API de manager do E2W.

**Navegação:**
* [Gerente](#Gerente)
* [GoogleAuth](#GoogleAuth)
* [LinkedinAuth](#LinkedinAuth)
* [Empresa](#Empresa)
* [Métricas](#Métricas)
* [Empregados](#Empregados)
* [Convites](#Convites)

**Informações gerais:**
>  Todas as datas devem ser passadas e recebidas usando o formato ISO 8601

## Gerente

### POST /manager
Registra um gerente no sistema.

**Request Body**
```json
{
    "name": "João Carlos",
    "email": "joao@uol.com.br",
    "password": "jao123"
}
```

**Response 201**
```json
{
    "id": 1,
    "name": "João Carlos",
    "email": "joao@uol.com.br"
}
```
---

### POST /manager/login
Autentica um gerente no sistema

**Request Body**
```json
{
    "email": "joao@uol.com.br",
    "password": "jao123"
}
```

**Response 200**
```json
{
    "token": "token",
    "refreshToken": "refresh",
    "manager": {
        "id": 1,
        "name": "João Carlos",
        "email": "joao@uol.com.br",
        "gender": "MALE",
        "birthday": "2019-11-18"
    }
}
```
---

### POST /manager/token/refresh
Obtem um novo token de acesso

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Response 200**
```json
{
    "token": "token"
}
```
---

## GoogleAuth

### POST /manager/googleauth
Autentica um gerente usando o token do google auth

**Request Body**
```json
{
    "tokenId": "google auth token"
}
```

**Response 200**
```json
{
    "token": "token",
    "refreshToken": "refresh",
    "manager": {
        "id": 1,
        "name": "João Carlos",
        "email": "joao@uol.com.br",
        "gender": "MALE",
        "birthday": "2019-11-18"
    }
}
```
---

## LinkedinAuth

### POST /manager/linkedinauth
Autentica um gerente usando o token do linkedin auth

**Request Body**
```json
{
    "code": "linkedin code",
    "redirectUri": "linkedin redirectUri"
}
```

**Response 200**
```json
{
    "token": "token",
    "refreshToken": "refresh",
    "manager": {
        "id": 1,
        "name": "João Carlos",
        "email": "joao@uol.com.br",
        "gender": "MALE",
        "birthday": "2019-11-18"
    }
}
```
---

## Empresa

### GET /manager/<int:manager_id>/accesses
Lista as empresas na qual um gerente tem acesso.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Response 200**
```json
[
    {
        "id": 2,
        "company": {
            "id": 1,
            "name": "Mastertech"
        },
        "roles": [
            "Trainee",
            "Manager"
        ],
        "units": [
            "Marketing"
        ],
        "given_at": "2020-11-02"
    }
]
```
---

### POST /company
Registra uma nova empresa.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Formato de envio**

| Descrição | Valor |
| -------- | -------- |
| Content-Type     | multipart/form-data |
| File name        | file |

**Request body**
```json
{
  "name": "Google"
}
```

**Response body 200**
```json
{
  "id": 1, 
  "name": "Google",
  "icon": "https://e2w-files.s3-sa-east-1.amazonaws.com/11032020010549.jpeg"
}
```
---

### GET /company/<int:company_id>/managers
Retorna todos os gerentes de uma empresa.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**QueryStrings**

| Parâmetro    |      Descrição                    |
|--------------------|:---------------------------:|
| page         | Página                            |
| name         | nome                              |


**Response 200**
```json
{
    "items": [
        {
            "given_at": "2020-11-02",
            "id": 2,
            "manager": {
                "birthday": null,
                "email": "nicklatim@live.com",
                "gender": null,
                "id": 1,
                "name": "Nicollas Gabriel"
            },
            "roles": [
                "Trainee",
                "Manager"
            ],
            "units": [
                "Marketing"
            ]
        }
    ],
    "nextPage": null,
    "page": 1,
    "prevPage": null,
    "totalItems": 1,
    "totalPages": 1
}
```
---

### PUT /company/<int:company_id>/manager/<int:manager_id>
Atualiza um gerente da empresa.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Request Body**
```json
{
    "units": ["Marketing"],
    "roles": ["Trainee", "Manager"]
}
```

**Response 200**
```json

{
    "given_at": "2020-11-02",
    "id": 2,
    "manager": {
        "birthday": null,
        "email": "nicklatim@live.com",
        "gender": null,
        "id": 1,
        "name": "Nicollas Gabriel"
    },
    "roles": [
        "Trainee",
        "Manager"
    ],
    "units": [
        "Marketing"
    ]
}
```

### DELETE /company/<int:company_id>/manager/<int:manager_id>
Remove um gerente da empresa.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Response 204**
```json

```
---

### GET /company/<int:company_id}/summary
Retorna um resumo da empresa e seus funcionários e departamentos.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Response 200**
```json
{  
  "departments": 10,
  "employees": 20,
  "organizationLevels": 5
}
```
---

### GET /company/<int:company_id>/roles
Retorna a lista de cargos de uma empresa.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Response 200**
```json
{
    "roles": [
        "Manager"
    ]
}
```
---

### GET /company/<int:company_id>/units
Retorna a lista de departamentos de uma empresa.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Response 200**
```json
{
    "units": [
        "Logistics",
        "Marketing"
    ]
}
```
---

## Métricas

### GET /company/<int:company_id>/metrics/evaluations/average/day
Retorna a media das avaliações da empresa no dia atual.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Response 200**
```json
{  
  "average": 610
}
```
---

### GET /company/<int:company_id>/metrics/evaluations/average/month
Retorna a media das avaliações da empresa nos últimos 30 dias.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Response 200**
```json
{  
  "average": 410
}
```
---

### GET /company/<int:company_id>/metrics/topic/progression/month
Retorna a evolução de todos os tópicos feitos por funcionários da empresa.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Response 200**
```json
[
    {
        "topic": {
            "description": "Exemplo de descrição",
            "id": 1,
            "name": "SCRUM",
            "symbol": "SCM1"
        },
        "evaluation": 10,
        "variation": 4
    }
]
```
---

### GET /company/<int:company_id>/metrics/engagement/month
Retorna a contagem e a porcentagem de funcionários engajados na empresa.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Response 200**
```json
{
    "count": 1,
    "percentage": 50
}
```
---

### GET /company/<int:company_id>/metrics/topic/<int:topic_id>/progression
Retorna a evolução de um tópico dentro de um grupo especifico de pessoas.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**QueryStrings**

| Parâmetro          |      Descrição                           |
|--------------------|:----------------------------------------:|
| from               | Desde quando será retornado              |
| to                 | Até quando será retornado                |
| unit               | Logistics, Marketing, etc                |
| role               | MANAGER, USER                            |
| gender             | FEMALE, MALE, NON_BINARY                 |


**Response 200**
```json
[
    {
        "average": 5,
        "date": "2020-11-09",
        "max": 8,
        "min": 3
    },
    {
        "average": 6,
        "date": "2020-11-10",
        "max": 10,
        "min": 1
    }
]
```
---

## Empregados

### GET /company/<int:company_id>/employees
Retorna todos os empregados cadastrados em uma empresa.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Response 200**
```json
{
    "items": [
        {
            "id": 1,
            "joined_at": "2020-10-08",
            "person": {
                "birthday": "2020-05-04",
                "email": "nicklatim@live.com",
                "emailGoogle": null,
                "emailLinkedin": null,
                "gender": "MALE",
                "id": 3,
                "name": "Nicão",
                "schooling": "ESC",
                "state": "AC",
                "lastEvaluation": "2020-10-28"
            },
            "role": "Traine",
            "unit": "Marketing\n"
        }
    ],
    "nextPage": null,
    "page": 1,
    "prevPage": null,
    "totalItems": 1,
    "totalPages": 1
}
```
---

### PUT /company/<int:company_id>/employee/<int:employee_id>
Atualiza um empregado da empresa.
Obs: Ao ser atualizado, é gerado um novo id para o empregado

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Request Body**
```json
{
    "unit": "Marketing",
    "role": "Manager"
}
```

**Response 200**
```json
{
    "items": [
        {
            "id": 4,
            "joined_at": "2020-10-27",
            "person": {
                "birthday": "2020-05-04",
                "email": "nicklatim@live.com",
                "emailGoogle": null,
                "emailLinkedin": null,
                "gender": "MALE",
                "id": 3,
                "name": "Nicão",
                "schooling": "ESC",
                "state": "AC",
                "lastEvaluation": "2020-10-28"
            },
            "role": "Manager",
            "unit": "Marketing"
        }
    ],
    "nextPage": null,
    "page": 1,
    "prevPage": null,
    "totalItems": 1,
    "totalPages": 1
}
```
---

### DELETE /company/<int:company_id>/employee/<int:employee_id>
Remove um empregado da empresa.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Response 204**
```json
{}
```
---

### PUT /company/<int:company_id>/employees
É possivel enviar um arquivo csv separado por ponto e vírgula para enviar os convites e cadastrar funcionários. 

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Arquivo CSV:**

| nome | email | cargo | departamento |
|----------|:-------------:|:------:|:------:|
| Rodolfo | rodolfo@email.com | desenvolvedor | back-end |
| Carol | carol@email.com | engenharia de software | back-end |

**Response 201**
```json
[
  {
    "id": 1,
    "name": "Rodolfo",
    "email": "rodolfo@email.com"
  },
  {
    "id": 2,
    "name": "Carol",
    "email": "carol@email.com"
  }
]
```
---

### GET /company/<int:company_id>/employee/tasks
Retorna a lista de tarefas que os funcionários estão fazendo.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Response 200**
```json
{
    "items": [
        {
            "authorId": 3,
            "contentAcquisition": "PAID",
            "contentType": "TEXT",
            "contentFormat": "LIVE",
            "createdAt": "2020-04-06",
            "description": "Meu amigo vai me ajudar",
            "id": 2,
            "parentId": null,
            "taskFormat": "BY_MYSELF",
            "taskMedium": "ONLINE",
            "taskMotive": "SELF_INITIATIVE",
            "title": "aprender python",
            "topic": {
                "description": "Exemplo de descrição",
                "id": 1,
                "name": "SCRUM",
                "symbol": "SCM1"
            }
        }
    ],
    "nextPage": null,
    "page": 1,
    "prevPage": null,
    "totalItems": 2,
    "totalPages": 1
}
```
---

## Convites

### POST /company/<int:company_id>/employees/invite
Envia um novo convite a um usuário.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Request Body**
```json
{
    "email": "nsilva@mastertech.com.br",
    "unit": "unit exemplo",
    "role": "role exemplo"
}
```

**Response 200**
```json
{
    "company": {
        "icon": null,
        "id": 1,
        "name": "Mastertech"
    },
    "email": "nsilva@mastertech.com.br",
    "id": "00feb152-8858-4c1c-bcb9-cf178b62b2fb",
    "role": "role exemplo",
    "unit": "unit exemplo"
}
```
---

### GET /employees/invite/<int:invite_id>
Consulta um convite pelo id.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Response 200**
```json
{
    "company": {
        "icon": null,
        "id": 1,
        "name": "Mastertech"
    },
    "email": "nsilva@mastertech.com.br",
    "id": "00feb152-8858-4c1c-bcb9-cf178b62b2fb",
    "role": "role exemplo",
    "unit": "unit exemplo"
}
```
---

### PUT /employees/invite/<int:invite_id>
Responde a um convite.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Request Body**
```json
{
    "accept": "true"
}
```

**Response 204**
```json
{}
```
---

### POST /company/<int:company_id>/managers/invite
Envia um novo convite a um usuário.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Request Body**
```json
{
    "email": "nsilva@mastertech.com.br",
    "units": ["unit", "exemplo"],
    "roles": ["role", "exemplo"]
}
```

**Response 200**
```json
{
    "company": {
        "icon": null,
        "id": 1,
        "name": "Mastertech"
    },
    "email": "nsilva@mastertech.com.br",
    "id": "28b975f7-4c86-4827-9c4c-21775a6e4500",
    "roles": [
        "role",
        "exemplo"
    ],
    "units": [
        "unit",
        "exemplo"
    ]
}
```
---

### GET /managers/invite/<int:invite_id>
Consulta um convite pelo id.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Response 200**
```json
{
    "company": {
        "icon": null,
        "id": 1,
        "name": "Mastertech"
    },
    "email": "nsilva@mastertech.com.br",
    "id": "28b975f7-4c86-4827-9c4c-21775a6e4500",
    "roles": [
        "role",
        "exemplo"
    ],
    "units": [
        "unit",
        "exemplo"
    ]
}
```
---

### PUT /managers/invite/<int:invite_id>
Responde a um convite.

**Request Headers**
```json
{
    "Authorization": "Bearer <refresh token do gerente>"
}
```

**Request Body**
```json
{
    "accept": "true"
}
```

**Response 204**
```json
{}
```
---
