Cria um ciclo de avaliação (rascunho)
POST/api/performance-reviews/cycles
- Auth
- Requiere token
- Clave de API:
- No acepta clave de API
- X-CommunityId
X-CommunityIdEnvía el X-CommunityId de la comunidad en la que ocurre la operación.
Las descripciones de los endpoints vienen de la especificación de la API y, por ahora, están en portugués. La interfaz alrededor está traducida.
Owner e admin (os outros: 403 `teamOnly`). Nasce em `DRAFT`, no modelo 180° (autoavaliação + gestor), com a escala de 5 e as quatro perguntas padrão no idioma da comunidade (ou as `questions` enviadas). Período avaliado (`periodStartsOn`–`periodEndsOn`) separado da janela de respostas (`opensOn`–`closesOn`); invertidos: 422 `periodInvalid` / `windowInvalid`. Num espaço "um ciclo" (`moduleConfig.mode = single`) que já tem um: 409 `singleModeHasCycle`. Mexer no rascunho não envia e-mail.
Headers
| Nombre | Tipo | Descripción |
|---|---|---|
X-CommunityIdopcional | string (uuid) | ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade. |
Cuerpo de la solicitud application/json
| Nombre | Tipo | Descripción |
|---|---|---|
spaceIdopcional | string (uuid) | |
titleobligatorio | string | max 120 |
instructionsopcional | string | |
periodStartsOnobligatorio | string (date) | |
periodEndsOnobligatorio | string (date) | |
opensOnobligatorio | string (date) | |
closesOnobligatorio | string (date) | |
modelopcional | DEGREES_90 | DEGREES_180 | DEGREES_360 | |
relationshipsopcional | SELF | MANAGER | PEER | REPORT[] | Padrão: todas as do modelo; enviar só as que ficam ligadas. |
finalRatingRuleopcional | MANAGER | AVERAGE_WITHOUT_SELF | |
weightsopcional | object | De 0 a 10. |
weights.MANAGERopcional | number | |
weights.PEERopcional | number | |
weights.REPORTopcional | number | |
scaleLabelsopcional | string[] | Os rótulos da escala, do pior ao melhor: de 2 a 10, preenchidos e sem repetir (422 `scaleInvalid` / `scaleDuplicate`); o valor de cada nível é a posição (1 a N). Vazio ou null = os 5 padrão. |
audienceopcional | ALL | GROUP | TAG | |
groupIdopcional | string (uuid) | |
tagopcional | string | max 80 |
reminderDaysopcional | integer[] | |
nominationEnabledopcional | boolean | Fase 1b: com PEER ligado, cada participante indica os pares e o líder direto valida (só em rascunho). |
nineBoxEnabledopcional | boolean | Fase 2: a avaliação do gestor pergunta o potencial (Baixo, Médio, Alto) e o ciclo fechado tem a 9-box (só em rascunho). |
nominationMinopcional | integer | ≥ 1, ≤ 10 |
nominationMaxopcional | integer | ≥ 1, ≤ 10 |
nominationEndsOnopcional | string (date) | Último dia para indicar. |
validationEndsOnopcional | string (date) | Último dia para o líder validar (entre `nominationEndsOn` e `closesOn`; sem as duas datas, abrir dá 409 `nominationDatesRequired`). |
questionsopcional | object[] | |
questions[].idopcional | string (uuid) | |
questions[].topicopcional | string | Agrupa as perguntas nos passos do formulário. · max 80 |
questions[].textopcional | string | max 500 |
questions[].kindopcional | RATING | TEXT | RATING usa a escala de 5 do ciclo; TEXT nunca entra na média. |
questions[].appliesToopcional | SELF | MANAGER | PEER | REPORT[] | As relações que respondem; vazio = todas. |
questions[].requiredopcional | boolean | |
questions[].orderopcional | integer |
Respuestas
| Código | Descripción |
|---|---|
201 | O ciclo. |
400 | Requisição inválida — falha de validação. |
401 | Token ausente, inválido ou expirado; token de outra comunidade (o `X-CommunityId` ou o `communityId` do corpo não é o do token); token antigo ou de uma sessão encerrada (troca de senha, convite aceito). Nesses casos a mensagem pede para entrar de novo (`auth.signInAgain`). |
403 | Sem permissão (`teamOnly`: só owner e admin; `progressDenied`/`resultsDenied`: quem não lidera ninguém; `supportSession`). |
404 | Recurso não encontrado. |
409 | Conflito com o estado atual do recurso. |
422 | Dia inválido, período ou janela invertidos, modelo, relações, escala, pesos, grupo ou tag inválidos. |
500 | Erro interno do servidor. |
Ejemplo con curl
curl -X POST "https://api.memberfy.net/api/performance-reviews/cycles" \
-H "Authorization: Bearer $TOKEN" \
-H "X-CommunityId: $COMMUNITY_ID" \
-H "Content-Type: application/json" \
-d '{"title":"string","periodStartsOn":"string","periodEndsOn":"string","opensOn":"string","closesOn":"string"}'