tRPC type-safe API
Voor TypeScript-projecten kun je rechtstreeks onze AppRouter-types importeren en compile-time gevalideerde calls maken. Geen handgeschreven types, geen OpenAPI-generators.
Installeren
pnpm add @pitchfire/types @trpc/client superjson
Client opzetten
import { createTRPCClient, httpBatchLink } from '@trpc/client';
import superjson from 'superjson';
import type { AppRouter } from '@pitchfire/types';
export const pitchfire = createTRPCClient<AppRouter>({
links: [
httpBatchLink({
url: `https://${SLUG}.pitchfire.app/api/trpc`,
transformer: superjson,
headers: () => ({
authorization: `Bearer ${process.env.PITCHFIRE_TOKEN}`,
}),
}),
],
});Gebruik
// Volledig type-safe, Cmd+Click een procedure-naam voor de definitie
const { campaigns, pagination } = await pitchfire.campaign.list.query({
status: 'ACTIVE',
pageSize: 50,
});
const newCampaign = await pitchfire.campaign.create.mutate({
name: 'Spring promo',
status: 'PLANNED',
budgetCents: 250000,
budgetCurrency: 'EUR',
});
const suggestions = await pitchfire.ai.suggestions.query({
status: 'PENDING',
priority: 'HIGH',
});Beschikbare routers
Alle 19 routers met hun procedure-namen:
workspace: list, current, switch, create, update, archiveteam: list, invite, remove, updateRolesettings: tenant, updateTenant, updateCustomDomain, updateBrandingcampaign: list, byId, create, update, archive, duplicateasset: list, byId, create, update, deletepillarPage: list, byId, create, update, deletelinkedinPost: list, calendar, byId, create, update, deletemediaAsset: list, byId, create, update, deleteautomation: list, byId, create, update, toggleActive, deleteleadScoring: list, create, update, deletesalesAsset: list, create, update, deleteevent: list, upcoming, create, update, deleteadvertising: connections, campaigns, totals, spendTimeline, campaignByIdadCreative: list, byId, create, update, approve, deleteai: suggestions, applySuggestion, dismiss, snooze, injectdashboard: overview, spendByPlatform, campaignActivitycomment: list, create, deleteactivity: listbilling: details, updateDetails, invoices, invoice
Voor elke procedure: .query() (lezen) of .mutate() (schrijven). Inputs en outputs zijn volledig getypeerd via Zod schemas in onze codebase.
Real-time updates
Voor live data (zoals advertising metrics) abonneer je op websocket-updates via Pusher-compatible kanalen, zie Webhooks.