vsyncDOCUMENTAÇÃO

Desenvolvimento

Teams

Teams de desenvolvedores: cargos e permissões, convites, transferir aplicativos, excluir, sair e como as recompensas chegam a todos os membros.

Um team reúne pessoas que cuidam dos mesmos aplicativos. Em Configurações de usuário > Desenvolvedores > Teams você cria um team, convida gente, escolhe o que cada pessoa pode fazer e move aplicativos para dentro dele. Todas as rotas abaixo são de pessoa (Authorization: Bearer); tokens de bot recebem 403.

  • Um aplicativo é pessoal (só do dono, como sempre foi) ou de um team. Em aplicativos pessoais nada muda.
  • Cada conta pode ser dona de até 10 teams e participar de até 20. Um team tem até 25 membros (convites pendentes contam).
  • Bots não entram em teams.

Cargos e permissões#

Cada membro tem um cargo, que define as permissões iniciais, e pode ter permissões personalizadas por quem gerencia membros.

PermissãoFaz
VIEWVer o team, os membros e os aplicativos (todo membro tem).
MANAGE_TEAMRenomear o team e trocar o ícone.
MANAGE_MEMBERSConvidar, remover e alterar cargo e permissões de quem tem cargo menor.
MANAGE_APPSEditar o aplicativo, os comandos, a URL de interações e as redirect URIs; ver a chave de assinatura.
RESET_TOKENRedefinir o token do bot, a chave de assinatura e o client secret OAuth2.
DELETE_APPSExcluir aplicativos do team.
TRANSFER_APPSMover aplicativos para dentro e para fora do team.
CargoPermissões iniciais
DonoTodas. Só existe um; não pode ser removido nem ter permissões alteradas.
AdministradorTodas. Não exclui o team nem transfere a posse (isso é só do dono).
DesenvolvedorVIEW, MANAGE_APPS, RESET_TOKEN
VisualizadorVIEW

Regras que o servidor aplica sempre:

  • Você só altera ou remove quem tem cargo menor que o seu (o dono altera qualquer um, menos a si mesmo no cargo). Ninguém altera o próprio cargo.
  • Você nunca concede uma permissão que não tem, nem um cargo igual ou maior que o seu.
  • Excluir o team e transferir a posse são só do dono.
  • Quem não é membro recebe 404 (o team não é revelado); quem é membro mas não tem a permissão recebe 403 com { "error": "...", "permission": "MANAGE_APPS" }.

Convites#

Convidar cria um convite pendente (7 dias); a pessoa só entra se aceitar, em Desenvolvedores > Teams (o banner "Convites de team" mostra o que chegou). Não dá para convidar a si mesmo, quem já está no team, quem já tem convite pendente, bots ou contas banidas. O cargo inicial do convite pode ser admin, developer ou viewer (padrão viewer), nunca acima do seu.

Transferir aplicativos#

  • Para um team: em Zona de perigo > "Transferir para uma team". Vale para aplicativo pessoal (você é o dono) e exige TRANSFER_APPS no team de destino.
  • Para mim: "Transferir para mim" tira o aplicativo do team e o torna seu. Exige TRANSFER_APPS no team.
  • Entre teams: exige TRANSFER_APPS nos dois.

O token, os segredos, os comandos e os servidores onde o bot está continuam iguais: nada precisa ser reinstalado. A transferência registra quando e por quem foi feita. Cada pessoa tem no máximo 10 aplicativos pessoais e cada team no máximo 50.

Excluir, sair e posse#

  • Excluir aplicativo: exige DELETE_APPS (em aplicativo pessoal, ser o dono).
  • Excluir o team: só o dono, digitando o nome do team. Se houver aplicativos, é preciso escolher: excluí-los (deleteApps) ou transferi-los para você (moveAppsTo: "me"); sem escolha a API responde 409 informando quantos são.
  • Sair: qualquer membro, menos o dono. O dono precisa antes transferir a posse para outro membro; ele vira administrador.
  • Se uma conta é excluída pela equipe do vsync, a posse dos teams dela passa ao administrador (ou membro) mais antigo; sem ninguém, o team é removido junto com seus aplicativos.

Recompensas#

Hoje existe uma recompensa de aplicativo: a insígnia Desenvolvedor de bot verificado pioneiro (VERIFIED_BOT_DEVELOPER), veja Insígnia de desenvolvedor. Quando um aplicativo de team bate a meta (100 servidores com 3 ou mais pessoas), todos os membros do team naquele momento recebem a insígnia, não só quem transferiu ou criou o aplicativo. Aplicativos pessoais continuam premiando só o dono.

  • Quem entra depois: ao aceitar um convite, a pessoa recebe as recompensas que os aplicativos do team já tinham conquistado. O mesmo vale quando um aplicativo que já bateu a meta é transferido para um team: os membros recebem na hora.
  • Quem sai: não perde nada. A insígnia é concedida e nunca é retirada automaticamente, então continua com a pessoa; ela só deixa de contar para as próximas. A insígnia é uma marca da conta, não depende de continuar no team.
  • Se a equipe do vsync revogou a insígnia de uma pessoa, ela não volta sozinha para ela, mesmo em team.

Rotas#

RotaO que faz
GET /developer/teamsSeus teams, com seu cargo, suas permissões, nº de membros e de aplicativos.
POST /developer/teams{ name } (2 a 40 caracteres).
GET /developer/teams/:idMembros (com identidade pública), convites pendentes (com MANAGE_MEMBERS) e aplicativos.
PATCH /developer/teams/:id{ name?, iconUrl? }. Exige MANAGE_TEAM.
DELETE /developer/teams/:idDono. { deleteApps: true } ou { moveAppsTo: "me" } se houver aplicativos.
POST /developer/teams/:id/invites{ username } ou { accountId }, mais role?. Exige MANAGE_MEMBERS.
DELETE /developer/teams/:id/invites/:inviteIdCancela um convite pendente.
GET /developer/team-invitesConvites que você recebeu.
POST /developer/team-invites/:id/accept e /declineAceita ou recusa.
PATCH /developer/teams/:id/members/:accountId{ role?, permissions? }.
DELETE /developer/teams/:id/members/:accountIdRemove um membro.
POST /developer/teams/:id/leaveSai do team.
POST /developer/teams/:id/transfer-ownership{ accountId } (o novo dono precisa ser membro).
POST /developer/apps/:id/transfer{ teamId } ou { to: "me" }.

GET /developer/applications lista os aplicativos pessoais e os dos seus teams; cada item traz team (null se pessoal) e myPermissions. A chave de assinatura (signingSecret) só vem para quem tem MANAGE_APPS. Convites recebidos chegam também como o evento em tempo real team-invite.