URL base
https://azsolutions.app.brAPI 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âmetro | Tipo | Descrição |
|---|---|---|
| bot_id | UUID · obrigatório | Bot cadastrado na AZ Solutions. |
| limit | integer · opcional | 1 a 100 emojis por página; padrão 100. |
| after | UUID · opcional | Use 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âmetro | Tipo | Descrição |
|---|---|---|
| 200 | ok: true | bot, presence, emojis, next_cursor e api_version. |
| 400 | invalid_query | UUID, cursor ou limite inválido. |
| 401 | unauthorized | Bot ou token inválido. |
| 500 | read_failed / server_error | Consulta 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âmetro | Tipo | Descrição |
|---|---|---|
| bot_id | UUID · obrigatório | Bot cadastrado na AZ Solutions. |
| Parâmetro | Tipo | Descrição |
|---|---|---|
| name | string | Nome cadastrado, ex.: Chroma_Luger. |
| key | string | Nome sem acentos, minúsculo, só a-z0-9, ex.: chromaluger. |
| category | string | geral (todas as mensagens), admins (painel de administração, sobrepõe geral) ou mm2 (itens de Murder Mystery 2). |
| animated | boolean | GIF animado. |
| image_url | string | URL assinada, expira em 1 hora. |
| updated_at | string | Ú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âmetro | Tipo | Descrição |
|---|---|---|
| 400 | invalid_query | bot_id ausente ou inválido. |
| 401 | unauthorized | Bot ou token inválido. |
| 500 | read_failed | Consulta 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-configMesma 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âmetro | Tipo | Descrição |
|---|---|---|
| guild_id | string | Servidor vinculado ao bot; outros são ignorados. |
| applied_revision | integer | Última revisão aplicada. |
| values | object | Valores atuais (texto, número ou booleano). |
| errors | object | Chave → motivo de cada valor recusado. |
| channels / roles | array | Nome 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âmetro | Tipo | Descrição |
|---|---|---|
| 200 | ok: true | Salvo (sales devolve saved; transcripts devolve id). |
| 400 | invalid_body | Campos ausentes, arquivo grande demais ou tipo não aceito. |
| 401 | unauthorized | Bot 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/jsonOs 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âmetro | Tipo | Descrição |
|---|---|---|
| bot_id | string · obrigatório | UUID 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/syncEnvie JSON com uma das duas ações abaixo.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| bot_id | string · obrigatório | UUID do bot cadastrado na AZ Solutions. |
| action | string · obrigatório | "heartbeat" ou "configure". |
heartbeat — servidores conectados
| Parâmetro | Tipo | Descrição |
|---|---|---|
| guilds | array · obrigatório | Até 500 servidores. Envie a lista completa; servidores omitidos ficam inativos. Uma lista vazia desativa todos. |
| guilds[].guild_id | string · obrigatório | ID Discord com 17 a 20 dígitos. |
| guilds[].guild_name | string · obrigatório | Nome com até 100 caracteres, removendo espaços nas extremidades. |
| guilds[].member_count | integer · obrigatório | Quantidade 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âmetro | Tipo | Descrição |
|---|---|---|
| guild_id | string · obrigatório | ID Discord com 17 a 20 dígitos; servidor ativo vinculado ao bot. |
| actor_id | string · obrigatório | ID Discord de quem alterou, com 17 a 20 dígitos. |
| actor_is_admin | boolean · obrigatório | O bot deve verificar a permissão Administrator no Discord antes de enviar. O endpoint aceita o Owner cadastrado ou este indicador verdadeiro. |
| section | string · obrigatório | presence, moderation, tickets ou automation. |
| key | string · obrigatório | Campo permitido da seção; somente letras minúsculas e sublinhado, até 60 caracteres. |
| value | string | boolean | number · obrigatório | Texto 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/metricsEnvia uma leitura real do desempenho do bot em JSON e atualiza sua última atividade.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| bot_id | string · obrigatório | UUID do bot cadastrado. |
| cpu | number · obrigatório | Uso de CPU em porcentagem, de 0 a 100. |
| memory_mb | number · obrigatório | Memória em MB, de 0 a 1.000.000. |
| latency_ms | integer · obrigatório | Latência em ms, de 0 a 600.000. |
| guilds | integer · opcional | Quantidade de servidores, ≥ 0. Padrão: 0. |
| users | integer · opcional | Quantidade de usuários, ≥ 0. Padrão: 0. |
| events | integer · opcional | Quantidade de eventos, ≥ 0. Padrão: 0. |
| errors | integer · opcional | Quantidade 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.jsonRespostas e erros
Sincronização e métricas respondem { "ok": true } em caso de sucesso. Os erros tratados têm { "ok": false, "error": "codigo" }.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| 200 | Sucesso | Consulta retornada ou envio aceito. |
| 400 | invalid_payload | JSON ou parâmetros do corpo inválidos (sync e metrics). |
| 400 | unsupported_setting | Campo não permitido na seção (sync). |
| 401 | unauthorized | Token ausente/incorreto ou bot não reconhecido. |
| 403 | forbidden | Autor não é o Owner e não foi indicado como administrador (sync). |
| 403 | guild_not_linked | Servidor não está ativo e vinculado ao bot (sync). |
| 500 | sync_failed / save_failed | Falha ao salvar sincronização ou configuração (sync). |
| 500 | server_error | Falha 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.