# Endpoints User E2W
Esse arquivo serve como base de desenvolvimento de clients que tenham como base o consumo da API de user do E2W.
**Navegação:**
* [Pessoa](#Pessoa)
* [Notificações](#Notificações)
* [Convites](#Convites)
* [LinkedinAuth](#LinkedinAuth)
* [GoogleAuth](#GoogleAuth)
* [Histórico](#Histórico)
* [Avaliação](#Avaliação)
* [Tarefa](#Tarefa)
* [Tópico](#Tópico)
* [Comunidade](#Comunidade)
* [Métricas](#Métricas)
**Informações gerais:**
> Todas as datas devem ser passadas e recebidas usando o formato ISO 8601
## Pessoa
### POST /person
Registra uma pessoa no sistema.
**Request Body**
```json
{
"name": "João Carlos",
"email": "joao@uol.com.br",
"password": "jao123"
}
```
**Response 201**
```json
{
"token": "token",
"refreshToken": "refresh",
"accessTokenRenewInterval": "1800",
"person": {
"id": 1,
"name": "João Carlos",
"email": "joao@uol.com.br",
"emailGoogle": "joao@uol.com.br",
"emailLinkedin": "joao@uol.com.br",
"gender": "MALE",
"birthday": "2019-11-18",
"schooling": "EM",
"state": "SP",
"lastEvaluation": "2020-10-28"
}
}
```
**Response 400**
```json
{
"error": "400 Bad Request: Email already in use"
}
```
---
### POST /person/login
Autentica uma pessoa no sistema.
**Request Body**
```json
{
"email": "joao@uol.com.br",
"password": "jao123"
}
```
**Response 200**
```json
{
"token": "token",
"refreshToken": "refresh",
"accessTokenRenewInterval": "1800",
"person": {
"id": 1,
"name": "João Carlos",
"email": "joao@uol.com.br",
"emailGoogle": "joao@uol.com.br",
"emailLinkedin": "joao@uol.com.br",
"gender": "MALE",
"birthday": "2019-11-18",
"schooling": "EM",
"state": "SP",
"lastEvaluation": "2020-10-28"
}
}
```
**Response 400**
```json
{
"error": "400 Bad Request: Invalid login"
}
```
---
### POST /person/token/refresh
Obtem um novo token de acesso.
**Request Headers**
```json
{
"Authorization": "Bearer <refresh token do usuário>"
}
```
**Response 200**
```json
{
"token": "token",
"refreshToken": "refresh",
"accessTokenRenewInterval": "1800",
"person": {
"id": 1,
"name": "João Carlos",
"email": "joao@uol.com.br",
"emailGoogle": "joao@uol.com.br",
"emailLinkedin": "joao@uol.com.br",
"gender": "MALE",
"birthday": "2019-11-18",
"schooling": "EM",
"state": "SP",
"lastEvaluation": "2020-10-28"
}
}
```
---
### GET /person/<int:person_id>
Consulta as informações de uma pessoa no sistema.
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Response Body**
```json
{
"id": 1,
"name": "João Carlos",
"email": "joao@uol.com.br",
"emailGoogle": "",
"emailLinkedin": "joao@uol.com.br",
"gender": "MALE",
"birthday": "2019-11-18",
"schooling": "EM",
"state": "SP",
"patrimonyDistribution": "UNKNOWN",
"lastEvaluation": "2020-10-28"
}
```
**Response 401**
```json
{
"error": "Invalid Credentials"
}
```
---
### PATCH /person/<int:person_id>
Altera as informações de uma pessoa no sistema.
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Enums**
**gender:**
| valor | significado |
| ---------- | ------------ |
| FEMALE | Feminino |
| MALE | Masculino |
| NON_BINARY | 'Não-binário'|
**schooling:**
| valor | significado |
| ---------- | ------------------------------------ |
| EFI | Ensino Fundamental Incompleto |
| EFC | Ensino Fundamental Completo |
| EMI | Ensino Médio Incompleto |
| EMC | Ensino Médio Completo |
| ESI | Ensino Superior Incompleto |
| ESC | Ensino Superior Completo |
| PGE | Pós-graduação no nível Especialização|
| PGM | Pós-graduação no nível Mestrado |
| PGD | Pós-graduação no nível Doutorado |
**state:**
| valor | significado |
| ---------- | -------------------- |
| AC | Acre |
| AL | Alagoas |
| AP | Amapá |
| AM | Amazonas |
| BA | Bahia |
| CE | Ceará |
| DF | Distrito Federal |
| ES | Espírito Santo |
| GO | Goiás |
| MA | Maranhão |
| MT | Mato Grosso |
| MS | Mato Grosso do Sul |
| MG | Minas Gerais |
| PA | Pará |
| PB | Paraíba |
| PR | Paraná |
| PE | Pernambuco |
| PI | Piauí |
| RJ | Rio de Janeiro |
| RN | Rio Grande do Norte |
| RS | Rio Grande do Sul |
| RO | Rondônia |
| RR | Roraima |
| SC | Santa Catarina |
| SP | São Paulo |
| SE | Sergipe |
| TO | Tocantins |
**patrimonyDistribution:**
| valor | significado |
| ------------- | -------------|
| CONCENTRATED | Concentrado |
| DIVERSIFIED | Diversificado|
| UNKNOWN | Desconhecido |
**Request Body**
```json
{
"name": "João Carlos",
"email": "joao@uol.com.br",
"gender": "MALE",
"birthday": "2019-11-18",
"schooling": "EM",
"state": "SP",
"patrimonyDistribution": "DIVERSIFIED"
}
```
**Response 200**
```json
{
"id": 1,
"name": "João Carlos",
"email": "joao@uol.com.br",
"gender": "MALE",
"birthday": "2019-11-18",
"schooling": "EM",
"state": "SP",
"patrimonyDistribution": "DIVERSIFIED"
}
```
**Response 400**
```json
{
"error": "This email already exists"
}
```
**Response 401**
```json
{
"error": "Invalid Credentials"
}
```
---
### PUT /person/<int:person_id>/password
Altera o password do usuário.
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Request Body**
```json
{
"newPassword": "123",
"email": "test@email.com",
"password": "test"
}
```
**Response 200**
```json
{
"message": "Password changed successfully"
}
```
---
### HEAD /people/emails/<email:string>
Verifica existência de um usuário via e-mail.
Se e-mail existir na base:
**Response Body 200**
```json
{}
```
Caso e-mail não exista na base:
**Response Body 404**
```json
{}
```
---
## Notificações
### GET /person/<int:person_id>/notifications
Lista todas as notificações de um usuário.
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Querystrings:**
| Parâmetro| Descrição |
| -------- | -------- |
| wasRead | true ou false|
**Response 200**
```json
[
{
"createdAt": "2020-04-14",
"id": 1,
"title": "Você tem uma nova mensagem",
"type": "GENERIC",
"wasRead": true,
"wasReadAt": "2020-04-14"
},
{
"createdAt": "2020-04-14",
"id": 2,
"title": "Você tem uma avaliação pendente",
"type": "EVALUATION_REMINDER",
"wasRead": false,
"wasReadAt": null
}
]
```
---
### PATCH /person/<int:person_id>/notification/<int:notification_id>
Altera o status de uma notificação.
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Request Body**
```json
{
"wasRead": true
}
```
**Response 200**
```json
{
"createdAt": "2020-04-14",
"id": 1,
"title": "Você tem uma nova mensagem",
"type": "GENERIC",
"wasRead": true,
"wasReadAt": "2020-04-14"
}
```
---
## Convites
### GET /invites/person/<int:person_id>
Retorna os convites feitos para a pessoa.
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Response 200**
```json
{
"id": 1,
"company": "MasterTech",
"person": {
"id": 2,
"name": "Carol",
"email": "carol@email.com"
},
"role": "engenharia",
"unit": "Anlise desenvolvimento",
"approved": null
}
```
---
### PUT /invites/person/<int:person_id>
Aceita ou recusa os convites feitos para a pessoa.
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Response 200**
```json
{
"accept": true,
"invite_ids": [
{
"id": 1
},
{
"id":2
}
]
}
```
---
## LinkedinAuth
### POST /person/linkedinauth
Autentica uma pessoa usando o token do linkedin auth.
**Request Body**
```json
{
"code": "linkedin code",
"redirectUri": "linkedin redirectUri"
}
```
**Response 200**
```json
{
"token": "token",
"refreshToken": "refresh",
"person": {
"id": 1,
"name": "João Carlos",
"email": "joao@uol.com.br",
"emailGoogle": "",
"emailLinkedin": "joao@uol.com.br",
"gender": "MALE",
"birthday": "2019-11-18",
"schooling": "EM",
"state": "SP",
"lastEvaluation": "2020-10-28"
}
}
```
---
### PATCH /person/<int:person_id>/linkedin
Adiciona linkedin a conta de uma pessoa.
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Request Body**
```json
{
"code": "linkedin code",
"redirectUri": "linkedin redirectUri"
}
```
**Response 200**
```json
{
"id": 1,
"name": "João Carlos",
"email": "joao@uol.com.br",
"emailGoogle": "",
"emailLinkedin": "joao@uol.com.br",
"gender": "MALE",
"birthday": "2019-11-18",
"schooling": "EM",
"state": "SP",
"lastEvaluation": "2020-10-28"
}
```
---
### DELETE /person/<int:person_id>/linkedin
Remove o linkedin a conta de uma pessoa
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Response 204**
```json
{}
```
---
## GoogleAuth
### POST /person/googleauth
Autentica uma pessoa usando o token do google auth.
**Request Body**
```json
{
"tokenId": "google auth token"
}
```
**Response 200**
```json
{
"token": "token",
"refreshToken": "refresh",
"person": {
"id": 1,
"name": "João Carlos",
"email": "joao@uol.com.br",
"emailGoogle": "joao@uol.com.br",
"emailLinkedin": "",
"gender": "MALE",
"birthday": "2019-11-18",
"schooling": "EM",
"state": "SP",
"lastEvaluation": "2020-10-28"
}
}
```
---
### PATCH /person/<int:person_id>/google
Adiciona google a conta de uma pessoa
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Request Body**
```json
{
"tokenId": "google auth token"
}
```
**Response 200**
```json
{
"id": 1,
"name": "João Carlos",
"email": "joao@uol.com.br",
"emailGoogle": "joao@uol.com.br",
"emailLinkedin": "",
"gender": "MALE",
"birthday": "2019-11-18",
"schooling": "EM",
"state": "SP",
"lastEvaluation": "2020-10-28"
}
```
---
### DELETE /person/<int:person_id>/google
Remove o google da conta de uma pessoa
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Response 204**
```json
{}
```
---
## Histórico
### GET /person/<int:person_id>/history
Retorna o histórico de atividades de um usuário
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Querystrings:**
| Parâmetro | Descrição |
| ---------- | ------------ |
| relatedTo | entre essas opções: TASK, EXECUTION e TOPIC|
| from | Desde quando será retornado o histórico|
**Response 200**
```json
[
{
"action": "TOPIC_EVALUATED",
"id": 11,
"payload": "{\"topic\": {\"description\": \"Exemplo de descrição\", \"symbol\": \"SCM1\", \"id\": 1, \"name\": \"SCRUM\"}, \"newValue\": 5, \"oldValue\": 10}",
"registered_at": "2020-04-07T13:56:22+03:00",
"relatedTo": "TOPIC"
},
{
"id": 12,
"action": "TOPIC_EVALUATED",
"payload": "{\"topic\": {\"description\": \"Exemplo de descrição\", \"symbol\": \"SCM1\", \"id\": 1, \"name\": \"SCRUM\"}, \"newValue\": 7, \"oldValue\": 0}",
"registered_at": "2020-04-07T13:58:27+03:00",
"relatedTo": "TOPIC"
}
]
```
## Avaliação
### POST /person/<int:person_id>/topic/<int:topic_id>/evaluation
Cadastra a avaliação do usuário logado no topico em questão.
> Obs: o campo justification não é obrigatório, a ideia é ser preenchido somente quando houver o valor mudar em relação a última auto avaliação.
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Request Body**
```json
{
"confirmation": "SC",
"value": 8,
"justification": "Andei estudando",
"studyTasksIds": [1, 2]
}
```
**Response 201**
```json
{
"id": 1,
"confirmation": "SC",
"value": 8,
"justification": "Andei estudando",
"evaluatedAt": "2019-11-18"
}
```
---
### GET /person/<int:person_id>/topic/<int:topic_id>/evaluations
Lista o historico de auto avaliações do usuário na topico com filtro de data.
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**QueryStrings**
| Parâmetro | Descrição |
|--------------------|:----------------------------------------:|
| from | Desde quando será retornado a avaliações |
| to | Até quando será retornado as avaliações |
**Response 200**
```json
[
[
{
"date": "2021-08",
"value": 4.0
},
{
"date": "2021-07",
"value": 3.1
},
{
"date": "2021-06",
"value": 4.3
},
{
"date": "2021-05",
"value": 3.25
}
]
]
```
---
### GET /person/<int:person_id>/evaluations/pending
Lista as re-avaliações pendentes de uma pessoa.
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**QueryStrings**
| Parâmetro | Descrição |
|--------------------|:---------------------------:|
| page | Página |
| pageSize | Quantidade de itens por página |
**Response 200**
```json
{
"items": [{
"id": 1,
"lastEvaluationDate": "2021-05-22",
"topic": {
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
"id": 1,
"name": "Scrum",
"skillKind": "SOFT",
"symbol": "SC"
}
}],
"page": 1,
"nextPage": 2,
"prevPage": 0,
"totalPages": 10,
"totalItems": 1
}
```
---
## Tarefa
### POST /person/<int:person_id>/task
Cria uma tarefa de estudo do usuário.
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Request Body**
```json
{
"studyTask": {
"title": "Aprender Python",
"description": "Comprar um curso da Alura",
"taskMedium": "REMOTE_SYNC",
"contentType":"VISUAL_EXPOSURE",
"contentFormat":"RECORDED",
"taskMotive": "SELF_INITIATIVE",
"taskFormat": "BY_MYSELF",
"contentAcquisition": "PAID",
"topic": {
"id": 1
},
"parent": {
"id": 1
}
},
"evaluation": {
"id": 8
},
"startAt": "2019-11-20",
"deadline": "2019-11-25"
}
```
**Response 201**
```json
{
"id": 1,
"studyTask": {
"title": "Aprender Python",
"description": "Comprar um curso da Alura",
"taskMedium": "REMOTE_SYNC",
"contentType":"VISUAL_EXPOSURE",
"contentFormat":"RECORDED",
"taskMotive": "SELF_INITIATIVE",
"taskFormat": "BY_MYSELF",
"contentAcquisition": "PAID",
"topic": {
"id": 1,
"name": "Python",
"symbol": "PY",
"description": "xpto",
"skillKind": "HARD"
},
"authorId": 1,
"parentId": 1
},
"status": "COMPLETE",
"startAt": "2019-11-20",
"deadline": "2019-11-25",
"timeItTook": 100,
"nps": 0,
"createdAt": "2020-04-14"
}
```
---
### POST /person/<int:person_id>/task/<int:task_id>/execution
Cria uma execução a partir de uma tarefa já existente.
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Request Body**
```json
{
"evaluation": {
"id": 8
},
"startAt": "2019-11-20",
"deadline": "2019-11-25"
}
```
**Response 201**
```json
{
"id": 1,
"studyTask": {
"title": "Aprender Python",
"description": "Comprar um curso da Alura",
"taskMedium": "REMOTE_SYNC",
"contentType":"VISUAL_EXPOSURE",
"contentFormat":"RECORDED",
"taskMotive": "SELF_INITIATIVE",
"taskFormat": "BY_MYSELF",
"contentAcquisition": "PAID",
"topic": {
"id": 1,
"name": "Python",
"symbol": "PY",
"description": "xpto",
"skillKind": "HARD"
},
"authorId": 1,
"parentId": 1
},
"status": "PENDING",
"startAt": "2019-11-20",
"deadline": "2019-11-25",
"timeItTook": 100,
"nps": 0,
"createdAt": "2020-04-14"
}
```
---
### PATCH /person/<int:person_id>/task/<int:task_id>
Altera o detalhes de uma tarefa.
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Request Body**
```json
{
"title": "Aprender Python",
"description": "Comprar um curso da Alura",
"taskMedium": "REMOTE_SYNC",
"contentType":"VISUAL_EXPOSURE",
"contentFormat": "LIVE",
"contentAcquisition": "PAID",
"taskMotive": "SELF_INITIATIVE",
"taskFormat": "BY_MYSELF"
}
```
**Response 200**
```json
{
"id": 1,
"title": "Study task",
"description": "A Study task",
"contentAcquisition": "PAID",
"contentType": "VISUAL_EXPOSURE",
"contentFormat": "LIVE",
"taskFormat": "IN_GROUP",
"taskMedium": "REMOTE_SYNC",
"taskMotive": "SELF_INITIATIVE",
"topic":{
"id": 1,
"name": "topic",
"symbol": "TPC1"
},
"createdAt": "2019-11-18"
}
```
---
### PATCH /person/<int:person_id>/task/<int:task_id>/execution/<int:execution_id>
Altera o detalhes de uma execução.
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Request Body**
```json
{
"status": "COMPLETE",
"deadline": "2019-11-18",
"start_at": "2019-11-18",
"nps": "10",
"timeItTook": 100
}
```
**Response 200**
```json
{
"id": 1,
"status": "COMPLETE",
"deadline": "2019-11-18",
"start_at": "2019-11-18",
"nps": "10",
"timeItTook": 100,
"createdAt": "2019-11-18"
}
```
---
### GET /tasks
Lista todas as tarefas da comunidade.
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**QueryStrings**
| Parâmetro | Descrição |
|--------------------|:-----------------------------------------:|
| contentFormat | RECORDED, LIVE |
| topicId | Id de um tópico |
| contentType | HARD, SOFT, BOTH |
| taskMedium | REMOTE, FACE_TO_FACE |
| title | Título de uma tarefa |
| sortType | RECENT, POPULAR |
**Response 200**
```json
[
{
"author_id": 3,
"contentAcquisition": null,
"contentType": null,
"contentFormat": "LIVE",
"createdAt": "2020-04-06",
"description": "Meu amigo vai me ajudar",
"id": 1,
"parent_id": null,
"nps": 3,
"taskFormat": null,
"taskMedium": "REMOTE_SYNC",
"taskMotive": null,
"timeItTook": 100,
"title": "aprender python",
"topic": {
"description": "Exemplo de descrição",
"id": 1,
"name": "SCRUM",
"symbol": "SCM1"
}
}
]
```
---
### GET /task/<int:task_id>
Consulta os detalhes de uma tarefa.
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Response 200**
```json
{
"author_id": 3,
"contentAcquisition": null,
"contentType": null,
"contentFormat": "RECORDED",
"createdAt": "2020-04-06",
"description": "Meu amigo vai me ajudar",
"id": 1,
"parent_id": null,
"nps": 3,
"timeItTook": 100,
"taskFormat": null,
"taskMedium": null,
"taskMotive": null,
"title": "aprender python",
"topic": {
"description": "Exemplo de descrição",
"id": 1,
"name": "SCRUM",
"symbol": "SCM1"
}
}
```
---
### GET /person/<int:person_id>/executions
Consulta as execuções de tarefa do usuário
**QueryStrings**
| Parâmetro | Descrição |
|--------------------|:-----------------------------------------:|
| contentFormat | RECORDED, LIVE |
| topicId | Id de um investimento |
| contentType | HARD, SOFT, BOTH |
| taskMedium | REMOTE, FACE_TO_FACE |
| title | Título de uma tarefa |
| status | PENDING, DOING, COMPLETE, DISMISS, OVERDUE|
| page | Página |
| pageSize | Quantidade de itens por página |
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Response 200**
```json
{
"items": [
{
"id": 1,
"studyTask": {
"author_id": 3,
"contentAcquisition": null,
"contentType": null,
"contentFormat": "LIVE",
"createdAt": "2020-04-06",
"description": "Meu amigo vai me ajudar",
"id": 1,
"parent_id": null,
"nps": 3,
"taskFormat": null,
"taskMedium": null,
"taskMotive": null,
"title": "aprender python",
"topic": {
"description": "Exemplo de descrição",
"id": 1,
"name": "SCRUM",
"symbol": "SCM1"
}
},
"status": "COMPLETE",
"deadline": "2019-11-18",
"start_at": "2019-11-18",
"nps": "10",
"timeItTook": 100,
"createdAt": "2019-11-18"
}
],
"nextPage": 2,
"page": 1,
"prevPage": 0,
"totalItems": 1,
"totalPages": 1
}
```
---
### GET /person/<int:person_id>/task/<int:task_id>/execution/<int:execution_id>
Consulta os detalhes da execução de uma tarefa
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**Response 200**
```json
{
"id": 1,
"studyTask": {
"author_id": 3,
"contentAcquisition": null,
"contentType": null,
"contentFormat": "LIVE",
"createdAt": "2020-04-06",
"description": "Meu amigo vai me ajudar",
"id": 1,
"parent_id": null,
"nps": 3,
"taskFormat": null,
"taskMedium": null,
"taskMotive": null,
"title": "aprender python",
"topic": {
"description": "Exemplo de descrição",
"id": 1,
"name": "SCRUM",
"symbol": "SCM1"
}
},
"status": "COMPLETE",
"deadline": "2019-11-18",
"start_at": "2019-11-18",
"nps": "10",
"timeItTook": 100,
"createdAt": "2019-11-18"
}
```
---
## Tópico
### GET /topic/{id}
Consulta informações sobre um tópico.
**Response 200**
```json
{
"id": 1,
"symbol": "SCM1",
"name": "Scrum Master"
}
```
---
### GET /person/<int:person_id>/topics/summary
Retorna o resumo de todas as topicos de uma pessoa, no caso, a ultima avaliação de cada topico
**Request Headers**
```json
{
"Authorization": "Bearer <token do usuário>"
}
```
**QueryStrings**
| Parâmetro | Descrição |
|--------------------|:---------------------------:|
| page | Página |
| pageSize | Quantidade de itens por página |
**Response 200**
```json
{
"items": [
{
"count": 4,
"lastDate": "2019-11-19",
"lastValue": 0.1,
"topic": {
"id": 1,
"name": "SCRUM",
"symbol": "SCM1",
"skillKind": null,
"description": "Texto",
"tracking": {
"average": 5.84,
"variation": -0.12
},
"activeTasksCount": 2
}
},
{
"count": 2,
"lastDate": "2019-11-18",
"lastValue": 0.4,
"topic": {
"id": 2,
"name": "Product Owner",
"symbol": "PDO1",
"skillKind": null,
"description": "Texto",
"tracking": {
"average": 5.84,
"variation": -0.12
},
"activeTasksCount": 2
}
}
],
"page": 1,
"nextPage": 2,
"prevPage": 0,
"totalPages": 1,
"totalItems": 2
}
```
---
### GET /topics
Listar todas os tópicos disponíveis.
**QueryStrings**
| Parâmetro | Descrição |
|--------------------|:---------------------------:|
| skillKind | HARD, SOFT, BOTH |
| page | Página |
| pageSize | Quantidade de itens por página |
**Response 200**
```json
{
"items": [
{
"id": 1,
"symbol": "SCM1",
"name": "Scrum Master",
"skillKind": null,
"description": "Texto",
"tracking": {
"average": 5.84,
"variation": -0.12
}
},
{
"id": 2,
"symbol": "PDTO3",
"name": "Product Owner",
"skillKind": null,
"description": "Texto",
"tracking": {
"average": 5.84,
"variation": -0.12
}
}
],
"nextPage": 2,
"page": 1,
"prevPage": 0,
"totalItems": 1,
"totalPages": 1
}
```
---
## Comunidade
### GET /person/<int:person_id>/companies
Retorna as empresas vinculadas a uma pessoa.
```json
{
"items":[
{
"id": 1,
"name": "MasterTech"
}
],
"page": 1,
"nextPage": 2,
"prevPage": 0,
"totalPages": 10,
"totalItems": 100
}
```
---
### GET /community/<string:community_id>/metrics
Retorna as métricas da comunidade
**Response 200**
```json
{
"skillKindDistribution": {
"HARD": 12.3,
"SOFT": 64.9,
"BOTH": 22.8
},
"contentTypeDistribution": {
"TEXT": 20.0,
"VIDEO": 60.0,
"AUDIO": 5.0,
"VISUAL_EXPOSURE": 5.0,
"HANDS_ON": 10.0
},
"TopicWithHighestValue": {
"id": 1,
"symbol": "SCM1",
"name": "Scrum Master",
"tracking": {
"average": 1,
"variation": 0.3
}
},
"TopicWithLowestValue": {
"id": 1,
"symbol": "SCM1",
"name": "Scrum Master",
"tracking": {
"average": 1,
"variation": 0.3
}
}
}
```
**Response 404**
```json
{
"message": "The community 1 was not found"
}
```
---
### GET /community/<string:community_id>/topic/<int:topic_id>/metrics/average
Retorna as médias dos tópicos da comunidade.
**QueryStrings:**
| Parâmetro | Descrição |
|-----------|-------------------------------------|
| from | Desde quando será retornado a média |
| to | Até quando será retornado a média |
**Response 200**
```json
[
{
"average": 5.21,
"date": "2019-11"
},
{
"average": 5.87,
"date": "2019-10"
}
]
```
---
### GET /community/<string:community_id>/topics/trending
Lista os top 5 tópicos mais avaliados no momento.
**Response 200**
```json
[
{
"topic": {
"id": 2,
"name": "Scrum",
"symbol": "SCM1",
"description": "lorem ipsum",
"skillKind": "BOTH"
},
"average": 8.975,
"variation": 0.173,
"evaluations": 23
},
{
"topic": {
"id": 2,
"name": "Product Owner",
"symbol": "PDO1",
"description": "lorem ipsum",
"skillKind": "BOTH"
},
"average": 7.975,
"variation": 0.573,
"evaluations": 26
}
]
```
---
## Métricas
### GET /person/<int:person_id>/metrics
Retornar as métricas gerais dos aportes de um usuário.
**Response 200**
```json
{
"skillKindDistribution": {
"HARD": 12.3,
"SOFT": 64.9,
"BOTH": 22.8
},
"top3MostUsedContentType": ["VIDEO", "AUDIO", "TEXT"],
"investmentWithMoreTasks": {
"id": 1,
"name": "SCRUM",
"symbol": "SCM1",
"description": "XYZ",
"skillKind": "HARD"
},
"tasksFromCommunityCount": 4
}
```
---
### GET /person/<int:person_id>/history/metrics
Listar informações do extrato de uma pessoa dos últimos 3 meses
**Request Headers**
```json
{
"Authorization": "Bearer <refresh token do usuário>"
}
```
**Response 200**
```json
{
"newInvestmentSubscriptions": 0,
"newAssignedTasks": 5,
"reevaluations": 2
}
```
**Response 404**
```json
{"error": "The person activity {id} was not found"}
```
---
### GET /person/<int:person_id>/executions/metrics
Listar as informações das execuções do usuário
**Request Headers**
```json
{
"Authorization": "Bearer <refresh token do usuário>"
}
```
**Response 200**
```json
{
"completedExecutions": 3,
"totalExecutions": 26,
"contentTypeDistribution": {
"AUDIO": 7.7,
"HANDS_ON": 0.0,
"TEXT": 3.8,
"VIDEO": 3.8,
"VISUAL_EXPOSURE": 84.6
},
"mostInvestedTopic": {
"description": "SEI ",
"id": 2,
"name": "Elixr",
"symbol": "ELX1",
"tracking": {
"average": 6.95,
"variation": 6.95
}
}
}
```