Guia rápido
Este guia segue o fluxo recomendado para usar o Meaple SDK em 4 etapas simples.
Instalação
Instale os pacotes que você vai usar:
# Pacotes essenciais (Core + tipos)
bun add @meaple-com/core @meaple-com/types
# Para React (opcional): hooks e/ou componentes headless
bun add @meaple-com/react-query @meaple-com/react-headless-components
bun add @tanstack/react-queryCriar a instância
Crie uma instância do SDK com o ID do seu canal (publicKey) e a URL base da API:
// lib/meaple.ts
import { MeapleSDK } from '@meaple-com/core';
export const sdk = new MeapleSDK({
publicKey: 'cml9fi1xh00003b6qo2sqzeeh', // ID do canal (painel meaple.com.br)
baseURL: 'https://api.meaple.app', // URL base da API
});📋 Onde obter as credenciais
publicKey: ID do canal, obtido no painel em meaple.com.br . É o mesmoclient_idusado no OAuth2.baseURL: Para desenvolvimento usehttps://api.meaple.app. Usehttps://api.meaple.com.brem produção.- Variáveis de ambiente: em Next.js, use
NEXT_PUBLIC_*para client-side; useMEAPLE_*(sem prefixo) para server-side.
Usando React Query ou Headless Components
Se você usa @meaple-com/react-query ou @meaple-com/react-headless-components, configure o Provider no layout (ou componente raiz):
// app/layout.tsx ou pages/_app.tsx
import { MeapleSDKProvider } from '@meaple-com/react-query';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { sdk } from '@/lib/meaple';
const queryClient = new QueryClient();
export default function RootLayout({ children }) {
return (
<QueryClientProvider client={queryClient}>
<MeapleSDKProvider sdk={sdk}>
{children}
</MeapleSDKProvider>
</QueryClientProvider>
);
}Como os pacotes se relacionam
Somente o Core (@meaple-com/core) faz chamadas HTTP para a API. Os demais
pacotes trabalham em cima dele:
- React Query — hooks (como
useEventseuseCreateOrder) que recebem o SDK viaMeapleSDKProvidere chamam internamente os métodos do Core. - Headless Components — componentes (como
ListEventseCart) que usam os hooks do React Query e, em alguns casos, o Core diretamente.
Em resumo: Headless → React Query → Core (ou às vezes, Headless → Core).
Consumir as APIs
O canal é identificado pelo header X-Channel-Id (configurado no SDK). Você não precisa passar channelId nas chamadas.
Core (server ou client)
// Listar eventos (priority: 0 é necessário para retornar resultados)
const { events } = await sdk.events.find({ priority: 0, limit: 20 });
// Evento por slug
const event = await sdk.events.getBySlug('event-slug');
// Categorias (retorna array)
const categories = await sdk.categories.find();
// Ingressos de um evento
const { tickets, groups } = await sdk.events.getTickets(eventId);No React
Se você usa React Query ou Headless Components, os exemplos concretos (listar eventos, carrinho, cupom, etc.) estão nas páginas React Query e Headless Components.
Autenticação (quando necessário)
Muitas rotas são públicas e não exigem login. Para perfil, pedidos e ingressos do usuário, é preciso autenticar.
O Meaple usa OAuth 2.0 com PKCE. Depois de concluir o fluxo de login e obter o access_token, configure-o na instância:
sdk.setGlobalToken('seu_access_token');
// A partir daqui você pode chamar rotas autenticadas
const user = await sdk.users.getMe();
const orders = await sdk.users.getOrders();Com token (rotas autenticadas)
Após sdk.setGlobalToken('...'):
const user = await sdk.users.getMe();
const orders = await sdk.users.getOrders({ status: 'PAID' });
const events = await sdk.users.getEvents();📖 Guia completo de autenticação
Para implementar o fluxo OAuth2 (autorização, troca de código por token, refresh e integração com better-auth), veja Autenticação.
Próximos passos
- Core SDK — Recursos, parâmetros e retornos
- React Query — Hooks disponíveis
- Headless Components — Componentes headless
- Autenticação — OAuth2 com PKCE e better-auth