# 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
{}
```
---