Pular para o conteúdo
PATCH/equipe/membros/{id}

Mudar permissões de um atendente

equipe:permissoes

Papel de acesso, WhatsApps visíveis, módulos e agenda. Só os campos enviados mudam. Só vale para atendentes: dono e gestor (e contas de suporte da FORSI) dão 403 sem_permissao e só mudam pelo app. O papel (atendente, gestor, dono) nunca muda pela API. Dispara membro.alterado.

PATCH /equipe/membros/{id}

curl -X PATCH "https://chat.forsi.com.br/api/v1/equipe/membros/0e584d55-e895-4372-8945-cb64cafc6efd" \
  -H "Authorization: Bearer $FORSI_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{"modulos":["conversas","contatos","agenda"],"agenda":"propria"}'
Resposta 200
{
  "dados": {
    "id": "0e584d55-e895-4372-8945-cb64cafc6efd",
    "nome": "Ana Lima",
    "email": "ana@exemplo.com.br",
    "avatar_url": "https://chat.forsi.com.br/avatar.png",
    "papel": "dono",
    "papel_de_acesso_id": "646adc88-610e-4604-96fe-af5175dca375",
    "permissoes": {
      "caixas": ["7a9d53e9-9d1b-4122-923b-fac67958f445"],
      "modulos": ["texto"],
      "agenda": "todas"
    },
    "equipes": ["55174f08-dda3-49e6-bc5d-9309becdaf6d"],
    "disponivel": true,
    "disponivel_agora": true,
    "ausente_ate": "2026-10-04T13:05:12.481Z",
    "horario": {"dias":[1,2,3,4,5],"inicio":"08:00","fim":"18:00"},
    "ultimo_acesso": "2026-10-04T13:05:12.481Z",
    "entrou_em": "2026-10-04T13:05:12.481Z"
  }
}

Parâmetros no caminho#

  • iduuidobrigatório

    No caminho da URL.

Corpo da requisição#

JSON. Mande com Content-Type: application/json.

  • papel_de_acesso_iduuid ou nullopcional

    Papel de acesso (Configurações → Equipe → Papéis). Com papel, os módulos e a agenda vêm dele. null tira o papel.

  • caixaslista de uuidopcional

    WhatsApps que a pessoa vê. Lista vazia = todos.

    • até 200 itens
  • moduloslista de "conversas" | "contatos" | "automacoes" | "agentes" | "funil" | "agenda" | "followup" | "relatorios"opcional

    Módulos liberados. Só sem papel de acesso.

    • até 8 itens
  • agenda"todas" | "propria"opcional

    Agenda: todas ou só a própria. Só sem papel de acesso.

Resposta#

200 com {"dados": ...}: Membro.

  • iduuidopcional
    —
  • nomestringopcional
    —
  • emailstringopcional
    —
  • avatar_urlstringopcional
    —
  • papel"dono" | "gestor" | "atendente"opcional
    —
  • papel_de_acesso_iduuidopcional
    —
  • permissoesobjectopcional
    —
  • permissoes.caixaslista de uuidopcional

    WhatsApps visíveis. Vazio = todos.

  • permissoes.moduloslista de stringopcional

    Módulos liberados. Vazio = todos.

  • permissoes.agenda"todas" | "propria"opcional
    —
  • equipeslista de uuidopcional
    —
  • disponivelbooleanopcional
    —
  • disponivel_agorabooleanopcional
    —
  • ausente_atedata e hora ISO 8601opcional
    —
  • horarioobjeto livreopcional

    {"dias": [1,2,3,4,5], "inicio": "08:00", "fim": "18:00"} (0 = domingo).

  • ultimo_acessodata e hora ISO 8601opcional
    —
  • entrou_emdata e hora ISO 8601opcional
    —

Erros#

Todo erro vem como {"erro": {"codigo", "mensagem"}}. Trate pelo codigo: ele não muda.

Status de erro desta operação
StatusQuando
401Chave ausente ou inválida (resposta igual para qualquer motivo).
403Plano sem API, escopo insuficiente ou https/origem recusados.
404Não existe nesta organização.
409Conflito (repetido, Idempotency-Key com outro corpo).
422Dados inválidos ou regra de negócio (ex.: janela_fechada; conta_restrita = a Meta restringiu a conta por spam: erro traz os campos de RestricaoMeta, como ate, escopo, motivo e retry_after_s).
429Limite de requisições. Veja Retry-After.
Códigos de erro que esta área pode devolver12
  • sem_permissaoA chave de API não pode fazer isso. Veja o motivo em "detalhe".
  • ja_e_membroEsse e-mail já é de alguém da equipe.
  • limite_de_acessosO plano chegou ao limite de acessos (pessoas + convites abertos). Remova alguém ou cancele um convite.
  • limite_de_convitesLimite de convites: 20 por dia por organização e 3 por dia para o mesmo e-mail. Tente amanhã.
  • membro_inexistentePessoa não encontrada nesta organização (veja GET /equipe/membros).
  • convite_inexistenteConvite não encontrado, já aceito ou vencido (veja GET /equipe/convites).
  • equipe_inexistenteEquipe não encontrada (veja GET /equipe/equipes).
  • equipe_repetidaJá existe uma equipe com esse nome.
  • papel_inexistentePapel de acesso não encontrado nesta organização.
  • modulos_do_papelCom papel de acesso, os módulos e a agenda vêm do papel. Mande papel_de_acesso_id: null para escolher à mão.
  • modulo_invalidoMódulo inválido. Use conversas, contatos, automacoes, agentes, funil, agenda, followup ou relatorios.
  • conversa_inexistenteConversa não encontrada.

Os erros que valem para qualquer rota (chave, limite, JSON) estão em Erros.