Axuz Developers

Conceitos da API

Mapa de conceitos para quem integra a API da Axuz, com hierarquia de domínio, ids, teamId no path, multi-tenant, hosts por serviço, versão /v1 e o que é público ou interno.

Antes de chamar a API, vale entender como o domínio da Axuz é organizado e como as rotas refletem essa organização.

Hierarquia de domínio

company → team (workspace) → project (opcional) → channel | timeline | board de tarefas | wiki | file
ConceitoO que éObservação para integradores
companyOrganização que agrupa teamspapéis de company têm precedência sobre os de team
team (workspace)Unidade de tenancy; quase toda rota começa em /teams/{teamId}/...é o limite de isolamento dos dados
projectCamada opcional entre team e conteúdorecursos aceitam project_id nulo (“sem projeto”)
channelContainer de conversa, tarefas, arquivos e wiki de um projeto/equipena UI chama-se Channel; no banco e em alguns nomes de campo é timeline
timelineFeed social do workspace (posts ricos)na API, feeds e feed_posts; não confunda com o channel
boardQuadro de tarefas (Kanban, lista, Gantt, calendário sobre o mesmo dado)ids de board aparecem em /teams/{teamId}/boards/{id}

Identificadores

Ids de recurso são UUID. Os parâmetros de path ({teamId}, {id}, {shareId}…) são validados como UUID e um valor malformado costuma resultar em 400. Datas são timestamptz em RFC 3339. Listagens grandes usam paginação por cursor (nunca OFFSET). E-mail e telefone não são identificadores de usuário; use sempre o id.

teamId no path e multi-tenant

A API é multi-tenant sobre um banco compartilhado. Toda tabela de domínio carrega team_id e toda consulta é escopada por ele. Consequências práticas:

  • o teamId vem do path e é conferido contra a sua membership; nunca é aceito do corpo da requisição;
  • ser membro de outro team não dá acesso: o recurso responde 404, não 403, para não confirmar a existência do id;
  • a ordem de checagem é: sessão (401) → membership (403) → recurso (404) → papel/escopo (403) → validação (400/422);
  • dentro do team, o acesso é resolvido do mais estreito para o mais amplo: papel de company, papel de team, escopo de project e escopo de channel.

Hosts por serviço

Cada serviço tem seu host: https://<subdomínio>.<domínio>, onde o domínio é axuz.net (staging) ou axuz.club (produção). Os servidores da especificação usam esse padrão (https://api.{domain}, etc.).

Host da APIServiçoInterface de produto correspondente
apiBackend principal: workspace, tarefas, busca, notificações, integraçõesworkspace, hub, app
auth-apiLogin, registro, sessões, OAuthauth (login), admin, backoffice
api-workspaceTarefas, notas, feeds, timelines, wiki, board públicoworkspace
api-billingAssinaturas, faturas, contas a pagar/receberfinancer
api-calendarEventos, recorrência, convitescalendar
api-flowFluxogramas, versões, compartilhamentoflow
api-formsFormulários e respostasforms
files-apiArquivos e links de compartilhamentodrive
mail-apiE-mail (SMTP/IMAP)mail
meet-apiSalas de reuniãomeet
messaging-apiWeb Push e entrega de mensagens(sem UI própria)

Cada operação da referência indica o servidor correto; chamar o host errado resulta em 404. As rotas de um mesmo recurso podem viver em hosts diferentes durante a extração gradual de serviços: sempre use o servidor listado na operação.

Versões e /v1

A especificação documenta os paths sem prefixo. Os serviços workspace, forms e flow também montam as mesmas rotas sob /v1 (espelho), e há rotas explicitamente em /v1 no backend principal, como /v1/integration-scopes. Não há ainda política publicada de versões paralelas (v2); mudanças incompatíveis serão anunciadas em Releases. Prefira o path como está na referência.

Autenticação, em uma linha

Sessão (cookie HTTP-only ou Authorization: Bearer), token pessoal axp_, token de integração axz_bot_ e OAuth 2.1. Detalhes em Autenticação. Cada operação da referência tem uma classe de acesso: public, public-signed (token na URL), authenticated, team-member, team-admin, permission e scope.

O que é público e o que é interno

  • Pública: tudo o que está na referência. É o contrato que mantemos.
  • Rotas /platform/* (operação da plataforma, backoffice) não são API pública: exigem papéis de plataforma e não estão na especificação.
  • Rotas /internal/* servem a comunicação entre serviços (autenticadas por chave interna) e não são API pública; podem mudar ou sumir sem aviso. Não as chame.
  • Rotas sem login existem de propósito (links públicos, formulários, salas de visitante). Veja Área pública e assignees externos.

Erros e formato

Os serviços respondem erro em JSON {"error": "<mensagem>"}; alguns acrescentam campos (fields em validação, retry_after em 429). Espere 429 com Retry-After nas rotas com limite de taxa e respeite-o.

Atualizado em