Aller au contenu

Atualiza events

PUT/api/events/{id}

Auth
Jeton requis
Qui peut l’appeler:
owner
admin
moderator
Clé d’API:
events:write
X-CommunityId
X-CommunityId Envoyez le X-CommunityId de la communauté où l’opération a lieu.
Les descriptions des endpoints viennent directement de la spécification de l’API et sont en portugais pour l’instant. L’interface autour est traduite.

Sujeito a verificação de papel (RBAC). O item precisa ser da comunidade do `X-CommunityId`: de outra comunidade, responde 404, como se não existisse.

**Slug:** só é recalculado quando o título muda. Reenviar o slug gerado a partir do título atual, sem mudar o título, é ignorado (não colide com outro evento de mesmo título); o próprio slug do evento nunca colide consigo mesmo. Um slug personalizado diferente continua sendo validado (400 se estiver em uso).

**Certificado:** `certificate` `{ enabled, templateId?, text? }` é opcional e **mescla**: o que não vem mantém o estado, e gravar outros campos do evento nunca mexe no certificado. O servidor grava `certificateEnabledAt` na virada de desligado para ligado e o zera ao desligar. Só owner e admin enviam o bloco (moderador que edita o evento recebe 403 se o enviar). Ligar exige que o evento tenha `endTime` (400). Erros em `errors[].param`: `certificate.templateId` (outro tenant, 404; inativo, 400), `certificate.text`, `certificate.enabled`. Fim igual ou anterior ao início (também quando muda só um dos dois, contra o valor gravado), 400. `bannerUrl` e `featuredImageUrl` aceitam `null` para remover a imagem. A resposta traz `data.certificate` (owner e admin) e `data.issuesCertificate`.

Paramètres

NomEmplacementTypeDescription
idobligatoirepathstring (uuid)

En-têtes

NomTypeDescription
If-Unmodified-SincefacultatifstringOpcional: a versão lida (`updatedAt` do `GET`), como data HTTP, se não vier `updatedAt` no corpo. Outra gravação depois dela responde 409.
X-CommunityIdfacultatifstring (uuid)ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade.

Corps de la requête application/json

NomTypeDescription
updatedAtfacultatifstring (date-time)Opcional: a versão lida (`updatedAt` do `GET`). Diferente da atual responde 409; sem ela grava sem conferir.
spaceIdfacultatifstring (uuid)Valid space ID required if provided
startTimefacultatifstringInício. Sem fuso, é o horário da comunidade; com `Z` ou deslocamento, é esse instante. Mudando só um dos dois, o outro vale o que está gravado.
endTimefacultatifstringFim, com a mesma regra de fuso do início. Igual ou antes do início, 400 com `errors[].param`.
certificatefacultatifobjectCertificado de evento: bloco opcional de `POST` e `PUT /api/events`. Quem confirma presença (`going`) até o fim do evento recebe o certificado cerca de 1 hora depois. **Ausente** não mexe em nada: gravar outros campos do evento nunca muda o certificado, e evento novo sem o bloco nasce desligado. `certificateEnabledAt` é do servidor e **não** é enviado: ele grava na virada de desligado para ligado (religar grava de novo) e zera ao desligar; só eventos que terminam a partir dele emitem, sem emissão retroativa. Desligar mantém o modelo e o texto. **Só owner e admin** (e SuperAdmin) enviam o bloco: moderador e membro recebem 403, mesmo que possam editar o evento. Ligar exige `endTime` (400 sem ele, `errors[].param = certificate.enabled`).
certificate.enabledfacultatifbooleanLiga ou desliga. Ausente mantém o estado atual (desligado num evento novo).
certificate.templateIdfacultatifstring (uuid)Modelo do módulo Certificados. Tem de ser ATIVO e da mesma comunidade: de outra comunidade, 404; rascunho, arquivado ou apagado, 400 (`errors[].param = certificate.templateId`). Ausente mantém; `null` ou sem modelo vale o padrão do sistema (criado sob demanda, com o espaço Certificados se a comunidade não tem um).
certificate.textfacultatifstringTexto do certificado: texto simples (sem HTML), com as variáveis `{nome}`, `{assunto}` (o título do evento), `{data}` (a data do evento no fuso do evento, ou o da comunidade: "12 de outubro de 2026"; em dias diferentes "12 a 14 de outubro de 2026") e `{cargaHoraria}`; `[...]` entre colchetes some quando a variável dentro está vazia. Vazio ou `null` usa `certificate.defaultText`. · max 5000
checkInEnabledfacultatifbooleanLiga ou desliga o check-in (ver `POST /api/events`). Ao ligar, quem já confirmou "Vou" ganha o ingresso na hora.
checkInBadgeIdfacultatifstring (uuid)"Badge ao fazer check-in": um badge do catálogo da comunidade (só owner e admin; moderador ou financeiro que o enviam, 403). Quem faz check-in recebe o badge (origem `rule`, `sourceRef` `event:<id>`), uma vez só e sem workflow. `null` tira. Badge que não existe ou de outra comunidade, 422 no campo. A resposta traz `data.checkInBadge`; desfazer o check-in não tira o badge.
bannerUrlfacultatifstring`null` remove o banner (e apaga o arquivo antigo). Uma URL só vale se vier do upload de banner desta comunidade; ao trocar, o arquivo antigo é apagado.
featuredImageUrlfacultatifstring`null` remove a imagem de destaque (e apaga o arquivo antigo). Uma URL só vale se vier do upload de destaque desta comunidade.
hostIdsfacultatif—[]hostIds must be an array
hostIds.*facultatifstring (uuid)Each hostId must be a valid UUID
organizerIdsfacultatif—[]organizerIds must be an array
organizerIds.*facultatifstring (uuid)Each organizerId must be a valid UUID
visibilityfacultatifpublic | members | plan | private`public` (qualquer pessoa), `members` (membros da comunidade), `plan` (**assinantes** de um plano, e a equipe) ou `private` (só a equipe: owner, admin, moderador, financeiro). O "Privado" das telas é `private`; `plan` abre o evento para quem assina.
bannerFocalXfacultatifnumberPonto focal da capa, horizontal (0 = esquerda, 1 = direita). `null` limpa. · ≥ 0, ≤ 1
bannerFocalYfacultatifnumberPonto focal da capa, vertical (0 = topo, 1 = base). · ≥ 0, ≤ 1
featuredFocalXfacultatifnumberPonto focal da imagem do card, horizontal. · ≥ 0, ≤ 1
featuredFocalYfacultatifnumberPonto focal da imagem do card, vertical. · ≥ 0, ≤ 1

Réponses

StatutDescription
200Operação realizada com sucesso.
400Requisição inválida — falha de validação.
401Token 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`).
403Autenticado, mas sem permissão para esta operação.
404Recurso não encontrado.
409Outra gravação veio antes da versão enviada (`updatedAt` no corpo ou `If-Unmodified-Since`); `data.updatedAt` é a versão atual: recarregue e repita. Cada gravação avisa os editores abertos (`item.saved`, ver `POST /api/realtime/ticket`).
500Erro interno do servidor.

Exemple curl

curl -X PUT "https://api.memberfy.net/api/events/<id>" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-CommunityId: $COMMUNITY_ID" \
  -H "Content-Type: application/json" \
  -d '{}'