[ Documentação ]

Emojis, identidade, presença e integração do bot com a AZ Solutions.

URL base

https://azsolutions.app.br

API AZ v1 · Emojis, descrição e status

GET /api/public/az/v1/bot?bot_id=<UUID_DO_BOT>

Usa a mesma autenticação Bot descrita abaixo. Retorna referências compartilhadas pela equipe para todos os bots AZ e emojis privados do dono para a aplicação correspondente, com ID, nome, indicador de animação e referência pronta para mensagens. Arquivos sem ID do Discord não são retornados. Nenhum arquivo privado, ID do dono ou token é exposto.

ParâmetroTipoDescrição
bot_idUUID · obrigatórioBot cadastrado na AZ Solutions.
limitinteger · opcional1 a 100 emojis por página; padrão 100.
afterUUID · opcionalUse next_cursor da página anterior; null indica a última página.

bot contém nome, descrição, status de operação armazenado, updated_at e last_activity_at. presence contém as opções de presença já salvas, ou um objeto vazio quando não existem. O status de operação não é a presença do Discord nem uma garantia de que o bot esteja conectado neste instante.

// No processo do bot, com variáveis de ambiente — nunca no navegador.
const url = new URL("/api/public/az/v1/bot", process.env.AZ_BASE_URL);
url.searchParams.set("bot_id", process.env.AZ_BOT_ID);
const response = await fetch(url, {
  headers: { Authorization: `Bot ${process.env.BOT_TOKEN}` },
});
const data = await response.json();
if (!response.ok) throw new Error(data.error);
const emoji = data.emojis.find(item => item.name === "az_suporte");
// Em uma resposta do seu bot: emoji?.reference ?? ""
// Para botões: { id: emoji.id, name: emoji.name, animated: emoji.animated }

A API consulta dados: não cadastra emojis na aplicação nem altera a descrição ou presença automaticamente no Discord. A biblioteca compartilhada não garante permissão no Discord: alguns usos exigem cadastro na própria aplicação. Guarde o resultado em cache, siga next_cursor e não consulte em cada mensagem. Em erro 401, interrompa as consultas até corrigir o token; em falhas temporárias, aguarde antes de tentar novamente.

ParâmetroTipoDescrição
200ok: truebot, presence, emojis, next_cursor e api_version.
400invalid_queryUUID, cursor ou limite inválido.
401unauthorizedBot ou token inválido.
500read_failed / server_errorConsulta indisponível; nenhum dado parcial é retornado.

API AZ v1 · Download de emojis

GET /api/public/az/v1/emojis?bot_id=<UUID_DO_BOT>

Mesma autenticação Bot. Retorna a biblioteca compartilhada (até 2000 itens), sem nomes repetidos — sem diferenciar maiúsculas, vence o atualizado mais recentemente — em ordem alfabética. Cada item traz uma URL assinada válida por 1 hora; baixe e guarde a imagem no bot. Itens sem imagem disponível são omitidos.

ParâmetroTipoDescrição
bot_idUUID · obrigatórioBot cadastrado na AZ Solutions.
ParâmetroTipoDescrição
namestringNome cadastrado, ex.: Chroma_Luger.
keystringNome sem acentos, minúsculo, só a-z0-9, ex.: chromaluger.
categorystringgeral (todas as mensagens), admins (painel de administração, sobrepõe geral) ou mm2 (itens de Murder Mystery 2).
animatedbooleanGIF animado.
image_urlstringURL assinada, expira em 1 hora.
updated_atstringÚltima alteração do emoji.
{"ok":true,"api_version":"1","version":"<maior updated_at>","count":1,
 "emojis":[{"name":"Chroma_Luger","key":"chromaluger","category":"mm2",
   "animated":false,"image_url":"https://...","updated_at":"..."}]}

Compare version com a última baixada para só atualizar quando houver mudança. Respostas com Cache-Control no-store.

ParâmetroTipoDescrição
400invalid_querybot_id ausente ou inválido.
401unauthorizedBot ou token inválido.
500read_failedConsulta indisponível.

API AZ v1 · Painel do servidor

GET  /api/public/az/v1/guild-config?bot_id=<UUID_DO_BOT>
POST /api/public/az/v1/guild-config

Mesma autenticação Bot. O GET devolve só as mudanças salvas no site que o bot ainda não aplicou: {"guilds":[{"guild_id","revision","values"}]}. O bot aplica com a mesma validação do /painel e responde no POST com o estado de cada servidor vinculado. Quando applied_revision alcança revision, as pendências são limpas. Os campos aceitos vêm de site_config.json na raiz da source ativa; segredos (tokens de pagamento) nunca entram.

ParâmetroTipoDescrição
guild_idstringServidor vinculado ao bot; outros são ignorados.
applied_revisionintegerÚltima revisão aplicada.
valuesobjectValores atuais (texto, número ou booleano).
errorsobjectChave → motivo de cada valor recusado.
channels / rolesarrayNome e ID dos canais e cargos, para os seletores do site.

API AZ v1 · Vendas e transcrições

POST /api/public/az/v1/sales
POST /api/public/az/v1/transcripts   (multipart/form-data)

sales recebe {"bot_id","guilds":[{"guild_id","data"}]} com totais de 24 h, 7 e 30 dias, Pix pendentes, pedidos a entregar, clientes, vendas por dia e mais vendidos. transcripts recebe bot_id, meta (JSON com servidor, canal, quem abriu e fechou, motivo e nº de mensagens), transcript (HTML até 6 MB) e até 12 campos image (PNG, JPEG, GIF ou WebP até 4 MB). No HTML, az-img://NOME aponta para a imagem enviada com esse nome; o site troca por um link assinado ao abrir. Tudo fica em armazenamento privado, visível só para o dono e a equipe.

ParâmetroTipoDescrição
200ok: trueSalvo (sales devolve saved; transcripts devolve id).
400invalid_bodyCampos ausentes, arquivo grande demais ou tipo não aceito.
401unauthorizedBot ou token inválido.

Autenticação

Todos os endpoints exigem o header Authorization: Bot <TOKEN_DO_BOT>. Use o token Discord do próprio bot cadastrado, correspondente ao bot_id. Não use uma sessão de usuário, chave de hospedagem ou chave de pagamento.

Authorization: Bot <TOKEN_DO_BOT>
Content-Type: application/json

Os valores entre < > são marcadores, não credenciais. Mantenha o token apenas no ambiente do bot: nunca em código público, navegador, logs ou mensagens. Os exemplos abaixo não executam pedidos nem exibem tokens.

Configurações

GET /api/public/bots/config?bot_id=<UUID_DO_BOT>

Consulta as configurações atuais e os slash commands habilitados. O parâmetro é enviado na URL; não há corpo.

ParâmetroTipoDescrição
bot_idstring · obrigatórioUUID do bot cadastrado, enviado como parâmetro de consulta.
curl "$AZ_BASE_URL/api/public/bots/config?bot_id=$AZ_BOT_ID" \
  -H "Authorization: Bot $BOT_TOKEN"

Resposta JSON: ok, owner_id, revision, revision_source, updated_at, settings e commands. As configurações incluem general, presence, moderation, tickets e automation. Cada comando contém nome, descrição, resposta, estado habilitado, resposta privada, cooldown e permissão. Nenhum token é retornado.

Sincronização

POST /api/public/bots/sync

Envie JSON com uma das duas ações abaixo.

ParâmetroTipoDescrição
bot_idstring · obrigatórioUUID do bot cadastrado na AZ Solutions.
actionstring · obrigatório"heartbeat" ou "configure".

heartbeat — servidores conectados

ParâmetroTipoDescrição
guildsarray · obrigatórioAté 500 servidores. Envie a lista completa; servidores omitidos ficam inativos. Uma lista vazia desativa todos.
guilds[].guild_idstring · obrigatórioID Discord com 17 a 20 dígitos.
guilds[].guild_namestring · obrigatórioNome com até 100 caracteres, removendo espaços nas extremidades.
guilds[].member_countinteger · obrigatórioQuantidade de membros, de 0 a 10.000.000.
{
  "bot_id": "<UUID_DO_BOT>",
  "action": "heartbeat",
  "guilds": [
    { "guild_id": "<ID_DISCORD>", "guild_name": "<NOME_DO_SERVIDOR>", "member_count": 0 }
  ]
}

configure — alteração pelo Discord

ParâmetroTipoDescrição
guild_idstring · obrigatórioID Discord com 17 a 20 dígitos; servidor ativo vinculado ao bot.
actor_idstring · obrigatórioID Discord de quem alterou, com 17 a 20 dígitos.
actor_is_adminboolean · obrigatórioO bot deve verificar a permissão Administrator no Discord antes de enviar. O endpoint aceita o Owner cadastrado ou este indicador verdadeiro.
sectionstring · obrigatóriopresence, moderation, tickets ou automation.
keystring · obrigatórioCampo permitido da seção; somente letras minúsculas e sublinhado, até 60 caracteres.
valuestring | boolean | number · obrigatórioTexto até 1.000 caracteres, booleano ou número entre 0 e 99.999.

O indicador de administrador é informado pelo bot autenticado, não verificado novamente junto ao Discord por este endpoint.

{
  "bot_id": "<UUID_DO_BOT>",
  "action": "configure",
  "guild_id": "<ID_DISCORD>",
  "actor_id": "<ID_DISCORD_DO_USUARIO>",
  "actor_is_admin": false,
  "section": "presence",
  "key": "activity_text",
  "value": "AZ Solutions"
}

Campos permitidos por seção

  • presence: status, activity_enabled, activity_type, activity_text.
  • moderation: anti_spam, anti_link, anti_flood, anti_raid, anti_mention, warn_enabled, mute_enabled, kick_enabled, ban_enabled, log_channel.
  • tickets: enabled, panel_channel, transcript, auto_close_hours, open_message, close_message.
  • automation: welcome_enabled, welcome_message, leave_enabled, leave_message.

Uma alteração salva atualiza a revisão de configuração e registra a ação na auditoria.

Métricas

POST /api/public/bots/metrics

Envia uma leitura real do desempenho do bot em JSON e atualiza sua última atividade.

ParâmetroTipoDescrição
bot_idstring · obrigatórioUUID do bot cadastrado.
cpunumber · obrigatórioUso de CPU em porcentagem, de 0 a 100.
memory_mbnumber · obrigatórioMemória em MB, de 0 a 1.000.000.
latency_msinteger · obrigatórioLatência em ms, de 0 a 600.000.
guildsinteger · opcionalQuantidade de servidores, ≥ 0. Padrão: 0.
usersinteger · opcionalQuantidade de usuários, ≥ 0. Padrão: 0.
eventsinteger · opcionalQuantidade de eventos, ≥ 0. Padrão: 0.
errorsinteger · opcionalQuantidade de erros, ≥ 0. Padrão: 0.
{
  "bot_id": "<UUID_DO_BOT>",
  "cpu": 0,
  "memory_mb": 0,
  "latency_ms": 0,
  "guilds": 0,
  "users": 0,
  "events": 0,
  "errors": 0
}

Os zeros são apenas exemplos de formato. Substitua pelas leituras do bot.

curl -X POST "$AZ_BASE_URL/api/public/bots/metrics" \
  -H "Authorization: Bot $BOT_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @metrics.json

Respostas e erros

Sincronização e métricas respondem { "ok": true } em caso de sucesso. Os erros tratados têm { "ok": false, "error": "codigo" }.

ParâmetroTipoDescrição
200SucessoConsulta retornada ou envio aceito.
400invalid_payloadJSON ou parâmetros do corpo inválidos (sync e metrics).
400unsupported_settingCampo não permitido na seção (sync).
401unauthorizedToken ausente/incorreto ou bot não reconhecido.
403forbiddenAutor não é o Owner e não foi indicado como administrador (sync).
403guild_not_linkedServidor não está ativo e vinculado ao bot (sync).
500sync_failed / save_failedFalha ao salvar sincronização ou configuração (sync).
500server_errorFalha ao salvar a leitura (metrics).

A ordem das verificações varia: JSON inválido pode retornar 400 antes da autenticação. Falhas inesperadas podem retornar 500 sem o formato JSON acima. Não há limite de frequência ou paginação declarado nesses três endpoints.