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