Vai al contenuto

Salva um tema da comunidade ("Usar este tema", "Personalizar" › Salvar, "Duplicar")

POST/api/community-themes

Auth
Richiede un token
X-CommunityId
X-CommunityId Invia l’X-CommunityId della community in cui avviene l’operazione.
Le descrizioni degli endpoint provengono dalla specifica dell’API e per ora sono in portoghese. L’interfaccia intorno è tradotta.

Ponto de partida: um tema pronto (`presetKey`, com a navigation do tema ativo), um tema salvo (`sourceThemeId`, o Duplicar; aceita `active`) ou, sem os dois, o tema ativo. `values` (parcial) vai por cima. `name` padrão: o nome do pronto, ou "<origem> personalizado". `activate: true` também o ativa (o "Usar este tema"), com o efeito de `POST /api/community-themes/{id}/activate`.

422: no 11º tema (`communityThemes.limitReached`), `presetKey` desconhecido, valor fora da lista ou cor inválida (um item por campo em `errors`), e modo diferente de `light` sem o tema escuro liberado. 400 com `presetKey` e `sourceThemeId` juntos. Vai para o histórico da comunidade (campo "tema"). Owner e admin.

Header

NomeTipoDescrizione
X-CommunityIdfacoltativostring (uuid)ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade.

Corpo della richiesta application/json

NomeTipoDescrizione
namefacoltativostringmax 80
presetKeyfacoltativolight | dark | dark-premium | ocean | forest | editorial
sourceThemeIdfacoltativostringId de um tema salvo, ou `active`.
valuesfacoltativoobjectOs valores de um tema: tudo o que é aparência da comunidade. Sempre completos na resposta. Na escrita (`values` em `POST` e `PATCH`), parciais: o que não vem fica como está. Numa escala, os tons que não vêm são derivados do 500 enviado (como "Gerar tons"); sem o 500, ficam os de antes. Cor que não é hexadecimal, fonte, cantos, densidade, modo, estado do menu, `navigation.layout` ou elemento de `navigation.hiddenNative` fora da lista → 422 com `param` no campo (por exemplo `values.font.heading` ou `values.navigation.hiddenNative[1]`).
values.modefacoltativolight | dark | auto`dark` e `auto` só com o tema escuro liberado (`darkModeAllowed`); senão, 422 com `param = values.mode`.
values.lightfacoltativoobjectAs cores de um lado do tema (claro ou escuro).
values.light.primaryfacoltativoobjectEscala inteira (50 a 950). No escuro, `null` = gerada do claro.
values.light.secondaryfacoltativoobjectEscala inteira (50 a 950). No escuro, `null` = gerada do claro.
values.light.sidebarBgfacoltativostringFundo do menu lateral; `null` = a superfície padrão.
values.light.sidebarTextfacoltativostringTexto do menu lateral; `null` = o texto padrão.
values.light.headerBgfacoltativostringFundo do cabeçalho; `null` = a superfície padrão.
values.light.headerTextfacoltativostringTexto do cabeçalho; `null` = o texto padrão.
values.light.browserBarfacoltativostringCor da barra do navegador no celular. A do claro é copiada para o `themeColor` da comunidade.
values.darkfacoltativoobjectAs cores de um lado do tema (claro ou escuro).
values.dark.primaryfacoltativoobjectEscala inteira (50 a 950). No escuro, `null` = gerada do claro.
values.dark.secondaryfacoltativoobjectEscala inteira (50 a 950). No escuro, `null` = gerada do claro.
values.dark.sidebarBgfacoltativostringFundo do menu lateral; `null` = a superfície padrão.
values.dark.sidebarTextfacoltativostringTexto do menu lateral; `null` = o texto padrão.
values.dark.headerBgfacoltativostringFundo do cabeçalho; `null` = a superfície padrão.
values.dark.headerTextfacoltativostringTexto do cabeçalho; `null` = o texto padrão.
values.dark.browserBarfacoltativostringCor da barra do navegador no celular. A do claro é copiada para o `themeColor` da comunidade.
values.fontfacoltativoobject
values.font.headingfacoltativosystem | inter | manrope | dm-sans | plus-jakarta-sans | poppins | lora | merriweather | ibm-plex-sans
values.font.bodyfacoltativosystem | inter | manrope | dm-sans | plus-jakarta-sans | poppins | lora | merriweather | ibm-plex-sans
values.radiusfacoltativorounded | soft | squareArredondados (12 px, padrão), Suaves (6 px) ou Retos.
values.densityfacoltativocomfortable | compact
values.navigationfacoltativoobjectAusente nos temas prontos (usar um pronto herda a navegação do tema ativo).
activatefacoltativoboolean
originfacoltativoimageFase 4b: salva a proposta de `POST /api/communities/appearance/theme-from-image` (envie a `values` dela, sem `presetKey` nem `sourceThemeId`); o tema fica com origem `image`, nome padrão "Tema da imagem", e o Restaurar volta à proposta.

Risposte

CodiceDescrizione
201O tema salvo.
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.
422Limite de 10 temas, valor fora da lista, cor inválida ou tema escuro sem liberação.
500Erro interno do servidor.

Esempio con curl

curl -X POST "https://api.memberfy.net/api/community-themes" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-CommunityId: $COMMUNITY_ID" \
  -H "Content-Type: application/json" \
  -d '{}'